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..fa5c9b7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,38 @@
+**/bin/
+**/target/
+**._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 8919567..fd38c68 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -25,7 +25,6 @@
                 <jenkins.build.dependency>org.eclipse.osbp.preferences</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
-                <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.utils.ui</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.action</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.addons</jenkins.build.dependency>
@@ -38,6 +37,7 @@
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.message</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.organization</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.oxtype</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.report</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.table</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.topology</jenkins.build.dependency>
diff --git a/org.eclipse.osbp.xtext.perspective.feature/.gitignore b/org.eclipse.osbp.xtext.perspective.feature/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.feature/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.xtext.perspective.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.perspective.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.perspective.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.perspective.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..c0460c2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,12 @@
+//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.directory=xtend-gen
+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.perspective.feature/feature.xml b/org.eclipse.osbp.xtext.perspective.feature/feature.xml
index 45884ce..d292303 100644
--- a/org.eclipse.osbp.xtext.perspective.feature/feature.xml
+++ b/org.eclipse.osbp.xtext.perspective.feature/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.xtext.perspective.feature"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.xtext.perspective">
         
     <description>
         %description
@@ -43,6 +44,13 @@
         unpack="false"/>
         
     <plugin
+        id="org.eclipse.osbp.xtext.perspective.ide"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
         id="org.eclipse.osbp.xtext.perspective.ui"
         download-size="0"
         install-size="0"
diff --git a/org.eclipse.osbp.xtext.perspective.feature/pom.xml b/org.eclipse.osbp.xtext.perspective.feature/pom.xml
index a24ced3..45e9da3 100644
--- a/org.eclipse.osbp.xtext.perspective.feature/pom.xml
+++ b/org.eclipse.osbp.xtext.perspective.feature/pom.xml
@@ -87,6 +87,12 @@
 			<artifactId>vaadin-shared-deps</artifactId>
 			<version>1.0.2</version>
 		</dependency>
-	</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.perspective.ide/.classpath b/org.eclipse.osbp.xtext.perspective.ide/.classpath
new file mode 100644
index 0000000..5903347
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ide/.project b/org.eclipse.osbp.xtext.perspective.ide/.project
new file mode 100644
index 0000000..9bb47fc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.perspective.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.perspective.ide/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.perspective.ide/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ide/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.perspective.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ide/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.perspective.ide/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ide/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.perspective.ide/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..5da8aa3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ide/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.perspective.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ed14509
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.perspective.ide
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.perspective.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.perspective;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.xtext.perspective.ide,
+ org.eclipse.osbp.xtext.perspective.ide.contentassist.antlr,
+ org.eclipse.osbp.xtext.perspective.ide.contentassist.antlr.internal
+
diff --git a/org.eclipse.osbp.xtext.perspective.ide/build.properties b/org.eclipse.osbp.xtext.perspective.ide/build.properties
new file mode 100644
index 0000000..6ef1a59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ide/pom.xml b/org.eclipse.osbp.xtext.perspective.ide/pom.xml
new file mode 100644
index 0000000..c2534cd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective</groupId>
+        <artifactId>org.eclipse.osbp.xtext.perspective.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <artifactId>org.eclipse.osbp.xtext.perspective.ide</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.perspective.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup b/org.eclipse.osbp.xtext.perspective.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
new file mode 100644
index 0000000..1ed5e79
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
@@ -0,0 +1 @@
+org.eclipse.osbp.xtext.perspective.ide.PerspectiveDslIdeSetup
diff --git a/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/AbstractPerspectiveDslIdeModule.java b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/AbstractPerspectiveDslIdeModule.java
new file mode 100644
index 0000000..dca923b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/AbstractPerspectiveDslIdeModule.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.perspective.ide;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+import org.eclipse.osbp.xtext.perspective.ide.contentassist.antlr.PerspectiveDslParser;
+import org.eclipse.osbp.xtext.perspective.ide.contentassist.antlr.internal.InternalPerspectiveDslLexer;
+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 PerspectiveDslIdeModule}.
+ */
+@SuppressWarnings("all")
+public abstract class AbstractPerspectiveDslIdeModule 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(InternalPerspectiveDslLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
+		return PerspectiveDslParser.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.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PartialPerspectiveDslContentAssistParser.java b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PartialPerspectiveDslContentAssistParser.java
new file mode 100644
index 0000000..b03b967
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PartialPerspectiveDslContentAssistParser.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.perspective.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 PartialPerspectiveDslContentAssistParser extends PerspectiveDslParser 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.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PerspectiveDslParser.java b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PerspectiveDslParser.java
new file mode 100644
index 0000000..99a4998
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/PerspectiveDslParser.java
@@ -0,0 +1,558 @@
+/**
+ *                                                                            
+ *  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.perspective.ide.contentassist.antlr;
+
+import com.google.inject.Inject;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.osbp.xtext.perspective.ide.contentassist.antlr.internal.InternalPerspectiveDslParser;
+import org.eclipse.osbp.xtext.perspective.services.PerspectiveDslGrammarAccess;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser;
+
+public class PerspectiveDslParser extends AbstractContentAssistParser {
+
+	@Inject
+	private PerspectiveDslGrammarAccess grammarAccess;
+
+	private Map<AbstractElement, String> nameMappings;
+
+	@Override
+	protected InternalPerspectiveDslParser createParser() {
+		InternalPerspectiveDslParser result = new InternalPerspectiveDslParser(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.getPerspectiveElementAccess().getAlternatives(), "rule__PerspectiveElement__Alternatives");
+					put(grammarAccess.getPerspectiveViewAccess().getAlternatives(), "rule__PerspectiveView__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.getSashOrientationAccess().getAlternatives(), "rule__SashOrientation__Alternatives");
+					put(grammarAccess.getPerspectiveModelAccess().getGroup(), "rule__PerspectiveModel__Group__0");
+					put(grammarAccess.getPerspectivePackageAccess().getGroup(), "rule__PerspectivePackage__Group__0");
+					put(grammarAccess.getPerspectivePackageAccess().getGroup_3(), "rule__PerspectivePackage__Group_3__0");
+					put(grammarAccess.getPerspectiveAccess().getGroup(), "rule__Perspective__Group__0");
+					put(grammarAccess.getPerspectiveAccess().getGroup_3(), "rule__Perspective__Group_3__0");
+					put(grammarAccess.getPerspectiveAccess().getGroup_4(), "rule__Perspective__Group_4__0");
+					put(grammarAccess.getPerspectiveAccess().getGroup_5_0(), "rule__Perspective__Group_5_0__0");
+					put(grammarAccess.getPerspectiveAccess().getGroup_5_1(), "rule__Perspective__Group_5_1__0");
+					put(grammarAccess.getPerspectiveAccess().getGroup_5_2(), "rule__Perspective__Group_5_2__0");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getGroup(), "rule__PerspectiveSashContainer__Group__0");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0(), "rule__PerspectiveSashContainer__Group_3_0__0");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1(), "rule__PerspectiveSashContainer__Group_3_1__0");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2(), "rule__PerspectiveSashContainer__Group_3_2__0");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_3(), "rule__PerspectiveSashContainer__Group_3_3__0");
+					put(grammarAccess.getPerspectivePartStackAccess().getGroup(), "rule__PerspectivePartStack__Group__0");
+					put(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0(), "rule__PerspectivePartStack__Group_3_0__0");
+					put(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1(), "rule__PerspectivePartStack__Group_3_1__0");
+					put(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2(), "rule__PerspectivePartStack__Group_3_2__0");
+					put(grammarAccess.getPerspectivePartAccess().getGroup(), "rule__PerspectivePart__Group__0");
+					put(grammarAccess.getPerspectivePartAccess().getGroup_3_0(), "rule__PerspectivePart__Group_3_0__0");
+					put(grammarAccess.getPerspectivePartAccess().getGroup_3_1(), "rule__PerspectivePart__Group_3_1__0");
+					put(grammarAccess.getPerspectivePartAccess().getGroup_3_2(), "rule__PerspectivePart__Group_3_2__0");
+					put(grammarAccess.getPerspectivePartAccess().getGroup_3_3(), "rule__PerspectivePart__Group_3_3__0");
+					put(grammarAccess.getPerspectiveSelectionAccess().getGroup(), "rule__PerspectiveSelection__Group__0");
+					put(grammarAccess.getPerspectiveTableAccess().getGroup(), "rule__PerspectiveTable__Group__0");
+					put(grammarAccess.getPerspectiveGridAccess().getGroup(), "rule__PerspectiveGrid__Group__0");
+					put(grammarAccess.getPerspectiveBeanAccess().getGroup(), "rule__PerspectiveBean__Group__0");
+					put(grammarAccess.getPerspectiveChartAccess().getGroup(), "rule__PerspectiveChart__Group__0");
+					put(grammarAccess.getPerspectiveReportAccess().getGroup(), "rule__PerspectiveReport__Group__0");
+					put(grammarAccess.getPerspectiveOrganizationAccess().getGroup(), "rule__PerspectiveOrganization__Group__0");
+					put(grammarAccess.getPerspectiveTopologyAccess().getGroup(), "rule__PerspectiveTopology__Group__0");
+					put(grammarAccess.getPerspectiveDialogAccess().getGroup(), "rule__PerspectiveDialog__Group__0");
+					put(grammarAccess.getPerspectiveBPMNAccess().getGroup(), "rule__PerspectiveBPMN__Group__0");
+					put(grammarAccess.getPerspectiveKanbanAccess().getGroup(), "rule__PerspectiveKanban__Group__0");
+					put(grammarAccess.getPerspectiveWelcomeAccess().getGroup(), "rule__PerspectiveWelcome__Group__0");
+					put(grammarAccess.getPerspectiveSearchAccess().getGroup(), "rule__PerspectiveSearch__Group__0");
+					put(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0(), "rule__PerspectiveSearch__Group_4_0__0");
+					put(grammarAccess.getPerspectiveSearchAccess().getGroup_4_1(), "rule__PerspectiveSearch__Group_4_1__0");
+					put(grammarAccess.getPerspectiveDataInterchangeAccess().getGroup(), "rule__PerspectiveDataInterchange__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.getPerspectiveModelAccess().getImportSectionAssignment_0(), "rule__PerspectiveModel__ImportSectionAssignment_0");
+					put(grammarAccess.getPerspectiveModelAccess().getPackagesAssignment_1(), "rule__PerspectiveModel__PackagesAssignment_1");
+					put(grammarAccess.getPerspectivePackageAccess().getNameAssignment_2(), "rule__PerspectivePackage__NameAssignment_2");
+					put(grammarAccess.getPerspectivePackageAccess().getPerspectivesAssignment_3_1(), "rule__PerspectivePackage__PerspectivesAssignment_3_1");
+					put(grammarAccess.getPerspectiveAccess().getNameAssignment_2(), "rule__Perspective__NameAssignment_2");
+					put(grammarAccess.getPerspectiveAccess().getDescriptionAssignment_3_0(), "rule__Perspective__DescriptionAssignment_3_0");
+					put(grammarAccess.getPerspectiveAccess().getDescriptionValueAssignment_3_1(), "rule__Perspective__DescriptionValueAssignment_3_1");
+					put(grammarAccess.getPerspectiveAccess().getProcessAssignment_4_1(), "rule__Perspective__ProcessAssignment_4_1");
+					put(grammarAccess.getPerspectiveAccess().getUserTaskAssignment_4_3(), "rule__Perspective__UserTaskAssignment_4_3");
+					put(grammarAccess.getPerspectiveAccess().getIconURIAssignment_5_0_1(), "rule__Perspective__IconURIAssignment_5_0_1");
+					put(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseAssignment_5_1_1(), "rule__Perspective__AccessibilityPhraseAssignment_5_1_1");
+					put(grammarAccess.getPerspectiveAccess().getToolbarAssignment_5_2_1(), "rule__Perspective__ToolbarAssignment_5_2_1");
+					put(grammarAccess.getPerspectiveAccess().getElementsAssignment_7(), "rule__Perspective__ElementsAssignment_7");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getElementIdAssignment_2(), "rule__PerspectiveSashContainer__ElementIdAssignment_2");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getOrientationAssignment_3_0_1(), "rule__PerspectiveSashContainer__OrientationAssignment_3_0_1");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementAssignment_3_1_1(), "rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataAssignment_3_2_1(), "rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseAssignment_3_3_1(), "rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getElementsAssignment_5(), "rule__PerspectiveSashContainer__ElementsAssignment_5");
+					put(grammarAccess.getPerspectivePartStackAccess().getElementIdAssignment_2(), "rule__PerspectivePartStack__ElementIdAssignment_2");
+					put(grammarAccess.getPerspectivePartStackAccess().getSelectedElementAssignment_3_0_1(), "rule__PerspectivePartStack__SelectedElementAssignment_3_0_1");
+					put(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1(), "rule__PerspectivePartStack__ContainerDataAssignment_3_1_1");
+					put(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1(), "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1");
+					put(grammarAccess.getPerspectivePartStackAccess().getElementsAssignment_5(), "rule__PerspectivePartStack__ElementsAssignment_5");
+					put(grammarAccess.getPerspectivePartAccess().getElementIdAssignment_2(), "rule__PerspectivePart__ElementIdAssignment_2");
+					put(grammarAccess.getPerspectivePartAccess().getContainerDataAssignment_3_0_1(), "rule__PerspectivePart__ContainerDataAssignment_3_0_1");
+					put(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseAssignment_3_1_1(), "rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1");
+					put(grammarAccess.getPerspectivePartAccess().getIconURIAssignment_3_2_1(), "rule__PerspectivePart__IconURIAssignment_3_2_1");
+					put(grammarAccess.getPerspectivePartAccess().getViewAssignment_3_3_1(), "rule__PerspectivePart__ViewAssignment_3_3_1");
+					put(grammarAccess.getPerspectivePartAccess().getIsClosableAssignment_3_4(), "rule__PerspectivePart__IsClosableAssignment_3_4");
+					put(grammarAccess.getPerspectiveSelectionAccess().getRefAssignment_2(), "rule__PerspectiveSelection__RefAssignment_2");
+					put(grammarAccess.getPerspectiveTableAccess().getRefAssignment_2(), "rule__PerspectiveTable__RefAssignment_2");
+					put(grammarAccess.getPerspectiveGridAccess().getRefAssignment_2(), "rule__PerspectiveGrid__RefAssignment_2");
+					put(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2(), "rule__PerspectiveBean__RefAssignment_2");
+					put(grammarAccess.getPerspectiveChartAccess().getRefAssignment_2(), "rule__PerspectiveChart__RefAssignment_2");
+					put(grammarAccess.getPerspectiveReportAccess().getRefAssignment_2(), "rule__PerspectiveReport__RefAssignment_2");
+					put(grammarAccess.getPerspectiveOrganizationAccess().getRefAssignment_2(), "rule__PerspectiveOrganization__RefAssignment_2");
+					put(grammarAccess.getPerspectiveTopologyAccess().getRefAssignment_2(), "rule__PerspectiveTopology__RefAssignment_2");
+					put(grammarAccess.getPerspectiveDialogAccess().getRefAssignment_2(), "rule__PerspectiveDialog__RefAssignment_2");
+					put(grammarAccess.getPerspectiveKanbanAccess().getDtoRefAssignment_3(), "rule__PerspectiveKanban__DtoRefAssignment_3");
+					put(grammarAccess.getPerspectiveKanbanAccess().getCardRefAssignment_5(), "rule__PerspectiveKanban__CardRefAssignment_5");
+					put(grammarAccess.getPerspectiveKanbanAccess().getDialogRefAssignment_7(), "rule__PerspectiveKanban__DialogRefAssignment_7");
+					put(grammarAccess.getPerspectiveSearchAccess().getDtoRefAssignment_3(), "rule__PerspectiveSearch__DtoRefAssignment_3");
+					put(grammarAccess.getPerspectiveSearchAccess().getDepthAssignment_4_0_1(), "rule__PerspectiveSearch__DepthAssignment_4_0_1");
+					put(grammarAccess.getPerspectiveSearchAccess().getFilterColsAssignment_4_1_1(), "rule__PerspectiveSearch__FilterColsAssignment_4_1_1");
+					put(grammarAccess.getPerspectiveDataInterchangeAccess().getRefAssignment_2(), "rule__PerspectiveDataInterchange__RefAssignment_2");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0(), "rule__XImportDeclaration__StaticAssignment_2_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1(), "rule__XImportDeclaration__ExtensionAssignment_2_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_2_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_2_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1(), "rule__XImportDeclaration__ImportedTypeAssignment_2_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_2_2");
+					put(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0(), "rule__XImportDeclaration__FqnImportAssignment_2_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1(), "rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+					put(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), "rule__Perspective__UnorderedGroup_5");
+					put(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), "rule__PerspectiveSashContainer__UnorderedGroup_3");
+					put(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), "rule__PerspectivePartStack__UnorderedGroup_3");
+					put(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), "rule__PerspectivePart__UnorderedGroup_3");
+					put(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), "rule__PerspectiveSearch__UnorderedGroup_4");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+			
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+	}
+
+	public PerspectiveDslGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+
+	public void setGrammarAccess(PerspectiveDslGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDsl.g b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDsl.g
new file mode 100644
index 0000000..991c762
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDsl.g
@@ -0,0 +1,24076 @@
+/**
+ *                                                                            
+ *  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 InternalPerspectiveDsl;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.perspective.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.perspective.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.perspective.services.PerspectiveDslGrammarAccess;
+
+}
+@parser::members {
+	private PerspectiveDslGrammarAccess grammarAccess;
+
+	public void setGrammarAccess(PerspectiveDslGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+
+	@Override
+	protected Grammar getGrammar() {
+		return grammarAccess.getGrammar();
+	}
+
+	@Override
+	protected String getValueForTokenName(String tokenName) {
+		return tokenName;
+	}
+}
+
+// Entry rule entryRulePerspectiveModel
+entryRulePerspectiveModel
+:
+{ before(grammarAccess.getPerspectiveModelRule()); }
+	 rulePerspectiveModel
+{ after(grammarAccess.getPerspectiveModelRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveModel
+rulePerspectiveModel 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveModelAccess().getGroup()); }
+		(rule__PerspectiveModel__Group__0)
+		{ after(grammarAccess.getPerspectiveModelAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectivePackage
+entryRulePerspectivePackage
+:
+{ before(grammarAccess.getPerspectivePackageRule()); }
+	 rulePerspectivePackage
+{ after(grammarAccess.getPerspectivePackageRule()); } 
+	 EOF 
+;
+
+// Rule PerspectivePackage
+rulePerspectivePackage 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectivePackageAccess().getGroup()); }
+		(rule__PerspectivePackage__Group__0)
+		{ after(grammarAccess.getPerspectivePackageAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspective
+entryRulePerspective
+:
+{ before(grammarAccess.getPerspectiveRule()); }
+	 rulePerspective
+{ after(grammarAccess.getPerspectiveRule()); } 
+	 EOF 
+;
+
+// Rule Perspective
+rulePerspective 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getGroup()); }
+		(rule__Perspective__Group__0)
+		{ after(grammarAccess.getPerspectiveAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveElement
+entryRulePerspectiveElement
+:
+{ before(grammarAccess.getPerspectiveElementRule()); }
+	 rulePerspectiveElement
+{ after(grammarAccess.getPerspectiveElementRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveElement
+rulePerspectiveElement 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveElementAccess().getAlternatives()); }
+		(rule__PerspectiveElement__Alternatives)
+		{ after(grammarAccess.getPerspectiveElementAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveSashContainer
+entryRulePerspectiveSashContainer
+:
+{ before(grammarAccess.getPerspectiveSashContainerRule()); }
+	 rulePerspectiveSashContainer
+{ after(grammarAccess.getPerspectiveSashContainerRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveSashContainer
+rulePerspectiveSashContainer 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveSashContainerAccess().getGroup()); }
+		(rule__PerspectiveSashContainer__Group__0)
+		{ after(grammarAccess.getPerspectiveSashContainerAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectivePartStack
+entryRulePerspectivePartStack
+:
+{ before(grammarAccess.getPerspectivePartStackRule()); }
+	 rulePerspectivePartStack
+{ after(grammarAccess.getPerspectivePartStackRule()); } 
+	 EOF 
+;
+
+// Rule PerspectivePartStack
+rulePerspectivePartStack 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectivePartStackAccess().getGroup()); }
+		(rule__PerspectivePartStack__Group__0)
+		{ after(grammarAccess.getPerspectivePartStackAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectivePart
+entryRulePerspectivePart
+:
+{ before(grammarAccess.getPerspectivePartRule()); }
+	 rulePerspectivePart
+{ after(grammarAccess.getPerspectivePartRule()); } 
+	 EOF 
+;
+
+// Rule PerspectivePart
+rulePerspectivePart 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectivePartAccess().getGroup()); }
+		(rule__PerspectivePart__Group__0)
+		{ after(grammarAccess.getPerspectivePartAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveView
+entryRulePerspectiveView
+:
+{ before(grammarAccess.getPerspectiveViewRule()); }
+	 rulePerspectiveView
+{ after(grammarAccess.getPerspectiveViewRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveView
+rulePerspectiveView 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getAlternatives()); }
+		(rule__PerspectiveView__Alternatives)
+		{ after(grammarAccess.getPerspectiveViewAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveSelection
+entryRulePerspectiveSelection
+:
+{ before(grammarAccess.getPerspectiveSelectionRule()); }
+	 rulePerspectiveSelection
+{ after(grammarAccess.getPerspectiveSelectionRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveSelection
+rulePerspectiveSelection 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveSelectionAccess().getGroup()); }
+		(rule__PerspectiveSelection__Group__0)
+		{ after(grammarAccess.getPerspectiveSelectionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveTable
+entryRulePerspectiveTable
+:
+{ before(grammarAccess.getPerspectiveTableRule()); }
+	 rulePerspectiveTable
+{ after(grammarAccess.getPerspectiveTableRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveTable
+rulePerspectiveTable 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveTableAccess().getGroup()); }
+		(rule__PerspectiveTable__Group__0)
+		{ after(grammarAccess.getPerspectiveTableAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveGrid
+entryRulePerspectiveGrid
+:
+{ before(grammarAccess.getPerspectiveGridRule()); }
+	 rulePerspectiveGrid
+{ after(grammarAccess.getPerspectiveGridRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveGrid
+rulePerspectiveGrid 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveGridAccess().getGroup()); }
+		(rule__PerspectiveGrid__Group__0)
+		{ after(grammarAccess.getPerspectiveGridAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveBean
+entryRulePerspectiveBean
+:
+{ before(grammarAccess.getPerspectiveBeanRule()); }
+	 rulePerspectiveBean
+{ after(grammarAccess.getPerspectiveBeanRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveBean
+rulePerspectiveBean 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveBeanAccess().getGroup()); }
+		(rule__PerspectiveBean__Group__0)
+		{ after(grammarAccess.getPerspectiveBeanAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveChart
+entryRulePerspectiveChart
+:
+{ before(grammarAccess.getPerspectiveChartRule()); }
+	 rulePerspectiveChart
+{ after(grammarAccess.getPerspectiveChartRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveChart
+rulePerspectiveChart 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveChartAccess().getGroup()); }
+		(rule__PerspectiveChart__Group__0)
+		{ after(grammarAccess.getPerspectiveChartAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveReport
+entryRulePerspectiveReport
+:
+{ before(grammarAccess.getPerspectiveReportRule()); }
+	 rulePerspectiveReport
+{ after(grammarAccess.getPerspectiveReportRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveReport
+rulePerspectiveReport 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveReportAccess().getGroup()); }
+		(rule__PerspectiveReport__Group__0)
+		{ after(grammarAccess.getPerspectiveReportAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveOrganization
+entryRulePerspectiveOrganization
+:
+{ before(grammarAccess.getPerspectiveOrganizationRule()); }
+	 rulePerspectiveOrganization
+{ after(grammarAccess.getPerspectiveOrganizationRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveOrganization
+rulePerspectiveOrganization 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveOrganizationAccess().getGroup()); }
+		(rule__PerspectiveOrganization__Group__0)
+		{ after(grammarAccess.getPerspectiveOrganizationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveTopology
+entryRulePerspectiveTopology
+:
+{ before(grammarAccess.getPerspectiveTopologyRule()); }
+	 rulePerspectiveTopology
+{ after(grammarAccess.getPerspectiveTopologyRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveTopology
+rulePerspectiveTopology 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveTopologyAccess().getGroup()); }
+		(rule__PerspectiveTopology__Group__0)
+		{ after(grammarAccess.getPerspectiveTopologyAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveDialog
+entryRulePerspectiveDialog
+:
+{ before(grammarAccess.getPerspectiveDialogRule()); }
+	 rulePerspectiveDialog
+{ after(grammarAccess.getPerspectiveDialogRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveDialog
+rulePerspectiveDialog 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveDialogAccess().getGroup()); }
+		(rule__PerspectiveDialog__Group__0)
+		{ after(grammarAccess.getPerspectiveDialogAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveBPMN
+entryRulePerspectiveBPMN
+:
+{ before(grammarAccess.getPerspectiveBPMNRule()); }
+	 rulePerspectiveBPMN
+{ after(grammarAccess.getPerspectiveBPMNRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveBPMN
+rulePerspectiveBPMN 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveBPMNAccess().getGroup()); }
+		(rule__PerspectiveBPMN__Group__0)
+		{ after(grammarAccess.getPerspectiveBPMNAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveKanban
+entryRulePerspectiveKanban
+:
+{ before(grammarAccess.getPerspectiveKanbanRule()); }
+	 rulePerspectiveKanban
+{ after(grammarAccess.getPerspectiveKanbanRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveKanban
+rulePerspectiveKanban 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveKanbanAccess().getGroup()); }
+		(rule__PerspectiveKanban__Group__0)
+		{ after(grammarAccess.getPerspectiveKanbanAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveWelcome
+entryRulePerspectiveWelcome
+:
+{ before(grammarAccess.getPerspectiveWelcomeRule()); }
+	 rulePerspectiveWelcome
+{ after(grammarAccess.getPerspectiveWelcomeRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveWelcome
+rulePerspectiveWelcome 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveWelcomeAccess().getGroup()); }
+		(rule__PerspectiveWelcome__Group__0)
+		{ after(grammarAccess.getPerspectiveWelcomeAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveSearch
+entryRulePerspectiveSearch
+:
+{ before(grammarAccess.getPerspectiveSearchRule()); }
+	 rulePerspectiveSearch
+{ after(grammarAccess.getPerspectiveSearchRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveSearch
+rulePerspectiveSearch 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveSearchAccess().getGroup()); }
+		(rule__PerspectiveSearch__Group__0)
+		{ after(grammarAccess.getPerspectiveSearchAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveDataInterchange
+entryRulePerspectiveDataInterchange
+:
+{ before(grammarAccess.getPerspectiveDataInterchangeRule()); }
+	 rulePerspectiveDataInterchange
+{ after(grammarAccess.getPerspectiveDataInterchangeRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveDataInterchange
+rulePerspectiveDataInterchange 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveDataInterchangeAccess().getGroup()); }
+		(rule__PerspectiveDataInterchange__Group__0)
+		{ after(grammarAccess.getPerspectiveDataInterchangeAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleTRANSLATABLEID
+entryRuleTRANSLATABLEID
+:
+{ before(grammarAccess.getTRANSLATABLEIDRule()); }
+	 ruleTRANSLATABLEID
+{ after(grammarAccess.getTRANSLATABLEIDRule()); } 
+	 EOF 
+;
+
+// Rule TRANSLATABLEID
+ruleTRANSLATABLEID 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); }
+		RULE_ID
+		{ after(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleTRANSLATABLESTRING
+entryRuleTRANSLATABLESTRING
+:
+{ before(grammarAccess.getTRANSLATABLESTRINGRule()); }
+	 ruleTRANSLATABLESTRING
+{ after(grammarAccess.getTRANSLATABLESTRINGRule()); } 
+	 EOF 
+;
+
+// Rule TRANSLATABLESTRING
+ruleTRANSLATABLESTRING 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); }
+		RULE_STRING
+		{ after(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration
+:
+{ before(grammarAccess.getXImportDeclarationRule()); }
+	 ruleXImportDeclaration
+{ after(grammarAccess.getXImportDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+		(rule__XImportDeclaration__Group__0)
+		{ after(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotation
+entryRuleXAnnotation
+:
+{ before(grammarAccess.getXAnnotationRule()); }
+	 ruleXAnnotation
+{ after(grammarAccess.getXAnnotationRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotation
+ruleXAnnotation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getGroup()); }
+		(rule__XAnnotation__Group__0)
+		{ after(grammarAccess.getXAnnotationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationElementValuePair
+entryRuleXAnnotationElementValuePair
+:
+{ before(grammarAccess.getXAnnotationElementValuePairRule()); }
+	 ruleXAnnotationElementValuePair
+{ after(grammarAccess.getXAnnotationElementValuePairRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+		(rule__XAnnotationElementValuePair__Group__0)
+		{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList
+:
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	 ruleXAnnotationElementValueOrCommaList
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+		(rule__XAnnotationElementValueOrCommaList__Alternatives)
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationElementValue
+entryRuleXAnnotationElementValue
+:
+{ before(grammarAccess.getXAnnotationElementValueRule()); }
+	 ruleXAnnotationElementValue
+{ after(grammarAccess.getXAnnotationElementValueRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+		(rule__XAnnotationElementValue__Alternatives)
+		{ after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationOrExpression
+entryRuleXAnnotationOrExpression
+:
+{ before(grammarAccess.getXAnnotationOrExpressionRule()); }
+	 ruleXAnnotationOrExpression
+{ after(grammarAccess.getXAnnotationOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+		(rule__XAnnotationOrExpression__Alternatives)
+		{ after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression
+:
+{ before(grammarAccess.getXExpressionRule()); }
+	 ruleXExpression
+{ after(grammarAccess.getXExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XExpression
+ruleXExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+		ruleXAssignment
+		{ after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment
+:
+{ before(grammarAccess.getXAssignmentRule()); }
+	 ruleXAssignment
+{ after(grammarAccess.getXAssignmentRule()); } 
+	 EOF 
+;
+
+// Rule XAssignment
+ruleXAssignment 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+		(rule__XAssignment__Alternatives)
+		{ after(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpSingleAssign
+entryRuleOpSingleAssign
+:
+{ before(grammarAccess.getOpSingleAssignRule()); }
+	 ruleOpSingleAssign
+{ after(grammarAccess.getOpSingleAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+		'='
+		{ after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpMultiAssign
+entryRuleOpMultiAssign
+:
+{ before(grammarAccess.getOpMultiAssignRule()); }
+	 ruleOpMultiAssign
+{ after(grammarAccess.getOpMultiAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+		(rule__OpMultiAssign__Alternatives)
+		{ after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression
+:
+{ before(grammarAccess.getXOrExpressionRule()); }
+	 ruleXOrExpression
+{ after(grammarAccess.getXOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOrExpression
+ruleXOrExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXOrExpressionAccess().getGroup()); }
+		(rule__XOrExpression__Group__0)
+		{ after(grammarAccess.getXOrExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpOr
+entryRuleOpOr
+:
+{ before(grammarAccess.getOpOrRule()); }
+	 ruleOpOr
+{ after(grammarAccess.getOpOrRule()); } 
+	 EOF 
+;
+
+// Rule OpOr
+ruleOpOr 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+		'||'
+		{ after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAndExpression
+entryRuleXAndExpression
+:
+{ before(grammarAccess.getXAndExpressionRule()); }
+	 ruleXAndExpression
+{ after(grammarAccess.getXAndExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAndExpression
+ruleXAndExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAndExpressionAccess().getGroup()); }
+		(rule__XAndExpression__Group__0)
+		{ after(grammarAccess.getXAndExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpAnd
+entryRuleOpAnd
+:
+{ before(grammarAccess.getOpAndRule()); }
+	 ruleOpAnd
+{ after(grammarAccess.getOpAndRule()); } 
+	 EOF 
+;
+
+// Rule OpAnd
+ruleOpAnd 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+		'&&'
+		{ after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXEqualityExpression
+entryRuleXEqualityExpression
+:
+{ before(grammarAccess.getXEqualityExpressionRule()); }
+	 ruleXEqualityExpression
+{ after(grammarAccess.getXEqualityExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+		(rule__XEqualityExpression__Group__0)
+		{ after(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpEquality
+entryRuleOpEquality
+:
+{ before(grammarAccess.getOpEqualityRule()); }
+	 ruleOpEquality
+{ after(grammarAccess.getOpEqualityRule()); } 
+	 EOF 
+;
+
+// Rule OpEquality
+ruleOpEquality 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+		(rule__OpEquality__Alternatives)
+		{ after(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression
+:
+{ before(grammarAccess.getXRelationalExpressionRule()); }
+	 ruleXRelationalExpression
+{ after(grammarAccess.getXRelationalExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+		(rule__XRelationalExpression__Group__0)
+		{ after(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpCompare
+entryRuleOpCompare
+:
+{ before(grammarAccess.getOpCompareRule()); }
+	 ruleOpCompare
+{ after(grammarAccess.getOpCompareRule()); } 
+	 EOF 
+;
+
+// Rule OpCompare
+ruleOpCompare 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpCompareAccess().getAlternatives()); }
+		(rule__OpCompare__Alternatives)
+		{ after(grammarAccess.getOpCompareAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression
+:
+{ before(grammarAccess.getXOtherOperatorExpressionRule()); }
+	 ruleXOtherOperatorExpression
+{ after(grammarAccess.getXOtherOperatorExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+		(rule__XOtherOperatorExpression__Group__0)
+		{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpOther
+entryRuleOpOther
+:
+{ before(grammarAccess.getOpOtherRule()); }
+	 ruleOpOther
+{ after(grammarAccess.getOpOtherRule()); } 
+	 EOF 
+;
+
+// Rule OpOther
+ruleOpOther 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpOtherAccess().getAlternatives()); }
+		(rule__OpOther__Alternatives)
+		{ after(grammarAccess.getOpOtherAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression
+:
+{ before(grammarAccess.getXAdditiveExpressionRule()); }
+	 ruleXAdditiveExpression
+{ after(grammarAccess.getXAdditiveExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+		(rule__XAdditiveExpression__Group__0)
+		{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpAdd
+entryRuleOpAdd
+:
+{ before(grammarAccess.getOpAddRule()); }
+	 ruleOpAdd
+{ after(grammarAccess.getOpAddRule()); } 
+	 EOF 
+;
+
+// Rule OpAdd
+ruleOpAdd 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpAddAccess().getAlternatives()); }
+		(rule__OpAdd__Alternatives)
+		{ after(grammarAccess.getOpAddAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression
+:
+{ before(grammarAccess.getXMultiplicativeExpressionRule()); }
+	 ruleXMultiplicativeExpression
+{ after(grammarAccess.getXMultiplicativeExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+		(rule__XMultiplicativeExpression__Group__0)
+		{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpMulti
+entryRuleOpMulti
+:
+{ before(grammarAccess.getOpMultiRule()); }
+	 ruleOpMulti
+{ after(grammarAccess.getOpMultiRule()); } 
+	 EOF 
+;
+
+// Rule OpMulti
+ruleOpMulti 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpMultiAccess().getAlternatives()); }
+		(rule__OpMulti__Alternatives)
+		{ after(grammarAccess.getOpMultiAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation
+:
+{ before(grammarAccess.getXUnaryOperationRule()); }
+	 ruleXUnaryOperation
+{ after(grammarAccess.getXUnaryOperationRule()); } 
+	 EOF 
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+		(rule__XUnaryOperation__Alternatives)
+		{ after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpUnary
+entryRuleOpUnary
+:
+{ before(grammarAccess.getOpUnaryRule()); }
+	 ruleOpUnary
+{ after(grammarAccess.getOpUnaryRule()); } 
+	 EOF 
+;
+
+// Rule OpUnary
+ruleOpUnary 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+		(rule__OpUnary__Alternatives)
+		{ after(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression
+:
+{ before(grammarAccess.getXCastedExpressionRule()); }
+	 ruleXCastedExpression
+{ after(grammarAccess.getXCastedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+		(rule__XCastedExpression__Group__0)
+		{ after(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation
+:
+{ before(grammarAccess.getXPostfixOperationRule()); }
+	 ruleXPostfixOperation
+{ after(grammarAccess.getXPostfixOperationRule()); } 
+	 EOF 
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+		(rule__XPostfixOperation__Group__0)
+		{ after(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpPostfix
+entryRuleOpPostfix
+:
+{ before(grammarAccess.getOpPostfixRule()); }
+	 ruleOpPostfix
+{ after(grammarAccess.getOpPostfixRule()); } 
+	 EOF 
+;
+
+// Rule OpPostfix
+ruleOpPostfix 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+		(rule__OpPostfix__Alternatives)
+		{ after(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall
+:
+{ before(grammarAccess.getXMemberFeatureCallRule()); }
+	 ruleXMemberFeatureCall
+{ after(grammarAccess.getXMemberFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+		(rule__XMemberFeatureCall__Group__0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXPrimaryExpression
+entryRuleXPrimaryExpression
+:
+{ before(grammarAccess.getXPrimaryExpressionRule()); }
+	 ruleXPrimaryExpression
+{ after(grammarAccess.getXPrimaryExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+		(rule__XPrimaryExpression__Alternatives)
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral
+:
+{ before(grammarAccess.getXLiteralRule()); }
+	 ruleXLiteral
+{ after(grammarAccess.getXLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XLiteral
+ruleXLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXLiteralAccess().getAlternatives()); }
+		(rule__XLiteral__Alternatives)
+		{ after(grammarAccess.getXLiteralAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral
+:
+{ before(grammarAccess.getXCollectionLiteralRule()); }
+	 ruleXCollectionLiteral
+{ after(grammarAccess.getXCollectionLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+		(rule__XCollectionLiteral__Alternatives)
+		{ after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral
+:
+{ before(grammarAccess.getXSetLiteralRule()); }
+	 ruleXSetLiteral
+{ after(grammarAccess.getXSetLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXSetLiteralAccess().getGroup()); }
+		(rule__XSetLiteral__Group__0)
+		{ after(grammarAccess.getXSetLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXListLiteral
+entryRuleXListLiteral
+:
+{ before(grammarAccess.getXListLiteralRule()); }
+	 ruleXListLiteral
+{ after(grammarAccess.getXListLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XListLiteral
+ruleXListLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXListLiteralAccess().getGroup()); }
+		(rule__XListLiteral__Group__0)
+		{ after(grammarAccess.getXListLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXClosure
+entryRuleXClosure
+:
+{ before(grammarAccess.getXClosureRule()); }
+	 ruleXClosure
+{ after(grammarAccess.getXClosureRule()); } 
+	 EOF 
+;
+
+// Rule XClosure
+ruleXClosure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXClosureAccess().getGroup()); }
+		(rule__XClosure__Group__0)
+		{ after(grammarAccess.getXClosureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXExpressionInClosure
+entryRuleXExpressionInClosure
+:
+{ before(grammarAccess.getXExpressionInClosureRule()); }
+	 ruleXExpressionInClosure
+{ after(grammarAccess.getXExpressionInClosureRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+		(rule__XExpressionInClosure__Group__0)
+		{ after(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXShortClosure
+entryRuleXShortClosure
+:
+{ before(grammarAccess.getXShortClosureRule()); }
+	 ruleXShortClosure
+{ after(grammarAccess.getXShortClosureRule()); } 
+	 EOF 
+;
+
+// Rule XShortClosure
+ruleXShortClosure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXShortClosureAccess().getGroup()); }
+		(rule__XShortClosure__Group__0)
+		{ after(grammarAccess.getXShortClosureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXParenthesizedExpression
+entryRuleXParenthesizedExpression
+:
+{ before(grammarAccess.getXParenthesizedExpressionRule()); }
+	 ruleXParenthesizedExpression
+{ after(grammarAccess.getXParenthesizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+		(rule__XParenthesizedExpression__Group__0)
+		{ after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression
+:
+{ before(grammarAccess.getXIfExpressionRule()); }
+	 ruleXIfExpression
+{ after(grammarAccess.getXIfExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XIfExpression
+ruleXIfExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXIfExpressionAccess().getGroup()); }
+		(rule__XIfExpression__Group__0)
+		{ after(grammarAccess.getXIfExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression
+:
+{ before(grammarAccess.getXSwitchExpressionRule()); }
+	 ruleXSwitchExpression
+{ after(grammarAccess.getXSwitchExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+		(rule__XSwitchExpression__Group__0)
+		{ after(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart
+:
+{ before(grammarAccess.getXCasePartRule()); }
+	 ruleXCasePart
+{ after(grammarAccess.getXCasePartRule()); } 
+	 EOF 
+;
+
+// Rule XCasePart
+ruleXCasePart 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCasePartAccess().getGroup()); }
+		(rule__XCasePart__Group__0)
+		{ after(grammarAccess.getXCasePartAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression
+:
+{ before(grammarAccess.getXForLoopExpressionRule()); }
+	 ruleXForLoopExpression
+{ after(grammarAccess.getXForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+		(rule__XForLoopExpression__Group__0)
+		{ after(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression
+:
+{ before(grammarAccess.getXBasicForLoopExpressionRule()); }
+	 ruleXBasicForLoopExpression
+{ after(grammarAccess.getXBasicForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+		(rule__XBasicForLoopExpression__Group__0)
+		{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression
+:
+{ before(grammarAccess.getXWhileExpressionRule()); }
+	 ruleXWhileExpression
+{ after(grammarAccess.getXWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+		(rule__XWhileExpression__Group__0)
+		{ after(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression
+:
+{ before(grammarAccess.getXDoWhileExpressionRule()); }
+	 ruleXDoWhileExpression
+{ after(grammarAccess.getXDoWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+		(rule__XDoWhileExpression__Group__0)
+		{ after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression
+:
+{ before(grammarAccess.getXBlockExpressionRule()); }
+	 ruleXBlockExpression
+{ after(grammarAccess.getXBlockExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+		(rule__XBlockExpression__Group__0)
+		{ after(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration
+:
+{ before(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	 ruleXExpressionOrVarDeclaration
+{ after(grammarAccess.getXExpressionOrVarDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+		(rule__XExpressionOrVarDeclaration__Alternatives)
+		{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration
+:
+{ before(grammarAccess.getXVariableDeclarationRule()); }
+	 ruleXVariableDeclaration
+{ after(grammarAccess.getXVariableDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+		(rule__XVariableDeclaration__Group__0)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter
+:
+{ before(grammarAccess.getJvmFormalParameterRule()); }
+	 ruleJvmFormalParameter
+{ after(grammarAccess.getJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+		(rule__JvmFormalParameter__Group__0)
+		{ after(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter
+:
+{ before(grammarAccess.getFullJvmFormalParameterRule()); }
+	 ruleFullJvmFormalParameter
+{ after(grammarAccess.getFullJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+		(rule__FullJvmFormalParameter__Group__0)
+		{ after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall
+:
+{ before(grammarAccess.getXFeatureCallRule()); }
+	 ruleXFeatureCall
+{ after(grammarAccess.getXFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getGroup()); }
+		(rule__XFeatureCall__Group__0)
+		{ after(grammarAccess.getXFeatureCallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID
+:
+{ before(grammarAccess.getFeatureCallIDRule()); }
+	 ruleFeatureCallID
+{ after(grammarAccess.getFeatureCallIDRule()); } 
+	 EOF 
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+		(rule__FeatureCallID__Alternatives)
+		{ after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper
+:
+{ before(grammarAccess.getIdOrSuperRule()); }
+	 ruleIdOrSuper
+{ after(grammarAccess.getIdOrSuperRule()); } 
+	 EOF 
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+		(rule__IdOrSuper__Alternatives)
+		{ after(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall
+:
+{ before(grammarAccess.getXConstructorCallRule()); }
+	 ruleXConstructorCall
+{ after(grammarAccess.getXConstructorCallRule()); } 
+	 EOF 
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getGroup()); }
+		(rule__XConstructorCall__Group__0)
+		{ after(grammarAccess.getXConstructorCallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral
+:
+{ before(grammarAccess.getXBooleanLiteralRule()); }
+	 ruleXBooleanLiteral
+{ after(grammarAccess.getXBooleanLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+		(rule__XBooleanLiteral__Group__0)
+		{ after(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral
+:
+{ before(grammarAccess.getXNullLiteralRule()); }
+	 ruleXNullLiteral
+{ after(grammarAccess.getXNullLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXNullLiteralAccess().getGroup()); }
+		(rule__XNullLiteral__Group__0)
+		{ after(grammarAccess.getXNullLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral
+:
+{ before(grammarAccess.getXNumberLiteralRule()); }
+	 ruleXNumberLiteral
+{ after(grammarAccess.getXNumberLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+		(rule__XNumberLiteral__Group__0)
+		{ after(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral
+:
+{ before(grammarAccess.getXStringLiteralRule()); }
+	 ruleXStringLiteral
+{ after(grammarAccess.getXStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXStringLiteralAccess().getGroup()); }
+		(rule__XStringLiteral__Group__0)
+		{ after(grammarAccess.getXStringLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral
+:
+{ before(grammarAccess.getXTypeLiteralRule()); }
+	 ruleXTypeLiteral
+{ after(grammarAccess.getXTypeLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+		(rule__XTypeLiteral__Group__0)
+		{ after(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression
+:
+{ before(grammarAccess.getXThrowExpressionRule()); }
+	 ruleXThrowExpression
+{ after(grammarAccess.getXThrowExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+		(rule__XThrowExpression__Group__0)
+		{ after(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression
+:
+{ before(grammarAccess.getXReturnExpressionRule()); }
+	 ruleXReturnExpression
+{ after(grammarAccess.getXReturnExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+		(rule__XReturnExpression__Group__0)
+		{ after(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression
+:
+{ before(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 ruleXTryCatchFinallyExpression
+{ after(grammarAccess.getXTryCatchFinallyExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+		(rule__XTryCatchFinallyExpression__Group__0)
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression
+:
+{ before(grammarAccess.getXSynchronizedExpressionRule()); }
+	 ruleXSynchronizedExpression
+{ after(grammarAccess.getXSynchronizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+		(rule__XSynchronizedExpression__Group__0)
+		{ after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause
+:
+{ before(grammarAccess.getXCatchClauseRule()); }
+	 ruleXCatchClause
+{ after(grammarAccess.getXCatchClauseRule()); } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCatchClauseAccess().getGroup()); }
+		(rule__XCatchClause__Group__0)
+		{ after(grammarAccess.getXCatchClauseAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName
+:
+{ before(grammarAccess.getQualifiedNameRule()); }
+	 ruleQualifiedName
+{ after(grammarAccess.getQualifiedNameRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedName
+ruleQualifiedName 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getQualifiedNameAccess().getGroup()); }
+		(rule__QualifiedName__Group__0)
+		{ after(grammarAccess.getQualifiedNameAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleNumber
+entryRuleNumber
+@init { 
+	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+}
+:
+{ before(grammarAccess.getNumberRule()); }
+	 ruleNumber
+{ after(grammarAccess.getNumberRule()); } 
+	 EOF 
+;
+finally {
+	myHiddenTokenState.restore();
+}
+
+// Rule Number
+ruleNumber 
+	@init {
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getNumberAccess().getAlternatives()); }
+		(rule__Number__Alternatives)
+		{ after(grammarAccess.getNumberAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+	myHiddenTokenState.restore();
+}
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference
+:
+{ before(grammarAccess.getJvmTypeReferenceRule()); }
+	 ruleJvmTypeReference
+{ after(grammarAccess.getJvmTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+		(rule__JvmTypeReference__Alternatives)
+		{ after(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets
+:
+{ before(grammarAccess.getArrayBracketsRule()); }
+	 ruleArrayBrackets
+{ after(grammarAccess.getArrayBracketsRule()); } 
+	 EOF 
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getArrayBracketsAccess().getGroup()); }
+		(rule__ArrayBrackets__Group__0)
+		{ after(grammarAccess.getArrayBracketsAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef
+:
+{ before(grammarAccess.getXFunctionTypeRefRule()); }
+	 ruleXFunctionTypeRef
+{ after(grammarAccess.getXFunctionTypeRefRule()); } 
+	 EOF 
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+		(rule__XFunctionTypeRef__Group__0)
+		{ after(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference
+:
+{ before(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+	 ruleJvmParameterizedTypeReference
+{ after(grammarAccess.getJvmParameterizedTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+		(rule__JvmParameterizedTypeReference__Group__0)
+		{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference
+:
+{ before(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+	 ruleJvmArgumentTypeReference
+{ after(grammarAccess.getJvmArgumentTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+		(rule__JvmArgumentTypeReference__Alternatives)
+		{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference
+:
+{ before(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+	 ruleJvmWildcardTypeReference
+{ after(grammarAccess.getJvmWildcardTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+		(rule__JvmWildcardTypeReference__Group__0)
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmUpperBound
+entryRuleJvmUpperBound
+:
+{ before(grammarAccess.getJvmUpperBoundRule()); }
+	 ruleJvmUpperBound
+{ after(grammarAccess.getJvmUpperBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+		(rule__JvmUpperBound__Group__0)
+		{ after(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmUpperBoundAnded
+entryRuleJvmUpperBoundAnded
+:
+{ before(grammarAccess.getJvmUpperBoundAndedRule()); }
+	 ruleJvmUpperBoundAnded
+{ after(grammarAccess.getJvmUpperBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+		(rule__JvmUpperBoundAnded__Group__0)
+		{ after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmLowerBound
+entryRuleJvmLowerBound
+:
+{ before(grammarAccess.getJvmLowerBoundRule()); }
+	 ruleJvmLowerBound
+{ after(grammarAccess.getJvmLowerBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+		(rule__JvmLowerBound__Group__0)
+		{ after(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmLowerBoundAnded
+entryRuleJvmLowerBoundAnded
+:
+{ before(grammarAccess.getJvmLowerBoundAndedRule()); }
+	 ruleJvmLowerBoundAnded
+{ after(grammarAccess.getJvmLowerBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+		(rule__JvmLowerBoundAnded__Group__0)
+		{ after(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleQualifiedNameWithWildcard
+entryRuleQualifiedNameWithWildcard
+:
+{ before(grammarAccess.getQualifiedNameWithWildcardRule()); }
+	 ruleQualifiedNameWithWildcard
+{ after(grammarAccess.getQualifiedNameWithWildcardRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+		(rule__QualifiedNameWithWildcard__Group__0)
+		{ after(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleValidID
+entryRuleValidID
+:
+{ before(grammarAccess.getValidIDRule()); }
+	 ruleValidID
+{ after(grammarAccess.getValidIDRule()); } 
+	 EOF 
+;
+
+// Rule ValidID
+ruleValidID 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+		RULE_ID
+		{ after(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXImportSection
+entryRuleXImportSection
+:
+{ before(grammarAccess.getXImportSectionRule()); }
+	 ruleXImportSection
+{ after(grammarAccess.getXImportSectionRule()); } 
+	 EOF 
+;
+
+// Rule XImportSection
+ruleXImportSection 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		(
+			{ before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+			(rule__XImportSection__ImportDeclarationsAssignment)
+			{ after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+		)
+		(
+			{ before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+			(rule__XImportSection__ImportDeclarationsAssignment)*
+			{ after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+		)
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleQualifiedNameInStaticImport
+entryRuleQualifiedNameInStaticImport
+:
+{ before(grammarAccess.getQualifiedNameInStaticImportRule()); }
+	 ruleQualifiedNameInStaticImport
+{ after(grammarAccess.getQualifiedNameInStaticImportRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		(
+			{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+			(rule__QualifiedNameInStaticImport__Group__0)
+			{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+		)
+		(
+			{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+			(rule__QualifiedNameInStaticImport__Group__0)*
+			{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+		)
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule SashOrientation
+ruleSashOrientation
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSashOrientationAccess().getAlternatives()); }
+		(rule__SashOrientation__Alternatives)
+		{ after(grammarAccess.getSashOrientationAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveElement__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0()); }
+		rulePerspectiveSashContainer
+		{ after(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1()); }
+		rulePerspectivePartStack
+		{ after(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2()); }
+		rulePerspectivePart
+		{ after(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveView__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0()); }
+		rulePerspectiveSelection
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1()); }
+		rulePerspectiveTable
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2()); }
+		rulePerspectiveChart
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3()); }
+		rulePerspectiveBean
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4()); }
+		rulePerspectiveReport
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5()); }
+		rulePerspectiveOrganization
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6()); }
+		rulePerspectiveTopology
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7()); }
+		rulePerspectiveDialog
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_8()); }
+		rulePerspectiveBPMN
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_8()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_9()); }
+		rulePerspectiveGrid
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_9()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_10()); }
+		rulePerspectiveWelcome
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_10()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_11()); }
+		rulePerspectiveSearch
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_11()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_12()); }
+		rulePerspectiveDataInterchange
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_12()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveKanbanParserRuleCall_13()); }
+		rulePerspectiveKanban
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveKanbanParserRuleCall_13()); }
+	)
+;
+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__SashOrientation__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0()); }
+		('horizontal')
+		{ after(grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1()); }
+		('vertical')
+		{ after(grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveModel__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveModel__Group__0__Impl
+	rule__PerspectiveModel__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveModel__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveModelAccess().getImportSectionAssignment_0()); }
+	(rule__PerspectiveModel__ImportSectionAssignment_0)?
+	{ after(grammarAccess.getPerspectiveModelAccess().getImportSectionAssignment_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveModel__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveModel__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveModel__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveModelAccess().getPackagesAssignment_1()); }
+	(rule__PerspectiveModel__PackagesAssignment_1)*
+	{ after(grammarAccess.getPerspectiveModelAccess().getPackagesAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePackage__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePackage__Group__0__Impl
+	rule__PerspectivePackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePackage__Group__1__Impl
+	rule__PerspectivePackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePackageAccess().getPackageKeyword_1()); }
+	'package'
+	{ after(grammarAccess.getPerspectivePackageAccess().getPackageKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePackage__Group__2__Impl
+	rule__PerspectivePackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePackageAccess().getNameAssignment_2()); }
+	(rule__PerspectivePackage__NameAssignment_2)
+	{ after(grammarAccess.getPerspectivePackageAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePackage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePackageAccess().getGroup_3()); }
+	(rule__PerspectivePackage__Group_3__0)?
+	{ after(grammarAccess.getPerspectivePackageAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePackage__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePackage__Group_3__0__Impl
+	rule__PerspectivePackage__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+	'{'
+	{ after(grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePackage__Group_3__1__Impl
+	rule__PerspectivePackage__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePackageAccess().getPerspectivesAssignment_3_1()); }
+	(rule__PerspectivePackage__PerspectivesAssignment_3_1)*
+	{ after(grammarAccess.getPerspectivePackageAccess().getPerspectivesAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePackage__Group_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__Group_3__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_2()); }
+	'}'
+	{ after(grammarAccess.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Perspective__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__0__Impl
+	rule__Perspective__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getPerspectiveAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveAccess().getPerspectiveAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__1__Impl
+	rule__Perspective__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getPerspectiveKeyword_1()); }
+	'perspective'
+	{ after(grammarAccess.getPerspectiveAccess().getPerspectiveKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__2__Impl
+	rule__Perspective__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getNameAssignment_2()); }
+	(rule__Perspective__NameAssignment_2)
+	{ after(grammarAccess.getPerspectiveAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__3__Impl
+	rule__Perspective__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getGroup_3()); }
+	(rule__Perspective__Group_3__0)?
+	{ after(grammarAccess.getPerspectiveAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__4__Impl
+	rule__Perspective__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getGroup_4()); }
+	(rule__Perspective__Group_4__0)?
+	{ after(grammarAccess.getPerspectiveAccess().getGroup_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__5__Impl
+	rule__Perspective__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5()); }
+	(rule__Perspective__UnorderedGroup_5)
+	{ after(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__6__Impl
+	rule__Perspective__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getLeftCurlyBracketKeyword_6()); }
+	'{'
+	{ after(grammarAccess.getPerspectiveAccess().getLeftCurlyBracketKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__7__Impl
+	rule__Perspective__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getElementsAssignment_7()); }
+	(rule__Perspective__ElementsAssignment_7)*
+	{ after(grammarAccess.getPerspectiveAccess().getElementsAssignment_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__8
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__8__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8()); }
+	'}'
+	{ after(grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Perspective__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_3__0__Impl
+	rule__Perspective__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getDescriptionAssignment_3_0()); }
+	(rule__Perspective__DescriptionAssignment_3_0)
+	{ after(grammarAccess.getPerspectiveAccess().getDescriptionAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getDescriptionValueAssignment_3_1()); }
+	(rule__Perspective__DescriptionValueAssignment_3_1)
+	{ after(grammarAccess.getPerspectiveAccess().getDescriptionValueAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Perspective__Group_4__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_4__0__Impl
+	rule__Perspective__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_4__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getProcessKeyword_4_0()); }
+	'process'
+	{ after(grammarAccess.getPerspectiveAccess().getProcessKeyword_4_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_4__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_4__1__Impl
+	rule__Perspective__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_4__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getProcessAssignment_4_1()); }
+	(rule__Perspective__ProcessAssignment_4_1)
+	{ after(grammarAccess.getPerspectiveAccess().getProcessAssignment_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_4__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_4__2__Impl
+	rule__Perspective__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_4__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getUsertaskKeyword_4_2()); }
+	'usertask'
+	{ after(grammarAccess.getPerspectiveAccess().getUsertaskKeyword_4_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_4__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_4__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_4__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getUserTaskAssignment_4_3()); }
+	(rule__Perspective__UserTaskAssignment_4_3)
+	{ after(grammarAccess.getPerspectiveAccess().getUserTaskAssignment_4_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Perspective__Group_5_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_5_0__0__Impl
+	rule__Perspective__Group_5_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_5_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0()); }
+	'iconURI'
+	{ after(grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_5_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_5_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_5_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getIconURIAssignment_5_0_1()); }
+	(rule__Perspective__IconURIAssignment_5_0_1)
+	{ after(grammarAccess.getPerspectiveAccess().getIconURIAssignment_5_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Perspective__Group_5_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_5_1__0__Impl
+	rule__Perspective__Group_5_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_5_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getAccessibilityKeyword_5_1_0()); }
+	'accessibility'
+	{ after(grammarAccess.getPerspectiveAccess().getAccessibilityKeyword_5_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_5_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_5_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_5_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseAssignment_5_1_1()); }
+	(rule__Perspective__AccessibilityPhraseAssignment_5_1_1)
+	{ after(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseAssignment_5_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Perspective__Group_5_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_5_2__0__Impl
+	rule__Perspective__Group_5_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_5_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getToolbarKeyword_5_2_0()); }
+	'toolbar'
+	{ after(grammarAccess.getPerspectiveAccess().getToolbarKeyword_5_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_5_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_5_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_5_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getToolbarAssignment_5_2_1()); }
+	(rule__Perspective__ToolbarAssignment_5_2_1)
+	{ after(grammarAccess.getPerspectiveAccess().getToolbarAssignment_5_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSashContainer__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group__0__Impl
+	rule__PerspectiveSashContainer__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getPerspectiveSashContainerAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getPerspectiveSashContainerAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group__1__Impl
+	rule__PerspectiveSashContainer__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getSashContainerKeyword_1()); }
+	'sashContainer'
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getSashContainerKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group__2__Impl
+	rule__PerspectiveSashContainer__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getElementIdAssignment_2()); }
+	(rule__PerspectiveSashContainer__ElementIdAssignment_2)
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getElementIdAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group__3__Impl
+	rule__PerspectiveSashContainer__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3()); }
+	(rule__PerspectiveSashContainer__UnorderedGroup_3)
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group__4__Impl
+	rule__PerspectiveSashContainer__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getLeftCurlyBracketKeyword_4()); }
+	'{'
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getLeftCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group__5__Impl
+	rule__PerspectiveSashContainer__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getElementsAssignment_5()); }
+	(rule__PerspectiveSashContainer__ElementsAssignment_5)*
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getElementsAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getRightCurlyBracketKeyword_6()); }
+	'}'
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getRightCurlyBracketKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSashContainer__Group_3_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group_3_0__0__Impl
+	rule__PerspectiveSashContainer__Group_3_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationKeyword_3_0_0()); }
+	'orientation'
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getOrientationKeyword_3_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group_3_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationAssignment_3_0_1()); }
+	(rule__PerspectiveSashContainer__OrientationAssignment_3_0_1)
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getOrientationAssignment_3_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSashContainer__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group_3_1__0__Impl
+	rule__PerspectiveSashContainer__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementKeyword_3_1_0()); }
+	'selectedElement'
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementAssignment_3_1_1()); }
+	(rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1)
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSashContainer__Group_3_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group_3_2__0__Impl
+	rule__PerspectiveSashContainer__Group_3_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getSpaceVolumeKeyword_3_2_0()); }
+	'spaceVolume'
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getSpaceVolumeKeyword_3_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group_3_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataAssignment_3_2_1()); }
+	(rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1)
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataAssignment_3_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSashContainer__Group_3_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group_3_3__0__Impl
+	rule__PerspectiveSashContainer__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityKeyword_3_3_0()); }
+	'accessibility'
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityKeyword_3_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__Group_3_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseAssignment_3_3_1()); }
+	(rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1)
+	{ after(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseAssignment_3_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePartStack__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group__0__Impl
+	rule__PerspectivePartStack__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getPerspectivePartStackAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectivePartStackAccess().getPerspectivePartStackAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group__1__Impl
+	rule__PerspectivePartStack__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getPartStackKeyword_1()); }
+	'partStack'
+	{ after(grammarAccess.getPerspectivePartStackAccess().getPartStackKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group__2__Impl
+	rule__PerspectivePartStack__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getElementIdAssignment_2()); }
+	(rule__PerspectivePartStack__ElementIdAssignment_2)
+	{ after(grammarAccess.getPerspectivePartStackAccess().getElementIdAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group__3__Impl
+	rule__PerspectivePartStack__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3()); }
+	(rule__PerspectivePartStack__UnorderedGroup_3)
+	{ after(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group__4__Impl
+	rule__PerspectivePartStack__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4()); }
+	'{'
+	{ after(grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group__5__Impl
+	rule__PerspectivePartStack__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getElementsAssignment_5()); }
+	(rule__PerspectivePartStack__ElementsAssignment_5)*
+	{ after(grammarAccess.getPerspectivePartStackAccess().getElementsAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6()); }
+	'}'
+	{ after(grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePartStack__Group_3_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group_3_0__0__Impl
+	rule__PerspectivePartStack__Group_3_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementKeyword_3_0_0()); }
+	'selectedElement'
+	{ after(grammarAccess.getPerspectivePartStackAccess().getSelectedElementKeyword_3_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group_3_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementAssignment_3_0_1()); }
+	(rule__PerspectivePartStack__SelectedElementAssignment_3_0_1)
+	{ after(grammarAccess.getPerspectivePartStackAccess().getSelectedElementAssignment_3_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePartStack__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group_3_1__0__Impl
+	rule__PerspectivePartStack__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0()); }
+	'spaceVolume'
+	{ after(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1()); }
+	(rule__PerspectivePartStack__ContainerDataAssignment_3_1_1)
+	{ after(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePartStack__Group_3_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group_3_2__0__Impl
+	rule__PerspectivePartStack__Group_3_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0()); }
+	'accessibility'
+	{ after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group_3_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1()); }
+	(rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1)
+	{ after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePart__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group__0__Impl
+	rule__PerspectivePart__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group__1__Impl
+	rule__PerspectivePart__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getPartKeyword_1()); }
+	'part'
+	{ after(grammarAccess.getPerspectivePartAccess().getPartKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group__2__Impl
+	rule__PerspectivePart__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getElementIdAssignment_2()); }
+	(rule__PerspectivePart__ElementIdAssignment_2)
+	{ after(grammarAccess.getPerspectivePartAccess().getElementIdAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3()); }
+	(rule__PerspectivePart__UnorderedGroup_3)
+	{ after(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePart__Group_3_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group_3_0__0__Impl
+	rule__PerspectivePart__Group_3_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_0_0()); }
+	'spaceVolume'
+	{ after(grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group_3_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getContainerDataAssignment_3_0_1()); }
+	(rule__PerspectivePart__ContainerDataAssignment_3_0_1)
+	{ after(grammarAccess.getPerspectivePartAccess().getContainerDataAssignment_3_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePart__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group_3_1__0__Impl
+	rule__PerspectivePart__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_1_0()); }
+	'accessibility'
+	{ after(grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseAssignment_3_1_1()); }
+	(rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1)
+	{ after(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePart__Group_3_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group_3_2__0__Impl
+	rule__PerspectivePart__Group_3_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0()); }
+	'iconURI'
+	{ after(grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group_3_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getIconURIAssignment_3_2_1()); }
+	(rule__PerspectivePart__IconURIAssignment_3_2_1)
+	{ after(grammarAccess.getPerspectivePartAccess().getIconURIAssignment_3_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePart__Group_3_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group_3_3__0__Impl
+	rule__PerspectivePart__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0()); }
+	'view'
+	{ after(grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__Group_3_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartAccess().getViewAssignment_3_3_1()); }
+	(rule__PerspectivePart__ViewAssignment_3_3_1)
+	{ after(grammarAccess.getPerspectivePartAccess().getViewAssignment_3_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSelection__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSelection__Group__0__Impl
+	rule__PerspectiveSelection__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSelection__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSelection__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSelection__Group__1__Impl
+	rule__PerspectiveSelection__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSelection__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1()); }
+	'select'
+	{ after(grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSelection__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSelection__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSelection__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSelectionAccess().getRefAssignment_2()); }
+	(rule__PerspectiveSelection__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveSelectionAccess().getRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveTable__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveTable__Group__0__Impl
+	rule__PerspectiveTable__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTable__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTable__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveTable__Group__1__Impl
+	rule__PerspectiveTable__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTable__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveTableAccess().getTableKeyword_1()); }
+	'table'
+	{ after(grammarAccess.getPerspectiveTableAccess().getTableKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTable__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveTable__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTable__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveTableAccess().getRefAssignment_2()); }
+	(rule__PerspectiveTable__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveTableAccess().getRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveGrid__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveGrid__Group__0__Impl
+	rule__PerspectiveGrid__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveGrid__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveGrid__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveGrid__Group__1__Impl
+	rule__PerspectiveGrid__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveGrid__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveGridAccess().getGridKeyword_1()); }
+	'grid'
+	{ after(grammarAccess.getPerspectiveGridAccess().getGridKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveGrid__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveGrid__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveGrid__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveGridAccess().getRefAssignment_2()); }
+	(rule__PerspectiveGrid__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveGridAccess().getRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveBean__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBean__Group__0__Impl
+	rule__PerspectiveBean__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBean__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBean__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBean__Group__1__Impl
+	rule__PerspectiveBean__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBean__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1()); }
+	'bean'
+	{ after(grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBean__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBean__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBean__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2()); }
+	(rule__PerspectiveBean__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveChart__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveChart__Group__0__Impl
+	rule__PerspectiveChart__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveChart__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveChart__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveChart__Group__1__Impl
+	rule__PerspectiveChart__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveChart__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveChartAccess().getChartKeyword_1()); }
+	'chart'
+	{ after(grammarAccess.getPerspectiveChartAccess().getChartKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveChart__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveChart__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveChart__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveChartAccess().getRefAssignment_2()); }
+	(rule__PerspectiveChart__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveChartAccess().getRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveReport__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveReport__Group__0__Impl
+	rule__PerspectiveReport__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveReport__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveReport__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveReport__Group__1__Impl
+	rule__PerspectiveReport__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveReport__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveReportAccess().getReportKeyword_1()); }
+	'report'
+	{ after(grammarAccess.getPerspectiveReportAccess().getReportKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveReport__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveReport__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveReport__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveReportAccess().getRefAssignment_2()); }
+	(rule__PerspectiveReport__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveReportAccess().getRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveOrganization__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveOrganization__Group__0__Impl
+	rule__PerspectiveOrganization__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveOrganization__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveOrganization__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveOrganization__Group__1__Impl
+	rule__PerspectiveOrganization__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveOrganization__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1()); }
+	'organigram'
+	{ after(grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveOrganization__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveOrganization__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveOrganization__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveOrganizationAccess().getRefAssignment_2()); }
+	(rule__PerspectiveOrganization__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveOrganizationAccess().getRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveTopology__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveTopology__Group__0__Impl
+	rule__PerspectiveTopology__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTopology__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTopology__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveTopology__Group__1__Impl
+	rule__PerspectiveTopology__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTopology__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1()); }
+	'topology'
+	{ after(grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTopology__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveTopology__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTopology__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveTopologyAccess().getRefAssignment_2()); }
+	(rule__PerspectiveTopology__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveTopologyAccess().getRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveDialog__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveDialog__Group__0__Impl
+	rule__PerspectiveDialog__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDialog__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDialog__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveDialog__Group__1__Impl
+	rule__PerspectiveDialog__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDialog__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1()); }
+	'dialog'
+	{ after(grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDialog__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveDialog__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDialog__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveDialogAccess().getRefAssignment_2()); }
+	(rule__PerspectiveDialog__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveDialogAccess().getRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveBPMN__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBPMN__Group__0__Impl
+	rule__PerspectiveBPMN__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBPMN__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBPMN__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBPMN__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBPMN__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); }
+	'bpmn'
+	{ after(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveKanban__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveKanban__Group__0__Impl
+	rule__PerspectiveKanban__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveKanbanAccess().getPerspectiveKanbanAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveKanbanAccess().getPerspectiveKanbanAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveKanban__Group__1__Impl
+	rule__PerspectiveKanban__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1()); }
+	'kanban'
+	{ after(grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveKanban__Group__2__Impl
+	rule__PerspectiveKanban__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2()); }
+	'of'
+	{ after(grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveKanban__Group__3__Impl
+	rule__PerspectiveKanban__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefAssignment_3()); }
+	(rule__PerspectiveKanban__DtoRefAssignment_3)
+	{ after(grammarAccess.getPerspectiveKanbanAccess().getDtoRefAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveKanban__Group__4__Impl
+	rule__PerspectiveKanban__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4()); }
+	'card'
+	{ after(grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveKanban__Group__5__Impl
+	rule__PerspectiveKanban__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveKanbanAccess().getCardRefAssignment_5()); }
+	(rule__PerspectiveKanban__CardRefAssignment_5)
+	{ after(grammarAccess.getPerspectiveKanbanAccess().getCardRefAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveKanban__Group__6__Impl
+	rule__PerspectiveKanban__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6()); }
+	'dialog'
+	{ after(grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveKanban__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefAssignment_7()); }
+	(rule__PerspectiveKanban__DialogRefAssignment_7)
+	{ after(grammarAccess.getPerspectiveKanbanAccess().getDialogRefAssignment_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveWelcome__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveWelcome__Group__0__Impl
+	rule__PerspectiveWelcome__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveWelcome__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveWelcomeAccess().getPerspectiveWelcomeAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveWelcomeAccess().getPerspectiveWelcomeAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveWelcome__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveWelcome__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveWelcome__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1()); }
+	'welcome'
+	{ after(grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSearch__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__Group__0__Impl
+	rule__PerspectiveSearch__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSearchAccess().getPerspectiveSearchAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveSearchAccess().getPerspectiveSearchAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__Group__1__Impl
+	rule__PerspectiveSearch__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1()); }
+	'search'
+	{ after(grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__Group__2__Impl
+	rule__PerspectiveSearch__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSearchAccess().getInKeyword_2()); }
+	'in'
+	{ after(grammarAccess.getPerspectiveSearchAccess().getInKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__Group__3__Impl
+	rule__PerspectiveSearch__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSearchAccess().getDtoRefAssignment_3()); }
+	(rule__PerspectiveSearch__DtoRefAssignment_3)
+	{ after(grammarAccess.getPerspectiveSearchAccess().getDtoRefAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4()); }
+	(rule__PerspectiveSearch__UnorderedGroup_4)
+	{ after(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSearch__Group_4_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__Group_4_0__0__Impl
+	rule__PerspectiveSearch__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group_4_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0()); }
+	'depth'
+	{ after(grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group_4_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__Group_4_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group_4_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSearchAccess().getDepthAssignment_4_0_1()); }
+	(rule__PerspectiveSearch__DepthAssignment_4_0_1)
+	{ after(grammarAccess.getPerspectiveSearchAccess().getDepthAssignment_4_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSearch__Group_4_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__Group_4_1__0__Impl
+	rule__PerspectiveSearch__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group_4_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0()); }
+	'filterColumns'
+	{ after(grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group_4_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__Group_4_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__Group_4_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveSearchAccess().getFilterColsAssignment_4_1_1()); }
+	(rule__PerspectiveSearch__FilterColsAssignment_4_1_1)
+	{ after(grammarAccess.getPerspectiveSearchAccess().getFilterColsAssignment_4_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveDataInterchange__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveDataInterchange__Group__0__Impl
+	rule__PerspectiveDataInterchange__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDataInterchange__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveDataInterchangeAccess().getPerspectiveDataInterchangeAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveDataInterchangeAccess().getPerspectiveDataInterchangeAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDataInterchange__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveDataInterchange__Group__1__Impl
+	rule__PerspectiveDataInterchange__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDataInterchange__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1()); }
+	'dataInterchange'
+	{ after(grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDataInterchange__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveDataInterchange__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDataInterchange__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefAssignment_2()); }
+	(rule__PerspectiveDataInterchange__RefAssignment_2)
+	{ after(grammarAccess.getPerspectiveDataInterchangeAccess().getRefAssignment_2()); }
+)
+;
+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__Perspective__UnorderedGroup_5
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+	}
+:
+	rule__Perspective__UnorderedGroup_5__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__UnorderedGroup_5__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectiveAccess().getGroup_5_0()); }
+					(rule__Perspective__Group_5_0__0)
+					{ after(grammarAccess.getPerspectiveAccess().getGroup_5_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectiveAccess().getGroup_5_1()); }
+					(rule__Perspective__Group_5_1__0)
+					{ after(grammarAccess.getPerspectiveAccess().getGroup_5_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectiveAccess().getGroup_5_2()); }
+					(rule__Perspective__Group_5_2__0)
+					{ after(grammarAccess.getPerspectiveAccess().getGroup_5_2()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__UnorderedGroup_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__UnorderedGroup_5__Impl
+	rule__Perspective__UnorderedGroup_5__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__UnorderedGroup_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__UnorderedGroup_5__Impl
+	rule__Perspective__UnorderedGroup_5__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__UnorderedGroup_5__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__UnorderedGroup_5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSashContainer__UnorderedGroup_3
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+	}
+:
+	rule__PerspectiveSashContainer__UnorderedGroup_3__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); }
+					(rule__PerspectiveSashContainer__Group_3_0__0)
+					{ after(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); }
+					(rule__PerspectiveSashContainer__Group_3_1__0)
+					{ after(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); }
+					(rule__PerspectiveSashContainer__Group_3_2__0)
+					{ after(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_3()); }
+					(rule__PerspectiveSashContainer__Group_3_3__0)
+					{ after(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_3()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__UnorderedGroup_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
+	rule__PerspectiveSashContainer__UnorderedGroup_3__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__UnorderedGroup_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
+	rule__PerspectiveSashContainer__UnorderedGroup_3__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__UnorderedGroup_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
+	rule__PerspectiveSashContainer__UnorderedGroup_3__3?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__UnorderedGroup_3__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePartStack__UnorderedGroup_3
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+	}
+:
+	rule__PerspectivePartStack__UnorderedGroup_3__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__UnorderedGroup_3__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0()); }
+					(rule__PerspectivePartStack__Group_3_0__0)
+					{ after(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1()); }
+					(rule__PerspectivePartStack__Group_3_1__0)
+					{ after(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2()); }
+					(rule__PerspectivePartStack__Group_3_2__0)
+					{ after(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__UnorderedGroup_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__UnorderedGroup_3__Impl
+	rule__PerspectivePartStack__UnorderedGroup_3__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__UnorderedGroup_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__UnorderedGroup_3__Impl
+	rule__PerspectivePartStack__UnorderedGroup_3__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__UnorderedGroup_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__UnorderedGroup_3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePart__UnorderedGroup_3
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+	}
+:
+	rule__PerspectivePart__UnorderedGroup_3__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__UnorderedGroup_3__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); }
+					(rule__PerspectivePart__Group_3_0__0)
+					{ after(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); }
+					(rule__PerspectivePart__Group_3_1__0)
+					{ after(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); }
+					(rule__PerspectivePart__Group_3_2__0)
+					{ after(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); }
+					(rule__PerspectivePart__Group_3_3__0)
+					{ after(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectivePartAccess().getIsClosableAssignment_3_4()); }
+					(rule__PerspectivePart__IsClosableAssignment_3_4)
+					{ after(grammarAccess.getPerspectivePartAccess().getIsClosableAssignment_3_4()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__UnorderedGroup_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__UnorderedGroup_3__Impl
+	rule__PerspectivePart__UnorderedGroup_3__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__UnorderedGroup_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__UnorderedGroup_3__Impl
+	rule__PerspectivePart__UnorderedGroup_3__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__UnorderedGroup_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__UnorderedGroup_3__Impl
+	rule__PerspectivePart__UnorderedGroup_3__3?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__UnorderedGroup_3__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__UnorderedGroup_3__Impl
+	rule__PerspectivePart__UnorderedGroup_3__4?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__UnorderedGroup_3__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePart__UnorderedGroup_3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveSearch__UnorderedGroup_4
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+	}
+:
+	rule__PerspectiveSearch__UnorderedGroup_4__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__UnorderedGroup_4__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0()); }
+					(rule__PerspectiveSearch__Group_4_0__0)
+					{ after(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_1()); }
+					(rule__PerspectiveSearch__Group_4_1__0)
+					{ after(grammarAccess.getPerspectiveSearchAccess().getGroup_4_1()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__UnorderedGroup_4__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__UnorderedGroup_4__Impl
+	rule__PerspectiveSearch__UnorderedGroup_4__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__UnorderedGroup_4__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveSearch__UnorderedGroup_4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveModel__ImportSectionAssignment_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); }
+		ruleXImportSection
+		{ after(grammarAccess.getPerspectiveModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveModel__PackagesAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_1_0()); }
+		rulePerspectivePackage
+		{ after(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); }
+		ruleQualifiedName
+		{ after(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePackage__PerspectivesAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_1_0()); }
+		rulePerspective
+		{ after(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__DescriptionAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+			'describedBy'
+			{ after(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+		)
+		{ after(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__DescriptionValueAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+		ruleTRANSLATABLESTRING
+		{ after(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__ProcessAssignment_4_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveAccess().getProcessBlipIDTerminalRuleCall_4_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveAccess().getProcessBlipIDTerminalRuleCall_4_1_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__UserTaskAssignment_4_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__IconURIAssignment_5_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__AccessibilityPhraseAssignment_5_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__ToolbarAssignment_5_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarIDTerminalRuleCall_5_2_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarIDTerminalRuleCall_5_2_1_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__ElementsAssignment_7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0()); }
+		rulePerspectiveElement
+		{ after(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__ElementIdAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0()); }
+		RULE_ID
+		{ after(grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__OrientationAssignment_3_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0()); }
+		ruleSashOrientation
+		{ after(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementIDTerminalRuleCall_3_1_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementIDTerminalRuleCall_3_1_1_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSashContainer__ElementsAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0()); }
+		rulePerspectiveElement
+		{ after(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__ElementIdAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0()); }
+		RULE_ID
+		{ after(grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__SelectedElementAssignment_3_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0()); }
+		(
+			{ before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__ContainerDataAssignment_3_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__ElementsAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0()); }
+		rulePerspectiveElement
+		{ after(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__ElementIdAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__ContainerDataAssignment_3_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_0_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__IconURIAssignment_3_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_2_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__ViewAssignment_3_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_3_1_0()); }
+		rulePerspectiveView
+		{ after(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePart__IsClosableAssignment_3_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); }
+		(
+			{ before(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); }
+			'isClosable'
+			{ after(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); }
+		)
+		{ after(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSelection__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveSelectionAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveSelectionAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTable__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveTableAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveTableAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveGrid__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveGridAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveGridAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBean__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveChart__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveChartAccess().getRefChartIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveChartAccess().getRefChartIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveReport__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveReportAccess().getRefReportIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveReportAccess().getRefReportIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveOrganization__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveTopology__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDialog__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveDialogAccess().getRefDialogIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveDialogAccess().getRefDialogIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__DtoRefAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoCrossReference_3_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoCrossReference_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__CardRefAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogCrossReference_5_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogIDTerminalRuleCall_5_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogIDTerminalRuleCall_5_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogCrossReference_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveKanban__DialogRefAssignment_7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogCrossReference_7_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogIDTerminalRuleCall_7_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogIDTerminalRuleCall_7_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogCrossReference_7_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__DtoRefAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoCrossReference_3_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoCrossReference_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__DepthAssignment_4_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSearchAccess().getDepthINTTerminalRuleCall_4_0_1_0()); }
+		RULE_INT
+		{ after(grammarAccess.getPerspectiveSearchAccess().getDepthINTTerminalRuleCall_4_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveSearch__FilterColsAssignment_4_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveSearchAccess().getFilterColsINTTerminalRuleCall_4_1_1_0()); }
+		RULE_INT
+		{ after(grammarAccess.getPerspectiveSearchAccess().getFilterColsINTTerminalRuleCall_4_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveDataInterchange__RefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageCrossReference_2_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.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDsl.tokens b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDsl.tokens
new file mode 100644
index 0000000..73490e3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDsl.tokens
@@ -0,0 +1,235 @@
+'!'=40
+'!='=22
+'!=='=24
+'#'=94
+'%'=39
+'%='=20
+'&&'=15
+'&'=117
+'('=90
+')'=91
+'*'=36
+'**'=37
+'*='=18
+'+'=34
+'++'=41
+'+='=16
+','=92
+'-'=35
+'--'=42
+'-='=17
+'->'=28
+'.'=43
+'..'=30
+'..<'=29
+'/'=38
+'/='=19
+':'=101
+'::'=121
+';'=88
+'<'=27
+'<>'=32
+'='=13
+'=='=21
+'==='=23
+'=>'=31
+'>'=26
+'>='=25
+'?'=116
+'?.'=122
+'?:'=33
+'@'=89
+'['=95
+']'=93
+'accessibility'=60
+'as'=97
+'bean'=72
+'bpmn'=78
+'card'=81
+'case'=103
+'catch'=115
+'chart'=73
+'dataInterchange'=87
+'default'=102
+'depth'=85
+'describedBy'=118
+'dialog'=77
+'do'=106
+'else'=99
+'extends'=45
+'extension'=48
+'false'=50
+'filterColumns'=86
+'finally'=113
+'for'=104
+'grid'=71
+'horizontal'=51
+'iconURI'=59
+'if'=98
+'import'=47
+'in'=84
+'instanceof'=96
+'isClosable'=119
+'kanban'=79
+'new'=107
+'ns'=120
+'null'=108
+'of'=80
+'organigram'=75
+'orientation'=63
+'package'=53
+'part'=67
+'partStack'=66
+'perspective'=56
+'process'=57
+'report'=74
+'return'=111
+'sashContainer'=62
+'search'=83
+'select'=69
+'selectedElement'=64
+'spaceVolume'=65
+'static'=46
+'super'=49
+'switch'=100
+'synchronized'=114
+'table'=70
+'throw'=110
+'toolbar'=61
+'topology'=76
+'true'=125
+'try'=112
+'typeof'=109
+'usertask'=58
+'val'=44
+'var'=124
+'vertical'=52
+'view'=68
+'welcome'=82
+'while'=105
+'{'=54
+'|'=123
+'||'=14
+'}'=55
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=6
+RULE_ID=4
+RULE_INT=7
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=5
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__13=13
+T__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDslLexer.java b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDslLexer.java
new file mode 100644
index 0000000..a678ebe
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDslLexer.java
@@ -0,0 +1,4893 @@
+package org.eclipse.osbp.xtext.perspective.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 InternalPerspectiveDslLexer extends Lexer {
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int 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__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    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__65=65;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalPerspectiveDslLexer() {;} 
+    public InternalPerspectiveDslLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalPerspectiveDslLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "InternalPerspectiveDsl.g"; }
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:11:7: ( '=' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:12:7: ( '||' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:13:7: ( '&&' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:14:7: ( '+=' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:15:7: ( '-=' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:16:7: ( '*=' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:17:7: ( '/=' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:18:7: ( '%=' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:19:7: ( '==' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:20:7: ( '!=' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:21:7: ( '===' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:22:7: ( '!==' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:23:7: ( '>=' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:24:7: ( '>' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:25:7: ( '<' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:26:7: ( '->' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:27:7: ( '..<' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:28:7: ( '..' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:29:7: ( '=>' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:30:7: ( '<>' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:31:7: ( '?:' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:32:7: ( '+' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:33:7: ( '-' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:34:7: ( '*' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:35:7: ( '**' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:36:7: ( '/' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:37:7: ( '%' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:38:7: ( '!' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:39:7: ( '++' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:40:7: ( '--' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:41:7: ( '.' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:42:7: ( 'val' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:43:7: ( 'extends' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:44:7: ( 'static' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:45:7: ( 'import' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:46:7: ( 'extension' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:47:7: ( 'super' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:48:7: ( 'false' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:49:7: ( 'horizontal' )
+            // InternalPerspectiveDsl.g:49:9: 'horizontal'
+            {
+            match("horizontal"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:50:7: ( 'vertical' )
+            // InternalPerspectiveDsl.g:50:9: 'vertical'
+            {
+            match("vertical"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:51:7: ( 'package' )
+            // InternalPerspectiveDsl.g:51:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:52:7: ( '{' )
+            // InternalPerspectiveDsl.g:52:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:53:7: ( '}' )
+            // InternalPerspectiveDsl.g:53:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:54:7: ( 'perspective' )
+            // InternalPerspectiveDsl.g:54:9: 'perspective'
+            {
+            match("perspective"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:55:7: ( 'process' )
+            // InternalPerspectiveDsl.g:55:9: 'process'
+            {
+            match("process"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:56:7: ( 'usertask' )
+            // InternalPerspectiveDsl.g:56:9: 'usertask'
+            {
+            match("usertask"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:57:7: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:57:9: 'iconURI'
+            {
+            match("iconURI"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:58:7: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:58:9: 'accessibility'
+            {
+            match("accessibility"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:59:7: ( 'toolbar' )
+            // InternalPerspectiveDsl.g:59:9: 'toolbar'
+            {
+            match("toolbar"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:60:7: ( 'sashContainer' )
+            // InternalPerspectiveDsl.g:60:9: 'sashContainer'
+            {
+            match("sashContainer"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:61:7: ( 'orientation' )
+            // InternalPerspectiveDsl.g:61:9: 'orientation'
+            {
+            match("orientation"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:62:7: ( 'selectedElement' )
+            // InternalPerspectiveDsl.g:62:9: 'selectedElement'
+            {
+            match("selectedElement"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:63:7: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:63:9: 'spaceVolume'
+            {
+            match("spaceVolume"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:64:7: ( 'partStack' )
+            // InternalPerspectiveDsl.g:64:9: 'partStack'
+            {
+            match("partStack"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:65:7: ( 'part' )
+            // InternalPerspectiveDsl.g:65:9: 'part'
+            {
+            match("part"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:66:7: ( 'view' )
+            // InternalPerspectiveDsl.g:66:9: 'view'
+            {
+            match("view"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:67:7: ( 'select' )
+            // InternalPerspectiveDsl.g:67:9: 'select'
+            {
+            match("select"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:68:7: ( 'table' )
+            // InternalPerspectiveDsl.g:68:9: 'table'
+            {
+            match("table"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:69:7: ( 'grid' )
+            // InternalPerspectiveDsl.g:69:9: 'grid'
+            {
+            match("grid"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:70:7: ( 'bean' )
+            // InternalPerspectiveDsl.g:70:9: 'bean'
+            {
+            match("bean"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:71:7: ( 'chart' )
+            // InternalPerspectiveDsl.g:71:9: 'chart'
+            {
+            match("chart"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:72:7: ( 'report' )
+            // InternalPerspectiveDsl.g:72:9: 'report'
+            {
+            match("report"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:73:7: ( 'organigram' )
+            // InternalPerspectiveDsl.g:73:9: 'organigram'
+            {
+            match("organigram"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:74:7: ( 'topology' )
+            // InternalPerspectiveDsl.g:74:9: 'topology'
+            {
+            match("topology"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:75:7: ( 'dialog' )
+            // InternalPerspectiveDsl.g:75:9: 'dialog'
+            {
+            match("dialog"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:76:7: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:76:9: 'bpmn'
+            {
+            match("bpmn"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:77:7: ( 'kanban' )
+            // InternalPerspectiveDsl.g:77:9: 'kanban'
+            {
+            match("kanban"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:78:7: ( 'of' )
+            // InternalPerspectiveDsl.g:78:9: 'of'
+            {
+            match("of"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:79:7: ( 'card' )
+            // InternalPerspectiveDsl.g:79:9: 'card'
+            {
+            match("card"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:80:7: ( 'welcome' )
+            // InternalPerspectiveDsl.g:80:9: 'welcome'
+            {
+            match("welcome"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:81:7: ( 'search' )
+            // InternalPerspectiveDsl.g:81:9: 'search'
+            {
+            match("search"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:82:7: ( 'in' )
+            // InternalPerspectiveDsl.g:82:9: 'in'
+            {
+            match("in"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:83:7: ( 'depth' )
+            // InternalPerspectiveDsl.g:83:9: 'depth'
+            {
+            match("depth"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:84:7: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:84:9: 'filterColumns'
+            {
+            match("filterColumns"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:85:7: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:85:9: 'dataInterchange'
+            {
+            match("dataInterchange"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:86:7: ( ';' )
+            // InternalPerspectiveDsl.g:86:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:87:7: ( '@' )
+            // InternalPerspectiveDsl.g:87:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:88:7: ( '(' )
+            // InternalPerspectiveDsl.g:88:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:89:7: ( ')' )
+            // InternalPerspectiveDsl.g:89:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:90:7: ( ',' )
+            // InternalPerspectiveDsl.g:90:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:91:7: ( ']' )
+            // InternalPerspectiveDsl.g:91:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:92:7: ( '#' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:93:7: ( '[' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:94:7: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:94:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:95:7: ( 'as' )
+            // InternalPerspectiveDsl.g:95:9: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:96:7: ( 'if' )
+            // InternalPerspectiveDsl.g:96:9: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:97:7: ( 'else' )
+            // InternalPerspectiveDsl.g:97:9: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:98:8: ( 'switch' )
+            // InternalPerspectiveDsl.g:98:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:99:8: ( ':' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:100:8: ( 'default' )
+            // InternalPerspectiveDsl.g:100:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:101:8: ( 'case' )
+            // InternalPerspectiveDsl.g:101:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:102:8: ( 'for' )
+            // InternalPerspectiveDsl.g:102:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:103:8: ( 'while' )
+            // InternalPerspectiveDsl.g:103:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:104:8: ( 'do' )
+            // InternalPerspectiveDsl.g:104:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:105:8: ( 'new' )
+            // InternalPerspectiveDsl.g:105:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:106:8: ( 'null' )
+            // InternalPerspectiveDsl.g:106:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:107:8: ( 'typeof' )
+            // InternalPerspectiveDsl.g:107:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:108:8: ( 'throw' )
+            // InternalPerspectiveDsl.g:108:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:109:8: ( 'return' )
+            // InternalPerspectiveDsl.g:109:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:110:8: ( 'try' )
+            // InternalPerspectiveDsl.g:110:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:111:8: ( 'finally' )
+            // InternalPerspectiveDsl.g:111:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:112:8: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:112:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:113:8: ( 'catch' )
+            // InternalPerspectiveDsl.g:113:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:114:8: ( '?' )
+            // InternalPerspectiveDsl.g:114:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:115:8: ( '&' )
+            // InternalPerspectiveDsl.g:115:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:116:8: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:116:10: 'describedBy'
+            {
+            match("describedBy"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:117:8: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:117:10: 'isClosable'
+            {
+            match("isClosable"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:118:8: ( 'ns' )
+            // InternalPerspectiveDsl.g:118:10: 'ns'
+            {
+            match("ns"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:119:8: ( '::' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:120:8: ( '?.' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:121:8: ( '|' )
+            // InternalPerspectiveDsl.g:121:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:122:8: ( 'var' )
+            // InternalPerspectiveDsl.g:122:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:123:8: ( 'true' )
+            // InternalPerspectiveDsl.g:123:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:24060:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalPerspectiveDsl.g:24060:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // InternalPerspectiveDsl.g:24060: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 :
+                    // InternalPerspectiveDsl.g:24060:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:24060:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalPerspectiveDsl.g:24060: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 :
+            	    // InternalPerspectiveDsl.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);
+
+            // InternalPerspectiveDsl.g:24060: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 :
+                    // InternalPerspectiveDsl.g:24060:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // InternalPerspectiveDsl.g:24060: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 :
+                            // InternalPerspectiveDsl.g:24060: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 :
+                            // InternalPerspectiveDsl.g:24060: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;
+            // InternalPerspectiveDsl.g:24062:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalPerspectiveDsl.g:24062:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // InternalPerspectiveDsl.g:24062: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 :
+            	    // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:24064:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalPerspectiveDsl.g:24064:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // InternalPerspectiveDsl.g:24064: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 :
+                    // InternalPerspectiveDsl.g:24064: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;}
+
+                    // InternalPerspectiveDsl.g:24064:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // InternalPerspectiveDsl.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;
+
+            }
+
+            // InternalPerspectiveDsl.g:24064: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 :
+                    // InternalPerspectiveDsl.g:24064: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 :
+                    // InternalPerspectiveDsl.g:24064: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;
+            // InternalPerspectiveDsl.g:24066:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalPerspectiveDsl.g:24066:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // InternalPerspectiveDsl.g:24066:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:24066: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;}
+
+            // InternalPerspectiveDsl.g:24066: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 :
+            	    // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:24068:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalPerspectiveDsl.g:24068:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // InternalPerspectiveDsl.g:24068: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 :
+                    // InternalPerspectiveDsl.g:24068:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // InternalPerspectiveDsl.g:24068: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 :
+                    	    // InternalPerspectiveDsl.g:24068:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalPerspectiveDsl.g:24068: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);
+
+                    // InternalPerspectiveDsl.g:24068:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:24068:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:24068:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // InternalPerspectiveDsl.g:24068: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 :
+                    	    // InternalPerspectiveDsl.g:24068:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalPerspectiveDsl.g:24068: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);
+
+                    // InternalPerspectiveDsl.g:24068:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:24068: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;
+            // InternalPerspectiveDsl.g:24070:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalPerspectiveDsl.g:24070:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // InternalPerspectiveDsl.g:24070: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 :
+            	    // InternalPerspectiveDsl.g:24070: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;
+            // InternalPerspectiveDsl.g:24072:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalPerspectiveDsl.g:24072:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // InternalPerspectiveDsl.g:24072: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 :
+            	    // InternalPerspectiveDsl.g:24072: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);
+
+            // InternalPerspectiveDsl.g:24072: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 :
+                    // InternalPerspectiveDsl.g:24072:41: ( '\\r' )? '\\n'
+                    {
+                    // InternalPerspectiveDsl.g:24072:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:24072: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;
+            // InternalPerspectiveDsl.g:24074:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalPerspectiveDsl.g:24074:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // InternalPerspectiveDsl.g:24074: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 :
+            	    // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:24076:16: ( . )
+            // InternalPerspectiveDsl.g:24076:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // InternalPerspectiveDsl.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=122;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // InternalPerspectiveDsl.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // InternalPerspectiveDsl.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // InternalPerspectiveDsl.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // InternalPerspectiveDsl.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // InternalPerspectiveDsl.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // InternalPerspectiveDsl.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // InternalPerspectiveDsl.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // InternalPerspectiveDsl.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // InternalPerspectiveDsl.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // InternalPerspectiveDsl.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // InternalPerspectiveDsl.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // InternalPerspectiveDsl.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // InternalPerspectiveDsl.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // InternalPerspectiveDsl.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // InternalPerspectiveDsl.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // InternalPerspectiveDsl.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // InternalPerspectiveDsl.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // InternalPerspectiveDsl.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // InternalPerspectiveDsl.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // InternalPerspectiveDsl.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // InternalPerspectiveDsl.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // InternalPerspectiveDsl.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // InternalPerspectiveDsl.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // InternalPerspectiveDsl.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // InternalPerspectiveDsl.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // InternalPerspectiveDsl.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // InternalPerspectiveDsl.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // InternalPerspectiveDsl.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // InternalPerspectiveDsl.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // InternalPerspectiveDsl.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // InternalPerspectiveDsl.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // InternalPerspectiveDsl.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // InternalPerspectiveDsl.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // InternalPerspectiveDsl.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // InternalPerspectiveDsl.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // InternalPerspectiveDsl.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // InternalPerspectiveDsl.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // InternalPerspectiveDsl.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // InternalPerspectiveDsl.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // InternalPerspectiveDsl.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // InternalPerspectiveDsl.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // InternalPerspectiveDsl.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // InternalPerspectiveDsl.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // InternalPerspectiveDsl.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // InternalPerspectiveDsl.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // InternalPerspectiveDsl.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // InternalPerspectiveDsl.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // InternalPerspectiveDsl.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // InternalPerspectiveDsl.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // InternalPerspectiveDsl.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // InternalPerspectiveDsl.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // InternalPerspectiveDsl.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // InternalPerspectiveDsl.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // InternalPerspectiveDsl.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // InternalPerspectiveDsl.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // InternalPerspectiveDsl.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // InternalPerspectiveDsl.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // InternalPerspectiveDsl.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // InternalPerspectiveDsl.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // InternalPerspectiveDsl.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // InternalPerspectiveDsl.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // InternalPerspectiveDsl.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // InternalPerspectiveDsl.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // InternalPerspectiveDsl.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // InternalPerspectiveDsl.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // InternalPerspectiveDsl.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // InternalPerspectiveDsl.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // InternalPerspectiveDsl.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // InternalPerspectiveDsl.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // InternalPerspectiveDsl.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // InternalPerspectiveDsl.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // InternalPerspectiveDsl.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // InternalPerspectiveDsl.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // InternalPerspectiveDsl.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // InternalPerspectiveDsl.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // InternalPerspectiveDsl.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // InternalPerspectiveDsl.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // InternalPerspectiveDsl.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // InternalPerspectiveDsl.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // InternalPerspectiveDsl.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // InternalPerspectiveDsl.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // InternalPerspectiveDsl.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // InternalPerspectiveDsl.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // InternalPerspectiveDsl.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // InternalPerspectiveDsl.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // InternalPerspectiveDsl.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // InternalPerspectiveDsl.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // InternalPerspectiveDsl.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // InternalPerspectiveDsl.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // InternalPerspectiveDsl.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // InternalPerspectiveDsl.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // InternalPerspectiveDsl.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // InternalPerspectiveDsl.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // InternalPerspectiveDsl.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // InternalPerspectiveDsl.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // InternalPerspectiveDsl.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // InternalPerspectiveDsl.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // InternalPerspectiveDsl.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // InternalPerspectiveDsl.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // InternalPerspectiveDsl.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // InternalPerspectiveDsl.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // InternalPerspectiveDsl.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // InternalPerspectiveDsl.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // InternalPerspectiveDsl.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // InternalPerspectiveDsl.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // InternalPerspectiveDsl.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // InternalPerspectiveDsl.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // InternalPerspectiveDsl.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // InternalPerspectiveDsl.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // InternalPerspectiveDsl.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // InternalPerspectiveDsl.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // InternalPerspectiveDsl.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // InternalPerspectiveDsl.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // InternalPerspectiveDsl.g:1:714: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 115 :
+                // InternalPerspectiveDsl.g:1:723: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 116 :
+                // InternalPerspectiveDsl.g:1:732: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 117 :
+                // InternalPerspectiveDsl.g:1:745: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 118 :
+                // InternalPerspectiveDsl.g:1:753: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 119 :
+                // InternalPerspectiveDsl.g:1:765: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 120 :
+                // InternalPerspectiveDsl.g:1:781: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 121 :
+                // InternalPerspectiveDsl.g:1:797: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 122 :
+                // InternalPerspectiveDsl.g:1:805: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\66\1\70\1\72\1\75\1\101\1\104\1\110\1\112\1\114\1\116\1\120\1\122\1\125\7\131\2\uffff\13\131\10\uffff\1\u0091\1\131\2\u0097\1\63\5\uffff\1\u009c\26\uffff\1\u009e\5\uffff\1\u00a0\4\uffff\3\131\1\uffff\13\131\1\u00b2\1\u00b3\10\131\2\uffff\2\131\1\u00c0\6\131\1\u00ca\11\131\1\u00d9\3\131\12\uffff\2\131\1\u00df\1\uffff\1\u0097\12\uffff\1\u00e0\1\u00e1\17\131\2\uffff\4\131\1\u00f5\7\131\1\uffff\5\131\1\u0102\3\131\1\uffff\16\131\1\uffff\3\131\1\u0117\1\131\3\uffff\1\131\1\u011a\1\131\1\u011c\17\131\1\uffff\2\131\1\u012f\11\131\1\uffff\1\u0139\2\131\1\u013c\1\u013d\1\u013e\1\131\1\u0140\1\u0141\13\131\1\uffff\1\u014d\1\131\1\uffff\1\131\1\uffff\1\131\1\u0152\12\131\1\u015d\5\131\1\uffff\6\131\1\u0169\1\131\1\u016b\1\uffff\2\131\3\uffff\1\u016e\2\uffff\1\u016f\3\131\1\u0173\5\131\1\u0179\1\uffff\3\131\1\u017d\1\uffff\1\131\1\u0180\1\u0181\1\131\1\u0183\1\131\1\u0185\3\131\1\uffff\13\131\1\uffff\1\u0194\1\uffff\2\131\2\uffff\1\u0197\1\u0198\1\u0199\1\uffff\3\131\1\u019d\1\131\1\uffff\1\131\1\u01a0\1\131\1\uffff\2\131\2\uffff\1\131\1\uffff\1\131\1\uffff\1\u01a6\3\131\1\u01aa\1\131\1\u01ac\2\131\1\u01af\2\131\1\u01b2\1\131\1\uffff\2\131\3\uffff\1\u01b6\2\131\1\uffff\1\u01b9\1\u01ba\1\uffff\5\131\1\uffff\3\131\1\uffff\1\131\1\uffff\2\131\1\uffff\1\u01c6\1\131\1\uffff\1\u01c8\2\131\1\uffff\2\131\2\uffff\1\u01cd\10\131\1\u01d6\1\131\1\uffff\1\131\1\uffff\4\131\1\uffff\4\131\1\u01e1\1\u01e2\1\131\1\u01e4\1\uffff\3\131\1\u01e8\4\131\1\u01ed\1\131\2\uffff\1\131\1\uffff\1\u01f0\1\131\1\u01f2\1\uffff\1\u01f3\3\131\1\uffff\1\u01f7\1\131\1\uffff\1\131\2\uffff\1\131\1\u01fb\1\131\1\uffff\1\u01fd\1\u01fe\1\131\1\uffff\1\131\2\uffff\1\131\1\u0202\1\u0203\2\uffff";
+    static final String DFA21_eofS =
+        "\u0204\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154\1\141\1\143\1\141\1\157\1\141\2\uffff\1\163\1\143\1\141\1\146\1\162\1\145\1\141\1\145\2\141\1\145\10\uffff\1\72\1\145\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\162\1\145\1\uffff\1\164\1\163\1\141\1\160\1\163\2\141\1\151\1\156\1\160\1\157\2\44\1\103\2\154\2\162\1\143\1\162\1\157\2\uffff\1\145\1\143\1\44\1\157\1\142\1\160\1\162\1\165\1\147\1\44\1\151\1\141\1\155\1\141\1\162\1\160\1\141\1\146\1\164\1\44\1\156\1\154\1\151\12\uffff\1\167\1\154\1\44\1\uffff\1\60\12\uffff\2\44\1\164\1\167\2\145\1\164\1\145\1\150\1\145\1\162\1\143\1\164\1\143\1\157\1\156\1\164\2\uffff\1\154\1\163\1\164\1\141\1\44\1\151\1\153\1\164\1\163\1\143\1\162\1\145\1\uffff\1\154\1\157\1\154\1\145\1\157\1\44\2\145\1\141\1\uffff\1\144\2\156\1\162\1\144\1\145\1\143\1\157\1\165\1\154\1\164\1\141\1\143\1\141\1\uffff\1\142\1\143\1\154\1\44\1\154\3\uffff\1\151\1\44\1\156\1\44\1\151\1\162\1\103\2\143\1\145\1\143\1\150\1\162\1\125\1\141\1\157\2\145\1\154\1\uffff\1\172\1\141\1\44\1\160\1\145\1\164\1\163\1\142\1\154\1\145\1\157\1\167\1\uffff\1\44\2\156\3\44\1\164\2\44\1\150\2\162\1\157\1\150\1\165\1\162\1\111\1\141\1\157\1\145\1\uffff\1\44\1\143\1\uffff\1\144\1\uffff\1\143\1\44\1\157\1\164\1\150\1\126\1\150\1\162\1\164\1\122\1\156\1\163\1\44\1\162\1\154\1\157\1\147\1\164\1\uffff\1\145\1\163\1\141\1\163\1\141\1\157\1\44\1\146\1\44\1\uffff\1\164\1\151\3\uffff\1\44\2\uffff\1\44\1\164\1\156\1\147\1\44\1\154\1\151\2\156\1\155\1\44\1\uffff\1\141\1\163\1\151\1\44\1\uffff\1\156\2\44\1\157\1\44\1\157\1\44\1\111\1\143\1\141\1\uffff\1\103\1\171\1\156\1\145\1\141\1\143\2\163\1\151\1\162\1\147\1\uffff\1\44\1\uffff\1\141\1\147\2\uffff\3\44\1\uffff\1\164\1\142\1\164\1\44\1\145\1\uffff\1\154\1\44\1\157\1\uffff\1\164\1\144\2\uffff\1\154\1\uffff\1\156\1\uffff\1\44\1\145\1\142\1\157\1\44\1\164\1\44\1\143\1\164\1\44\1\153\1\142\1\44\1\171\1\uffff\1\164\1\162\3\uffff\1\44\2\145\1\uffff\2\44\1\uffff\1\156\1\141\1\105\1\165\1\151\1\uffff\1\157\2\154\1\uffff\1\141\1\uffff\1\153\1\151\1\uffff\1\44\1\151\1\uffff\1\44\1\151\1\141\1\uffff\1\144\1\162\2\uffff\1\44\1\151\1\154\1\155\1\172\1\146\1\145\1\165\1\154\1\44\1\166\1\uffff\1\154\1\uffff\1\157\1\155\1\102\1\143\1\uffff\1\156\3\145\2\44\1\155\1\44\1\uffff\1\145\1\151\1\156\1\44\1\171\1\150\1\145\1\155\1\44\1\144\2\uffff\1\156\1\uffff\1\44\1\164\1\44\1\uffff\1\44\1\141\1\162\1\145\1\uffff\1\44\1\163\1\uffff\1\171\2\uffff\1\156\1\44\1\156\1\uffff\2\44\1\147\1\uffff\1\164\2\uffff\1\145\2\44\2\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\151\1\170\1\171\1\163\2\157\1\162\2\uffff\2\163\1\171\2\162\1\160\1\150\1\145\1\157\1\141\1\150\10\uffff\1\72\1\165\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\2\162\1\145\1\uffff\1\164\1\163\1\141\1\160\1\163\1\154\1\141\1\151\1\156\1\160\1\157\2\172\1\103\1\154\1\156\4\162\1\157\2\uffff\1\145\1\143\1\172\1\160\1\142\1\160\1\162\1\171\1\151\1\172\1\151\1\141\1\155\1\141\2\164\1\141\1\163\1\164\1\172\1\156\1\154\1\151\12\uffff\1\167\1\154\1\172\1\uffff\1\154\12\uffff\2\172\1\164\1\167\2\145\1\164\1\145\1\150\1\145\1\162\1\143\1\164\1\143\1\157\1\156\1\164\2\uffff\1\154\1\163\1\164\1\141\1\172\1\151\1\153\1\164\1\163\1\143\1\162\1\145\1\uffff\1\154\1\157\1\154\1\145\1\157\1\172\2\145\1\141\1\uffff\1\144\2\156\1\162\1\144\1\145\1\143\1\157\1\165\1\154\1\164\1\141\1\143\1\141\1\uffff\1\142\1\143\1\154\1\172\1\154\3\uffff\1\151\1\172\1\156\1\172\1\151\1\162\1\103\2\143\1\145\1\143\1\150\1\162\1\125\1\141\1\157\2\145\1\154\1\uffff\1\172\1\141\1\172\1\160\1\145\1\164\1\163\1\142\1\154\1\145\1\157\1\167\1\uffff\1\172\2\156\3\172\1\164\2\172\1\150\2\162\1\157\1\150\1\165\1\162\1\111\1\141\1\157\1\145\1\uffff\1\172\1\143\1\uffff\1\163\1\uffff\1\143\1\172\1\157\1\164\1\150\1\126\1\150\1\162\1\164\1\122\1\156\1\163\1\172\1\162\1\154\1\157\1\147\1\164\1\uffff\1\145\1\163\1\141\1\163\1\141\1\157\1\172\1\146\1\172\1\uffff\1\164\1\151\3\uffff\1\172\2\uffff\1\172\1\164\1\156\1\147\1\172\1\154\1\151\2\156\1\155\1\172\1\uffff\1\141\1\163\1\151\1\172\1\uffff\1\156\2\172\1\157\1\172\1\157\1\172\1\111\1\143\1\141\1\uffff\1\103\1\171\1\156\1\145\1\141\1\143\2\163\1\151\1\162\1\147\1\uffff\1\172\1\uffff\1\141\1\147\2\uffff\3\172\1\uffff\1\164\1\142\1\164\1\172\1\145\1\uffff\1\154\1\172\1\157\1\uffff\1\164\1\144\2\uffff\1\154\1\uffff\1\156\1\uffff\1\172\1\145\1\142\1\157\1\172\1\164\1\172\1\143\1\164\1\172\1\153\1\142\1\172\1\171\1\uffff\1\164\1\162\3\uffff\1\172\2\145\1\uffff\2\172\1\uffff\1\156\1\141\1\105\1\165\1\151\1\uffff\1\157\2\154\1\uffff\1\141\1\uffff\1\153\1\151\1\uffff\1\172\1\151\1\uffff\1\172\1\151\1\141\1\uffff\1\144\1\162\2\uffff\1\172\1\151\1\154\1\155\1\172\1\146\1\145\1\165\1\154\1\172\1\166\1\uffff\1\154\1\uffff\1\157\1\155\1\102\1\143\1\uffff\1\156\3\145\2\172\1\155\1\172\1\uffff\1\145\1\151\1\156\1\172\1\171\1\150\1\145\1\155\1\172\1\144\2\uffff\1\156\1\uffff\1\172\1\164\1\172\1\uffff\1\172\1\141\1\162\1\145\1\uffff\1\172\1\163\1\uffff\1\171\2\uffff\1\156\1\172\1\156\1\uffff\2\172\1\147\1\uffff\1\164\2\uffff\1\145\2\172\2\uffff";
+    static final String DFA21_acceptS =
+        "\25\uffff\1\52\1\53\13\uffff\1\114\1\115\1\116\1\117\1\120\1\121\1\122\1\123\5\uffff\1\165\2\166\1\171\1\172\1\uffff\1\23\1\1\1\2\1\157\1\3\1\151\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\167\1\170\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\156\1\150\3\uffff\1\165\25\uffff\1\52\1\53\27\uffff\1\114\1\115\1\116\1\117\1\120\1\121\1\122\1\123\1\155\1\131\3\uffff\1\162\1\uffff\1\163\1\164\1\166\1\171\1\13\1\11\1\14\1\12\1\21\1\22\21\uffff\1\110\1\126\14\uffff\1\125\11\uffff\1\104\16\uffff\1\136\5\uffff\1\154\1\40\1\160\23\uffff\1\134\14\uffff\1\144\24\uffff\1\137\2\uffff\1\70\1\uffff\1\127\22\uffff\1\67\11\uffff\1\161\2\uffff\1\73\1\74\1\102\1\uffff\1\105\1\133\13\uffff\1\140\4\uffff\1\45\12\uffff\1\46\13\uffff\1\72\1\uffff\1\142\2\uffff\1\75\1\147\3\uffff\1\111\5\uffff\1\135\3\uffff\1\42\2\uffff\1\71\1\107\1\uffff\1\130\1\uffff\1\43\16\uffff\1\141\2\uffff\1\76\1\143\1\101\3\uffff\1\103\2\uffff\1\41\5\uffff\1\57\3\uffff\1\145\1\uffff\1\51\2\uffff\1\55\2\uffff\1\61\3\uffff\1\132\2\uffff\1\106\1\50\13\uffff\1\56\1\uffff\1\100\4\uffff\1\44\10\uffff\1\66\12\uffff\1\124\1\153\1\uffff\1\47\3\uffff\1\77\4\uffff\1\65\2\uffff\1\54\1\uffff\1\63\1\152\3\uffff\1\146\3\uffff\1\62\1\uffff\1\112\1\60\3\uffff\1\64\1\113";
+    static final String DFA21_specialS =
+        "\1\0\u0203\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\63\2\62\2\63\1\62\22\63\1\62\1\11\1\60\1\50\1\57\1\10\1\3\1\61\1\44\1\45\1\6\1\4\1\46\1\5\1\14\1\7\1\54\11\55\1\52\1\42\1\13\1\1\1\12\1\15\1\43\32\57\1\51\1\63\1\47\1\56\1\57\1\63\1\30\1\34\1\35\1\37\1\17\1\22\1\33\1\23\1\21\1\57\1\40\2\57\1\53\1\32\1\24\1\57\1\36\1\20\1\31\1\27\1\16\1\41\3\57\1\25\1\2\1\26\uff82\63",
+            "\1\64\1\65",
+            "\1\67",
+            "\1\71",
+            "\1\74\21\uffff\1\73",
+            "\1\100\17\uffff\1\76\1\77",
+            "\1\103\22\uffff\1\102",
+            "\1\106\4\uffff\1\107\15\uffff\1\105",
+            "\1\111",
+            "\1\113",
+            "\1\115",
+            "\1\117",
+            "\1\121",
+            "\1\124\13\uffff\1\123",
+            "\1\126\3\uffff\1\127\3\uffff\1\130",
+            "\1\133\13\uffff\1\132",
+            "\1\136\3\uffff\1\137\12\uffff\1\140\3\uffff\1\134\1\135\1\uffff\1\141\1\uffff\1\142",
+            "\1\144\2\uffff\1\146\6\uffff\1\143\1\145\4\uffff\1\147",
+            "\1\150\7\uffff\1\151\5\uffff\1\152",
+            "\1\153",
+            "\1\154\3\uffff\1\155\14\uffff\1\156",
+            "",
+            "",
+            "\1\161",
+            "\1\162\17\uffff\1\163",
+            "\1\165\6\uffff\1\167\6\uffff\1\164\2\uffff\1\170\6\uffff\1\166",
+            "\1\172\13\uffff\1\171",
+            "\1\173",
+            "\1\174\12\uffff\1\175",
+            "\1\177\6\uffff\1\176",
+            "\1\u0080",
+            "\1\u0083\3\uffff\1\u0082\3\uffff\1\u0081\5\uffff\1\u0084",
+            "\1\u0085",
+            "\1\u0086\2\uffff\1\u0087",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0090",
+            "\1\u0092\15\uffff\1\u0094\1\uffff\1\u0093",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\13\uffff\1\u0095\6\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\13\uffff\1\u0095",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "\1\131\34\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009b",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009d",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009f",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a1\5\uffff\1\u00a2",
+            "\1\u00a3",
+            "\1\u00a4",
+            "",
+            "\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7",
+            "\1\u00a8",
+            "\1\u00a9",
+            "\1\u00ab\12\uffff\1\u00aa",
+            "\1\u00ac",
+            "\1\u00ad",
+            "\1\u00ae",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\22\131\1\u00b1\7\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b6\1\uffff\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba\16\uffff\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "",
+            "",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00c1\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c7\3\uffff\1\u00c6",
+            "\1\u00c9\1\uffff\1\u00c8",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf\1\u00d0\1\u00d1",
+            "\1\u00d2\3\uffff\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d6\11\uffff\1\u00d5\2\uffff\1\u00d7",
+            "\1\u00d8",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\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\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "",
+            "",
+            "\1\u00f1",
+            "\1\u00f2",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0118",
+            "",
+            "",
+            "",
+            "\1\u0119",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\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\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\131\13\uffff\12\131\7\uffff\22\131\1\u012e\7\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0130",
+            "\1\u0131",
+            "\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\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\u013f",
+            "\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\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145",
+            "\1\u0146",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u014e",
+            "",
+            "\1\u014f\16\uffff\1\u0150",
+            "",
+            "\1\u0151",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u016a",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u016c",
+            "\1\u016d",
+            "",
+            "",
+            "",
+            "\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\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u017e",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\4\131\1\u017f\25\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0182",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0184",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\u0192",
+            "\1\u0193",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u0195",
+            "\1\u0196",
+            "",
+            "",
+            "\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\u019a",
+            "\1\u019b",
+            "\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\u01a1",
+            "",
+            "\1\u01a2",
+            "\1\u01a3",
+            "",
+            "",
+            "\1\u01a4",
+            "",
+            "\1\u01a5",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01ab",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\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\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01b3",
+            "",
+            "\1\u01b4",
+            "\1\u01b5",
+            "",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01b7",
+            "\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\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "",
+            "\1\u01c3",
+            "",
+            "\1\u01c4",
+            "\1\u01c5",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\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\u01cb",
+            "\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\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01d7",
+            "",
+            "\1\u01d8",
+            "",
+            "\1\u01d9",
+            "\1\u01da",
+            "\1\u01db",
+            "\1\u01dc",
+            "",
+            "\1\u01dd",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\u01e0",
+            "\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\u01e3",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01ee",
+            "",
+            "",
+            "\1\u01ef",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01f1",
+            "\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\u01f4",
+            "\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\u01f9",
+            "",
+            "",
+            "\1\u01fa",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01fc",
+            "",
+            "\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\u01ff",
+            "",
+            "\1\u0200",
+            "",
+            "",
+            "\1\u0201",
+            "\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 | 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=='h') ) {s = 19;}
+
+                        else if ( (LA21_0=='p') ) {s = 20;}
+
+                        else if ( (LA21_0=='{') ) {s = 21;}
+
+                        else if ( (LA21_0=='}') ) {s = 22;}
+
+                        else if ( (LA21_0=='u') ) {s = 23;}
+
+                        else if ( (LA21_0=='a') ) {s = 24;}
+
+                        else if ( (LA21_0=='t') ) {s = 25;}
+
+                        else if ( (LA21_0=='o') ) {s = 26;}
+
+                        else if ( (LA21_0=='g') ) {s = 27;}
+
+                        else if ( (LA21_0=='b') ) {s = 28;}
+
+                        else if ( (LA21_0=='c') ) {s = 29;}
+
+                        else if ( (LA21_0=='r') ) {s = 30;}
+
+                        else if ( (LA21_0=='d') ) {s = 31;}
+
+                        else if ( (LA21_0=='k') ) {s = 32;}
+
+                        else if ( (LA21_0=='w') ) {s = 33;}
+
+                        else if ( (LA21_0==';') ) {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=='n') ) {s = 43;}
+
+                        else if ( (LA21_0=='0') ) {s = 44;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 45;}
+
+                        else if ( (LA21_0=='^') ) {s = 46;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='j'||(LA21_0>='l' && LA21_0<='m')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 47;}
+
+                        else if ( (LA21_0=='\"') ) {s = 48;}
+
+                        else if ( (LA21_0=='\'') ) {s = 49;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 50;}
+
+                        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 = 51;}
+
+                        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.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDslParser.java b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDslParser.java
new file mode 100644
index 0000000..2939080
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src-gen/org/eclipse/osbp/xtext/perspective/ide/contentassist/antlr/internal/InternalPerspectiveDslParser.java
@@ -0,0 +1,83247 @@
+package org.eclipse.osbp.xtext.perspective.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.perspective.services.PerspectiveDslGrammarAccess;
+
+
+
+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 InternalPerspectiveDslParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'horizontal'", "'vertical'", "'package'", "'{'", "'}'", "'perspective'", "'process'", "'usertask'", "'iconURI'", "'accessibility'", "'toolbar'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'part'", "'view'", "'select'", "'table'", "'grid'", "'bean'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'bpmn'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'describedBy'", "'isClosable'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+    };
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int 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__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    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__65=65;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+
+        public InternalPerspectiveDslParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalPerspectiveDslParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalPerspectiveDslParser.tokenNames; }
+    public String getGrammarFileName() { return "InternalPerspectiveDsl.g"; }
+
+
+    	private PerspectiveDslGrammarAccess grammarAccess;
+
+    	public void setGrammarAccess(PerspectiveDslGrammarAccess grammarAccess) {
+    		this.grammarAccess = grammarAccess;
+    	}
+
+    	@Override
+    	protected Grammar getGrammar() {
+    		return grammarAccess.getGrammar();
+    	}
+
+    	@Override
+    	protected String getValueForTokenName(String tokenName) {
+    		return tokenName;
+    	}
+
+
+
+    // $ANTLR start "entryRulePerspectiveModel"
+    // InternalPerspectiveDsl.g:67:1: entryRulePerspectiveModel : rulePerspectiveModel EOF ;
+    public final void entryRulePerspectiveModel() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:68:1: ( rulePerspectiveModel EOF )
+            // InternalPerspectiveDsl.g:69:1: rulePerspectiveModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveModelRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveModel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveModelRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveModel"
+
+
+    // $ANTLR start "rulePerspectiveModel"
+    // InternalPerspectiveDsl.g:76:1: rulePerspectiveModel : ( ( rule__PerspectiveModel__Group__0 ) ) ;
+    public final void rulePerspectiveModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:80:2: ( ( ( rule__PerspectiveModel__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:81:2: ( ( rule__PerspectiveModel__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:81:2: ( ( rule__PerspectiveModel__Group__0 ) )
+            // InternalPerspectiveDsl.g:82:3: ( rule__PerspectiveModel__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveModelAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:83:3: ( rule__PerspectiveModel__Group__0 )
+            // InternalPerspectiveDsl.g:83:4: rule__PerspectiveModel__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveModel__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveModelAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveModel"
+
+
+    // $ANTLR start "entryRulePerspectivePackage"
+    // InternalPerspectiveDsl.g:92:1: entryRulePerspectivePackage : rulePerspectivePackage EOF ;
+    public final void entryRulePerspectivePackage() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:93:1: ( rulePerspectivePackage EOF )
+            // InternalPerspectiveDsl.g:94:1: rulePerspectivePackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectivePackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectivePackage"
+
+
+    // $ANTLR start "rulePerspectivePackage"
+    // InternalPerspectiveDsl.g:101:1: rulePerspectivePackage : ( ( rule__PerspectivePackage__Group__0 ) ) ;
+    public final void rulePerspectivePackage() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:105:2: ( ( ( rule__PerspectivePackage__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:106:2: ( ( rule__PerspectivePackage__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:106:2: ( ( rule__PerspectivePackage__Group__0 ) )
+            // InternalPerspectiveDsl.g:107:3: ( rule__PerspectivePackage__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:108:3: ( rule__PerspectivePackage__Group__0 )
+            // InternalPerspectiveDsl.g:108:4: rule__PerspectivePackage__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePackage__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectivePackage"
+
+
+    // $ANTLR start "entryRulePerspective"
+    // InternalPerspectiveDsl.g:117:1: entryRulePerspective : rulePerspective EOF ;
+    public final void entryRulePerspective() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:118:1: ( rulePerspective EOF )
+            // InternalPerspectiveDsl.g:119:1: rulePerspective EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspective();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspective"
+
+
+    // $ANTLR start "rulePerspective"
+    // InternalPerspectiveDsl.g:126:1: rulePerspective : ( ( rule__Perspective__Group__0 ) ) ;
+    public final void rulePerspective() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:130:2: ( ( ( rule__Perspective__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:131:2: ( ( rule__Perspective__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:131:2: ( ( rule__Perspective__Group__0 ) )
+            // InternalPerspectiveDsl.g:132:3: ( rule__Perspective__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:133:3: ( rule__Perspective__Group__0 )
+            // InternalPerspectiveDsl.g:133:4: rule__Perspective__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspective"
+
+
+    // $ANTLR start "entryRulePerspectiveElement"
+    // InternalPerspectiveDsl.g:142:1: entryRulePerspectiveElement : rulePerspectiveElement EOF ;
+    public final void entryRulePerspectiveElement() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:143:1: ( rulePerspectiveElement EOF )
+            // InternalPerspectiveDsl.g:144:1: rulePerspectiveElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveElementRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveElementRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveElement"
+
+
+    // $ANTLR start "rulePerspectiveElement"
+    // InternalPerspectiveDsl.g:151:1: rulePerspectiveElement : ( ( rule__PerspectiveElement__Alternatives ) ) ;
+    public final void rulePerspectiveElement() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:155:2: ( ( ( rule__PerspectiveElement__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:156:2: ( ( rule__PerspectiveElement__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:156:2: ( ( rule__PerspectiveElement__Alternatives ) )
+            // InternalPerspectiveDsl.g:157:3: ( rule__PerspectiveElement__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveElementAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:158:3: ( rule__PerspectiveElement__Alternatives )
+            // InternalPerspectiveDsl.g:158:4: rule__PerspectiveElement__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveElement__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveElementAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveElement"
+
+
+    // $ANTLR start "entryRulePerspectiveSashContainer"
+    // InternalPerspectiveDsl.g:167:1: entryRulePerspectiveSashContainer : rulePerspectiveSashContainer EOF ;
+    public final void entryRulePerspectiveSashContainer() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:168:1: ( rulePerspectiveSashContainer EOF )
+            // InternalPerspectiveDsl.g:169:1: rulePerspectiveSashContainer EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveSashContainer();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveSashContainer"
+
+
+    // $ANTLR start "rulePerspectiveSashContainer"
+    // InternalPerspectiveDsl.g:176:1: rulePerspectiveSashContainer : ( ( rule__PerspectiveSashContainer__Group__0 ) ) ;
+    public final void rulePerspectiveSashContainer() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:180:2: ( ( ( rule__PerspectiveSashContainer__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:181:2: ( ( rule__PerspectiveSashContainer__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:181:2: ( ( rule__PerspectiveSashContainer__Group__0 ) )
+            // InternalPerspectiveDsl.g:182:3: ( rule__PerspectiveSashContainer__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:183:3: ( rule__PerspectiveSashContainer__Group__0 )
+            // InternalPerspectiveDsl.g:183:4: rule__PerspectiveSashContainer__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveSashContainer"
+
+
+    // $ANTLR start "entryRulePerspectivePartStack"
+    // InternalPerspectiveDsl.g:192:1: entryRulePerspectivePartStack : rulePerspectivePartStack EOF ;
+    public final void entryRulePerspectivePartStack() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:193:1: ( rulePerspectivePartStack EOF )
+            // InternalPerspectiveDsl.g:194:1: rulePerspectivePartStack EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectivePartStack();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectivePartStack"
+
+
+    // $ANTLR start "rulePerspectivePartStack"
+    // InternalPerspectiveDsl.g:201:1: rulePerspectivePartStack : ( ( rule__PerspectivePartStack__Group__0 ) ) ;
+    public final void rulePerspectivePartStack() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:205:2: ( ( ( rule__PerspectivePartStack__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:206:2: ( ( rule__PerspectivePartStack__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:206:2: ( ( rule__PerspectivePartStack__Group__0 ) )
+            // InternalPerspectiveDsl.g:207:3: ( rule__PerspectivePartStack__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:208:3: ( rule__PerspectivePartStack__Group__0 )
+            // InternalPerspectiveDsl.g:208:4: rule__PerspectivePartStack__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectivePartStack"
+
+
+    // $ANTLR start "entryRulePerspectivePart"
+    // InternalPerspectiveDsl.g:217:1: entryRulePerspectivePart : rulePerspectivePart EOF ;
+    public final void entryRulePerspectivePart() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:218:1: ( rulePerspectivePart EOF )
+            // InternalPerspectiveDsl.g:219:1: rulePerspectivePart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectivePart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectivePart"
+
+
+    // $ANTLR start "rulePerspectivePart"
+    // InternalPerspectiveDsl.g:226:1: rulePerspectivePart : ( ( rule__PerspectivePart__Group__0 ) ) ;
+    public final void rulePerspectivePart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:230:2: ( ( ( rule__PerspectivePart__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:231:2: ( ( rule__PerspectivePart__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:231:2: ( ( rule__PerspectivePart__Group__0 ) )
+            // InternalPerspectiveDsl.g:232:3: ( rule__PerspectivePart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:233:3: ( rule__PerspectivePart__Group__0 )
+            // InternalPerspectiveDsl.g:233:4: rule__PerspectivePart__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectivePart"
+
+
+    // $ANTLR start "entryRulePerspectiveView"
+    // InternalPerspectiveDsl.g:242:1: entryRulePerspectiveView : rulePerspectiveView EOF ;
+    public final void entryRulePerspectiveView() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:243:1: ( rulePerspectiveView EOF )
+            // InternalPerspectiveDsl.g:244:1: rulePerspectiveView EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveViewRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveView();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveViewRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveView"
+
+
+    // $ANTLR start "rulePerspectiveView"
+    // InternalPerspectiveDsl.g:251:1: rulePerspectiveView : ( ( rule__PerspectiveView__Alternatives ) ) ;
+    public final void rulePerspectiveView() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:255:2: ( ( ( rule__PerspectiveView__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:256:2: ( ( rule__PerspectiveView__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:256:2: ( ( rule__PerspectiveView__Alternatives ) )
+            // InternalPerspectiveDsl.g:257:3: ( rule__PerspectiveView__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveViewAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:258:3: ( rule__PerspectiveView__Alternatives )
+            // InternalPerspectiveDsl.g:258:4: rule__PerspectiveView__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveView__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveViewAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveView"
+
+
+    // $ANTLR start "entryRulePerspectiveSelection"
+    // InternalPerspectiveDsl.g:267:1: entryRulePerspectiveSelection : rulePerspectiveSelection EOF ;
+    public final void entryRulePerspectiveSelection() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:268:1: ( rulePerspectiveSelection EOF )
+            // InternalPerspectiveDsl.g:269:1: rulePerspectiveSelection EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSelectionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveSelection();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSelectionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveSelection"
+
+
+    // $ANTLR start "rulePerspectiveSelection"
+    // InternalPerspectiveDsl.g:276:1: rulePerspectiveSelection : ( ( rule__PerspectiveSelection__Group__0 ) ) ;
+    public final void rulePerspectiveSelection() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:280:2: ( ( ( rule__PerspectiveSelection__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:281:2: ( ( rule__PerspectiveSelection__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:281:2: ( ( rule__PerspectiveSelection__Group__0 ) )
+            // InternalPerspectiveDsl.g:282:3: ( rule__PerspectiveSelection__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSelectionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:283:3: ( rule__PerspectiveSelection__Group__0 )
+            // InternalPerspectiveDsl.g:283:4: rule__PerspectiveSelection__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSelection__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSelectionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveSelection"
+
+
+    // $ANTLR start "entryRulePerspectiveTable"
+    // InternalPerspectiveDsl.g:292:1: entryRulePerspectiveTable : rulePerspectiveTable EOF ;
+    public final void entryRulePerspectiveTable() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:293:1: ( rulePerspectiveTable EOF )
+            // InternalPerspectiveDsl.g:294:1: rulePerspectiveTable EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTableRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveTable();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTableRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveTable"
+
+
+    // $ANTLR start "rulePerspectiveTable"
+    // InternalPerspectiveDsl.g:301:1: rulePerspectiveTable : ( ( rule__PerspectiveTable__Group__0 ) ) ;
+    public final void rulePerspectiveTable() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:305:2: ( ( ( rule__PerspectiveTable__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:306:2: ( ( rule__PerspectiveTable__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:306:2: ( ( rule__PerspectiveTable__Group__0 ) )
+            // InternalPerspectiveDsl.g:307:3: ( rule__PerspectiveTable__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTableAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:308:3: ( rule__PerspectiveTable__Group__0 )
+            // InternalPerspectiveDsl.g:308:4: rule__PerspectiveTable__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTable__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTableAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveTable"
+
+
+    // $ANTLR start "entryRulePerspectiveGrid"
+    // InternalPerspectiveDsl.g:317:1: entryRulePerspectiveGrid : rulePerspectiveGrid EOF ;
+    public final void entryRulePerspectiveGrid() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:318:1: ( rulePerspectiveGrid EOF )
+            // InternalPerspectiveDsl.g:319:1: rulePerspectiveGrid EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveGridRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveGrid();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveGridRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveGrid"
+
+
+    // $ANTLR start "rulePerspectiveGrid"
+    // InternalPerspectiveDsl.g:326:1: rulePerspectiveGrid : ( ( rule__PerspectiveGrid__Group__0 ) ) ;
+    public final void rulePerspectiveGrid() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:330:2: ( ( ( rule__PerspectiveGrid__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:331:2: ( ( rule__PerspectiveGrid__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:331:2: ( ( rule__PerspectiveGrid__Group__0 ) )
+            // InternalPerspectiveDsl.g:332:3: ( rule__PerspectiveGrid__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveGridAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:333:3: ( rule__PerspectiveGrid__Group__0 )
+            // InternalPerspectiveDsl.g:333:4: rule__PerspectiveGrid__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveGrid__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveGridAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveGrid"
+
+
+    // $ANTLR start "entryRulePerspectiveBean"
+    // InternalPerspectiveDsl.g:342:1: entryRulePerspectiveBean : rulePerspectiveBean EOF ;
+    public final void entryRulePerspectiveBean() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:343:1: ( rulePerspectiveBean EOF )
+            // InternalPerspectiveDsl.g:344:1: rulePerspectiveBean EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBeanRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveBean();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBeanRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveBean"
+
+
+    // $ANTLR start "rulePerspectiveBean"
+    // InternalPerspectiveDsl.g:351:1: rulePerspectiveBean : ( ( rule__PerspectiveBean__Group__0 ) ) ;
+    public final void rulePerspectiveBean() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:355:2: ( ( ( rule__PerspectiveBean__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:356:2: ( ( rule__PerspectiveBean__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:356:2: ( ( rule__PerspectiveBean__Group__0 ) )
+            // InternalPerspectiveDsl.g:357:3: ( rule__PerspectiveBean__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBeanAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:358:3: ( rule__PerspectiveBean__Group__0 )
+            // InternalPerspectiveDsl.g:358:4: rule__PerspectiveBean__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBean__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBeanAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveBean"
+
+
+    // $ANTLR start "entryRulePerspectiveChart"
+    // InternalPerspectiveDsl.g:367:1: entryRulePerspectiveChart : rulePerspectiveChart EOF ;
+    public final void entryRulePerspectiveChart() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:368:1: ( rulePerspectiveChart EOF )
+            // InternalPerspectiveDsl.g:369:1: rulePerspectiveChart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveChartRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveChart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveChartRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveChart"
+
+
+    // $ANTLR start "rulePerspectiveChart"
+    // InternalPerspectiveDsl.g:376:1: rulePerspectiveChart : ( ( rule__PerspectiveChart__Group__0 ) ) ;
+    public final void rulePerspectiveChart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:380:2: ( ( ( rule__PerspectiveChart__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:381:2: ( ( rule__PerspectiveChart__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:381:2: ( ( rule__PerspectiveChart__Group__0 ) )
+            // InternalPerspectiveDsl.g:382:3: ( rule__PerspectiveChart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveChartAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:383:3: ( rule__PerspectiveChart__Group__0 )
+            // InternalPerspectiveDsl.g:383:4: rule__PerspectiveChart__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveChart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveChartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveChart"
+
+
+    // $ANTLR start "entryRulePerspectiveReport"
+    // InternalPerspectiveDsl.g:392:1: entryRulePerspectiveReport : rulePerspectiveReport EOF ;
+    public final void entryRulePerspectiveReport() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:393:1: ( rulePerspectiveReport EOF )
+            // InternalPerspectiveDsl.g:394:1: rulePerspectiveReport EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveReportRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveReport();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveReportRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveReport"
+
+
+    // $ANTLR start "rulePerspectiveReport"
+    // InternalPerspectiveDsl.g:401:1: rulePerspectiveReport : ( ( rule__PerspectiveReport__Group__0 ) ) ;
+    public final void rulePerspectiveReport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:405:2: ( ( ( rule__PerspectiveReport__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:406:2: ( ( rule__PerspectiveReport__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:406:2: ( ( rule__PerspectiveReport__Group__0 ) )
+            // InternalPerspectiveDsl.g:407:3: ( rule__PerspectiveReport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveReportAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:408:3: ( rule__PerspectiveReport__Group__0 )
+            // InternalPerspectiveDsl.g:408:4: rule__PerspectiveReport__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveReport__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveReportAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveReport"
+
+
+    // $ANTLR start "entryRulePerspectiveOrganization"
+    // InternalPerspectiveDsl.g:417:1: entryRulePerspectiveOrganization : rulePerspectiveOrganization EOF ;
+    public final void entryRulePerspectiveOrganization() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:418:1: ( rulePerspectiveOrganization EOF )
+            // InternalPerspectiveDsl.g:419:1: rulePerspectiveOrganization EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveOrganizationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveOrganization();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveOrganizationRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveOrganization"
+
+
+    // $ANTLR start "rulePerspectiveOrganization"
+    // InternalPerspectiveDsl.g:426:1: rulePerspectiveOrganization : ( ( rule__PerspectiveOrganization__Group__0 ) ) ;
+    public final void rulePerspectiveOrganization() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:430:2: ( ( ( rule__PerspectiveOrganization__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:431:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:431:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
+            // InternalPerspectiveDsl.g:432:3: ( rule__PerspectiveOrganization__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveOrganizationAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:433:3: ( rule__PerspectiveOrganization__Group__0 )
+            // InternalPerspectiveDsl.g:433:4: rule__PerspectiveOrganization__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveOrganization__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveOrganizationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveOrganization"
+
+
+    // $ANTLR start "entryRulePerspectiveTopology"
+    // InternalPerspectiveDsl.g:442:1: entryRulePerspectiveTopology : rulePerspectiveTopology EOF ;
+    public final void entryRulePerspectiveTopology() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:443:1: ( rulePerspectiveTopology EOF )
+            // InternalPerspectiveDsl.g:444:1: rulePerspectiveTopology EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTopologyRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveTopology();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTopologyRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveTopology"
+
+
+    // $ANTLR start "rulePerspectiveTopology"
+    // InternalPerspectiveDsl.g:451:1: rulePerspectiveTopology : ( ( rule__PerspectiveTopology__Group__0 ) ) ;
+    public final void rulePerspectiveTopology() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:455:2: ( ( ( rule__PerspectiveTopology__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:456:2: ( ( rule__PerspectiveTopology__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:456:2: ( ( rule__PerspectiveTopology__Group__0 ) )
+            // InternalPerspectiveDsl.g:457:3: ( rule__PerspectiveTopology__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTopologyAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:458:3: ( rule__PerspectiveTopology__Group__0 )
+            // InternalPerspectiveDsl.g:458:4: rule__PerspectiveTopology__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTopology__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTopologyAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveTopology"
+
+
+    // $ANTLR start "entryRulePerspectiveDialog"
+    // InternalPerspectiveDsl.g:467:1: entryRulePerspectiveDialog : rulePerspectiveDialog EOF ;
+    public final void entryRulePerspectiveDialog() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:468:1: ( rulePerspectiveDialog EOF )
+            // InternalPerspectiveDsl.g:469:1: rulePerspectiveDialog EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDialogRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveDialog();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDialogRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveDialog"
+
+
+    // $ANTLR start "rulePerspectiveDialog"
+    // InternalPerspectiveDsl.g:476:1: rulePerspectiveDialog : ( ( rule__PerspectiveDialog__Group__0 ) ) ;
+    public final void rulePerspectiveDialog() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:480:2: ( ( ( rule__PerspectiveDialog__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:481:2: ( ( rule__PerspectiveDialog__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:481:2: ( ( rule__PerspectiveDialog__Group__0 ) )
+            // InternalPerspectiveDsl.g:482:3: ( rule__PerspectiveDialog__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDialogAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:483:3: ( rule__PerspectiveDialog__Group__0 )
+            // InternalPerspectiveDsl.g:483:4: rule__PerspectiveDialog__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDialog__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDialogAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveDialog"
+
+
+    // $ANTLR start "entryRulePerspectiveBPMN"
+    // InternalPerspectiveDsl.g:492:1: entryRulePerspectiveBPMN : rulePerspectiveBPMN EOF ;
+    public final void entryRulePerspectiveBPMN() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:493:1: ( rulePerspectiveBPMN EOF )
+            // InternalPerspectiveDsl.g:494:1: rulePerspectiveBPMN EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBPMNRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveBPMN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBPMNRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveBPMN"
+
+
+    // $ANTLR start "rulePerspectiveBPMN"
+    // InternalPerspectiveDsl.g:501:1: rulePerspectiveBPMN : ( ( rule__PerspectiveBPMN__Group__0 ) ) ;
+    public final void rulePerspectiveBPMN() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:505:2: ( ( ( rule__PerspectiveBPMN__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:506:2: ( ( rule__PerspectiveBPMN__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:506:2: ( ( rule__PerspectiveBPMN__Group__0 ) )
+            // InternalPerspectiveDsl.g:507:3: ( rule__PerspectiveBPMN__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBPMNAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:508:3: ( rule__PerspectiveBPMN__Group__0 )
+            // InternalPerspectiveDsl.g:508:4: rule__PerspectiveBPMN__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBPMN__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBPMNAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveBPMN"
+
+
+    // $ANTLR start "entryRulePerspectiveKanban"
+    // InternalPerspectiveDsl.g:517:1: entryRulePerspectiveKanban : rulePerspectiveKanban EOF ;
+    public final void entryRulePerspectiveKanban() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:518:1: ( rulePerspectiveKanban EOF )
+            // InternalPerspectiveDsl.g:519:1: rulePerspectiveKanban EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveKanban();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveKanban"
+
+
+    // $ANTLR start "rulePerspectiveKanban"
+    // InternalPerspectiveDsl.g:526:1: rulePerspectiveKanban : ( ( rule__PerspectiveKanban__Group__0 ) ) ;
+    public final void rulePerspectiveKanban() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:530:2: ( ( ( rule__PerspectiveKanban__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:531:2: ( ( rule__PerspectiveKanban__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:531:2: ( ( rule__PerspectiveKanban__Group__0 ) )
+            // InternalPerspectiveDsl.g:532:3: ( rule__PerspectiveKanban__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:533:3: ( rule__PerspectiveKanban__Group__0 )
+            // InternalPerspectiveDsl.g:533:4: rule__PerspectiveKanban__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveKanban"
+
+
+    // $ANTLR start "entryRulePerspectiveWelcome"
+    // InternalPerspectiveDsl.g:542:1: entryRulePerspectiveWelcome : rulePerspectiveWelcome EOF ;
+    public final void entryRulePerspectiveWelcome() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:543:1: ( rulePerspectiveWelcome EOF )
+            // InternalPerspectiveDsl.g:544:1: rulePerspectiveWelcome EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveWelcomeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveWelcome();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveWelcomeRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveWelcome"
+
+
+    // $ANTLR start "rulePerspectiveWelcome"
+    // InternalPerspectiveDsl.g:551:1: rulePerspectiveWelcome : ( ( rule__PerspectiveWelcome__Group__0 ) ) ;
+    public final void rulePerspectiveWelcome() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:555:2: ( ( ( rule__PerspectiveWelcome__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:556:2: ( ( rule__PerspectiveWelcome__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:556:2: ( ( rule__PerspectiveWelcome__Group__0 ) )
+            // InternalPerspectiveDsl.g:557:3: ( rule__PerspectiveWelcome__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveWelcomeAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:558:3: ( rule__PerspectiveWelcome__Group__0 )
+            // InternalPerspectiveDsl.g:558:4: rule__PerspectiveWelcome__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveWelcome__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveWelcomeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveWelcome"
+
+
+    // $ANTLR start "entryRulePerspectiveSearch"
+    // InternalPerspectiveDsl.g:567:1: entryRulePerspectiveSearch : rulePerspectiveSearch EOF ;
+    public final void entryRulePerspectiveSearch() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:568:1: ( rulePerspectiveSearch EOF )
+            // InternalPerspectiveDsl.g:569:1: rulePerspectiveSearch EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveSearch();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveSearch"
+
+
+    // $ANTLR start "rulePerspectiveSearch"
+    // InternalPerspectiveDsl.g:576:1: rulePerspectiveSearch : ( ( rule__PerspectiveSearch__Group__0 ) ) ;
+    public final void rulePerspectiveSearch() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:580:2: ( ( ( rule__PerspectiveSearch__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:581:2: ( ( rule__PerspectiveSearch__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:581:2: ( ( rule__PerspectiveSearch__Group__0 ) )
+            // InternalPerspectiveDsl.g:582:3: ( rule__PerspectiveSearch__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:583:3: ( rule__PerspectiveSearch__Group__0 )
+            // InternalPerspectiveDsl.g:583:4: rule__PerspectiveSearch__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveSearch"
+
+
+    // $ANTLR start "entryRulePerspectiveDataInterchange"
+    // InternalPerspectiveDsl.g:592:1: entryRulePerspectiveDataInterchange : rulePerspectiveDataInterchange EOF ;
+    public final void entryRulePerspectiveDataInterchange() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:593:1: ( rulePerspectiveDataInterchange EOF )
+            // InternalPerspectiveDsl.g:594:1: rulePerspectiveDataInterchange EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDataInterchangeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveDataInterchange();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDataInterchangeRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveDataInterchange"
+
+
+    // $ANTLR start "rulePerspectiveDataInterchange"
+    // InternalPerspectiveDsl.g:601:1: rulePerspectiveDataInterchange : ( ( rule__PerspectiveDataInterchange__Group__0 ) ) ;
+    public final void rulePerspectiveDataInterchange() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:605:2: ( ( ( rule__PerspectiveDataInterchange__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:606:2: ( ( rule__PerspectiveDataInterchange__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:606:2: ( ( rule__PerspectiveDataInterchange__Group__0 ) )
+            // InternalPerspectiveDsl.g:607:3: ( rule__PerspectiveDataInterchange__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDataInterchangeAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:608:3: ( rule__PerspectiveDataInterchange__Group__0 )
+            // InternalPerspectiveDsl.g:608:4: rule__PerspectiveDataInterchange__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDataInterchange__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDataInterchangeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveDataInterchange"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLEID"
+    // InternalPerspectiveDsl.g:617:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    public final void entryRuleTRANSLATABLEID() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:618:1: ( ruleTRANSLATABLEID EOF )
+            // InternalPerspectiveDsl.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"
+    // InternalPerspectiveDsl.g:626:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    public final void ruleTRANSLATABLEID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:630:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:631:2: ( RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:631:2: ( RULE_ID )
+            // InternalPerspectiveDsl.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 "entryRuleTRANSLATABLESTRING"
+    // InternalPerspectiveDsl.g:642:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
+    public final void entryRuleTRANSLATABLESTRING() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:643:1: ( ruleTRANSLATABLESTRING EOF )
+            // InternalPerspectiveDsl.g:644: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"
+    // InternalPerspectiveDsl.g:651:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
+    public final void ruleTRANSLATABLESTRING() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:655:2: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:656:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:656:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:657:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "entryRuleXImportDeclaration"
+    // InternalPerspectiveDsl.g:667:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    public final void entryRuleXImportDeclaration() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:668:1: ( ruleXImportDeclaration EOF )
+            // InternalPerspectiveDsl.g:669: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"
+    // InternalPerspectiveDsl.g:676:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    public final void ruleXImportDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:680:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:681:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:681:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:682:3: ( rule__XImportDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:683:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:683: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"
+    // InternalPerspectiveDsl.g:692:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    public final void entryRuleXAnnotation() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:693:1: ( ruleXAnnotation EOF )
+            // InternalPerspectiveDsl.g:694: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"
+    // InternalPerspectiveDsl.g:701:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    public final void ruleXAnnotation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:705:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:706:2: ( ( rule__XAnnotation__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:706:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalPerspectiveDsl.g:707:3: ( rule__XAnnotation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:708:3: ( rule__XAnnotation__Group__0 )
+            // InternalPerspectiveDsl.g:708: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"
+    // InternalPerspectiveDsl.g:717:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:718:1: ( ruleXAnnotationElementValuePair EOF )
+            // InternalPerspectiveDsl.g:719: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"
+    // InternalPerspectiveDsl.g:726:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    public final void ruleXAnnotationElementValuePair() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:730:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:731:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:731:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalPerspectiveDsl.g:732:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:733:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalPerspectiveDsl.g:733: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"
+    // InternalPerspectiveDsl.g:742:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:743:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalPerspectiveDsl.g:744: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"
+    // InternalPerspectiveDsl.g:751:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:755:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:756:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:756:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalPerspectiveDsl.g:757:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:758:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalPerspectiveDsl.g:758: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"
+    // InternalPerspectiveDsl.g:767:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    public final void entryRuleXAnnotationElementValue() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:768:1: ( ruleXAnnotationElementValue EOF )
+            // InternalPerspectiveDsl.g:769: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"
+    // InternalPerspectiveDsl.g:776:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValue() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:780:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:781:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:781:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalPerspectiveDsl.g:782:3: ( rule__XAnnotationElementValue__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:783:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalPerspectiveDsl.g:783: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"
+    // InternalPerspectiveDsl.g:792:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:793:1: ( ruleXAnnotationOrExpression EOF )
+            // InternalPerspectiveDsl.g:794: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"
+    // InternalPerspectiveDsl.g:801:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    public final void ruleXAnnotationOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:805:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:806:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:806:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:807:3: ( rule__XAnnotationOrExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:808:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalPerspectiveDsl.g:808: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"
+    // InternalPerspectiveDsl.g:817:1: entryRuleXExpression : ruleXExpression EOF ;
+    public final void entryRuleXExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:818:1: ( ruleXExpression EOF )
+            // InternalPerspectiveDsl.g:819: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"
+    // InternalPerspectiveDsl.g:826:1: ruleXExpression : ( ruleXAssignment ) ;
+    public final void ruleXExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:830:2: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:831:2: ( ruleXAssignment )
+            {
+            // InternalPerspectiveDsl.g:831:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:832: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"
+    // InternalPerspectiveDsl.g:842:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    public final void entryRuleXAssignment() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:843:1: ( ruleXAssignment EOF )
+            // InternalPerspectiveDsl.g:844: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"
+    // InternalPerspectiveDsl.g:851:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    public final void ruleXAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:855:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:856:2: ( ( rule__XAssignment__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:856:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalPerspectiveDsl.g:857:3: ( rule__XAssignment__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:858:3: ( rule__XAssignment__Alternatives )
+            // InternalPerspectiveDsl.g:858: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"
+    // InternalPerspectiveDsl.g:867:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    public final void entryRuleOpSingleAssign() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:868:1: ( ruleOpSingleAssign EOF )
+            // InternalPerspectiveDsl.g:869: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"
+    // InternalPerspectiveDsl.g:876:1: ruleOpSingleAssign : ( '=' ) ;
+    public final void ruleOpSingleAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:880:2: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:881:2: ( '=' )
+            {
+            // InternalPerspectiveDsl.g:881:2: ( '=' )
+            // InternalPerspectiveDsl.g:882: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"
+    // InternalPerspectiveDsl.g:892:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    public final void entryRuleOpMultiAssign() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:893:1: ( ruleOpMultiAssign EOF )
+            // InternalPerspectiveDsl.g:894: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"
+    // InternalPerspectiveDsl.g:901:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    public final void ruleOpMultiAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:905:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:906:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:906:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalPerspectiveDsl.g:907:3: ( rule__OpMultiAssign__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:908:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalPerspectiveDsl.g:908: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"
+    // InternalPerspectiveDsl.g:917:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    public final void entryRuleXOrExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:918:1: ( ruleXOrExpression EOF )
+            // InternalPerspectiveDsl.g:919: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"
+    // InternalPerspectiveDsl.g:926:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    public final void ruleXOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:930:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:931:2: ( ( rule__XOrExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:931:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:932:3: ( rule__XOrExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:933:3: ( rule__XOrExpression__Group__0 )
+            // InternalPerspectiveDsl.g:933: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"
+    // InternalPerspectiveDsl.g:942:1: entryRuleOpOr : ruleOpOr EOF ;
+    public final void entryRuleOpOr() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:943:1: ( ruleOpOr EOF )
+            // InternalPerspectiveDsl.g:944: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"
+    // InternalPerspectiveDsl.g:951:1: ruleOpOr : ( '||' ) ;
+    public final void ruleOpOr() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:955:2: ( ( '||' ) )
+            // InternalPerspectiveDsl.g:956:2: ( '||' )
+            {
+            // InternalPerspectiveDsl.g:956:2: ( '||' )
+            // InternalPerspectiveDsl.g:957: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"
+    // InternalPerspectiveDsl.g:967:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    public final void entryRuleXAndExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:968:1: ( ruleXAndExpression EOF )
+            // InternalPerspectiveDsl.g:969: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"
+    // InternalPerspectiveDsl.g:976:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    public final void ruleXAndExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:980:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:981:2: ( ( rule__XAndExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:981:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:982:3: ( rule__XAndExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:983:3: ( rule__XAndExpression__Group__0 )
+            // InternalPerspectiveDsl.g:983: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"
+    // InternalPerspectiveDsl.g:992:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    public final void entryRuleOpAnd() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:993:1: ( ruleOpAnd EOF )
+            // InternalPerspectiveDsl.g:994: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"
+    // InternalPerspectiveDsl.g:1001:1: ruleOpAnd : ( '&&' ) ;
+    public final void ruleOpAnd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1005:2: ( ( '&&' ) )
+            // InternalPerspectiveDsl.g:1006:2: ( '&&' )
+            {
+            // InternalPerspectiveDsl.g:1006:2: ( '&&' )
+            // InternalPerspectiveDsl.g:1007: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"
+    // InternalPerspectiveDsl.g:1017:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    public final void entryRuleXEqualityExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1018:1: ( ruleXEqualityExpression EOF )
+            // InternalPerspectiveDsl.g:1019: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"
+    // InternalPerspectiveDsl.g:1026:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    public final void ruleXEqualityExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1030:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1031:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1031:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1032:3: ( rule__XEqualityExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1033:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1033: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"
+    // InternalPerspectiveDsl.g:1042:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    public final void entryRuleOpEquality() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1043:1: ( ruleOpEquality EOF )
+            // InternalPerspectiveDsl.g:1044: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"
+    // InternalPerspectiveDsl.g:1051:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    public final void ruleOpEquality() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1055:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1056:2: ( ( rule__OpEquality__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1056:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalPerspectiveDsl.g:1057:3: ( rule__OpEquality__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1058:3: ( rule__OpEquality__Alternatives )
+            // InternalPerspectiveDsl.g:1058: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"
+    // InternalPerspectiveDsl.g:1067:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    public final void entryRuleXRelationalExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1068:1: ( ruleXRelationalExpression EOF )
+            // InternalPerspectiveDsl.g:1069: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"
+    // InternalPerspectiveDsl.g:1076:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    public final void ruleXRelationalExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1080:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1081:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1081:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1082:3: ( rule__XRelationalExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1083:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1083: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"
+    // InternalPerspectiveDsl.g:1092:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    public final void entryRuleOpCompare() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1093:1: ( ruleOpCompare EOF )
+            // InternalPerspectiveDsl.g:1094: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"
+    // InternalPerspectiveDsl.g:1101:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    public final void ruleOpCompare() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1105:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1106:2: ( ( rule__OpCompare__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1106:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalPerspectiveDsl.g:1107:3: ( rule__OpCompare__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1108:3: ( rule__OpCompare__Alternatives )
+            // InternalPerspectiveDsl.g:1108: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"
+    // InternalPerspectiveDsl.g:1117:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1118:1: ( ruleXOtherOperatorExpression EOF )
+            // InternalPerspectiveDsl.g:1119: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"
+    // InternalPerspectiveDsl.g:1126:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    public final void ruleXOtherOperatorExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1130:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1131:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1131:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1132:3: ( rule__XOtherOperatorExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1133:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1133: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"
+    // InternalPerspectiveDsl.g:1142:1: entryRuleOpOther : ruleOpOther EOF ;
+    public final void entryRuleOpOther() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1143:1: ( ruleOpOther EOF )
+            // InternalPerspectiveDsl.g:1144: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"
+    // InternalPerspectiveDsl.g:1151:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    public final void ruleOpOther() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1155:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1156:2: ( ( rule__OpOther__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1156:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalPerspectiveDsl.g:1157:3: ( rule__OpOther__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1158:3: ( rule__OpOther__Alternatives )
+            // InternalPerspectiveDsl.g:1158: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"
+    // InternalPerspectiveDsl.g:1167:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    public final void entryRuleXAdditiveExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1168:1: ( ruleXAdditiveExpression EOF )
+            // InternalPerspectiveDsl.g:1169: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"
+    // InternalPerspectiveDsl.g:1176:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    public final void ruleXAdditiveExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1180:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1181:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1181:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1182:3: ( rule__XAdditiveExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1183:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1183: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"
+    // InternalPerspectiveDsl.g:1192:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    public final void entryRuleOpAdd() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1193:1: ( ruleOpAdd EOF )
+            // InternalPerspectiveDsl.g:1194: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"
+    // InternalPerspectiveDsl.g:1201:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    public final void ruleOpAdd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1205:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1206:2: ( ( rule__OpAdd__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1206:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalPerspectiveDsl.g:1207:3: ( rule__OpAdd__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1208:3: ( rule__OpAdd__Alternatives )
+            // InternalPerspectiveDsl.g:1208: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"
+    // InternalPerspectiveDsl.g:1217:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1218:1: ( ruleXMultiplicativeExpression EOF )
+            // InternalPerspectiveDsl.g:1219: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"
+    // InternalPerspectiveDsl.g:1226:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    public final void ruleXMultiplicativeExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1230:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1231:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1231:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1232:3: ( rule__XMultiplicativeExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1233:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1233: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"
+    // InternalPerspectiveDsl.g:1242:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    public final void entryRuleOpMulti() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1243:1: ( ruleOpMulti EOF )
+            // InternalPerspectiveDsl.g:1244: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"
+    // InternalPerspectiveDsl.g:1251:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    public final void ruleOpMulti() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1255:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1256:2: ( ( rule__OpMulti__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1256:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalPerspectiveDsl.g:1257:3: ( rule__OpMulti__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1258:3: ( rule__OpMulti__Alternatives )
+            // InternalPerspectiveDsl.g:1258: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"
+    // InternalPerspectiveDsl.g:1267:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    public final void entryRuleXUnaryOperation() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1268:1: ( ruleXUnaryOperation EOF )
+            // InternalPerspectiveDsl.g:1269: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"
+    // InternalPerspectiveDsl.g:1276:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    public final void ruleXUnaryOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1280:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1281:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1281:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalPerspectiveDsl.g:1282:3: ( rule__XUnaryOperation__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1283:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalPerspectiveDsl.g:1283: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"
+    // InternalPerspectiveDsl.g:1292:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    public final void entryRuleOpUnary() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1293:1: ( ruleOpUnary EOF )
+            // InternalPerspectiveDsl.g:1294: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"
+    // InternalPerspectiveDsl.g:1301:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    public final void ruleOpUnary() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1305:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1306:2: ( ( rule__OpUnary__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1306:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalPerspectiveDsl.g:1307:3: ( rule__OpUnary__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1308:3: ( rule__OpUnary__Alternatives )
+            // InternalPerspectiveDsl.g:1308: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"
+    // InternalPerspectiveDsl.g:1317:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    public final void entryRuleXCastedExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1318:1: ( ruleXCastedExpression EOF )
+            // InternalPerspectiveDsl.g:1319: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"
+    // InternalPerspectiveDsl.g:1326:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    public final void ruleXCastedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1330:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1331:2: ( ( rule__XCastedExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1331:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1332:3: ( rule__XCastedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1333:3: ( rule__XCastedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1333: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"
+    // InternalPerspectiveDsl.g:1342:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    public final void entryRuleXPostfixOperation() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1343:1: ( ruleXPostfixOperation EOF )
+            // InternalPerspectiveDsl.g:1344: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"
+    // InternalPerspectiveDsl.g:1351:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    public final void ruleXPostfixOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1355:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1356:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1356:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalPerspectiveDsl.g:1357:3: ( rule__XPostfixOperation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1358:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalPerspectiveDsl.g:1358: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"
+    // InternalPerspectiveDsl.g:1367:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    public final void entryRuleOpPostfix() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1368:1: ( ruleOpPostfix EOF )
+            // InternalPerspectiveDsl.g:1369: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"
+    // InternalPerspectiveDsl.g:1376:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    public final void ruleOpPostfix() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1380:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1381:2: ( ( rule__OpPostfix__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1381:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalPerspectiveDsl.g:1382:3: ( rule__OpPostfix__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1383:3: ( rule__OpPostfix__Alternatives )
+            // InternalPerspectiveDsl.g:1383: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"
+    // InternalPerspectiveDsl.g:1392:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    public final void entryRuleXMemberFeatureCall() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1393:1: ( ruleXMemberFeatureCall EOF )
+            // InternalPerspectiveDsl.g:1394: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"
+    // InternalPerspectiveDsl.g:1401:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    public final void ruleXMemberFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1405:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1406:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1406:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:1407:3: ( rule__XMemberFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1408:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:1408: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"
+    // InternalPerspectiveDsl.g:1417:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    public final void entryRuleXPrimaryExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1418:1: ( ruleXPrimaryExpression EOF )
+            // InternalPerspectiveDsl.g:1419: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"
+    // InternalPerspectiveDsl.g:1426:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    public final void ruleXPrimaryExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1430:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1431:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1431:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:1432:3: ( rule__XPrimaryExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1433:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalPerspectiveDsl.g:1433: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"
+    // InternalPerspectiveDsl.g:1442:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    public final void entryRuleXLiteral() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1443:1: ( ruleXLiteral EOF )
+            // InternalPerspectiveDsl.g:1444: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"
+    // InternalPerspectiveDsl.g:1451:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    public final void ruleXLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1455:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1456:2: ( ( rule__XLiteral__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1456:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1457:3: ( rule__XLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1458:3: ( rule__XLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1458: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"
+    // InternalPerspectiveDsl.g:1467:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    public final void entryRuleXCollectionLiteral() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1468:1: ( ruleXCollectionLiteral EOF )
+            // InternalPerspectiveDsl.g:1469: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"
+    // InternalPerspectiveDsl.g:1476:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    public final void ruleXCollectionLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1480:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1481:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1481:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1482:3: ( rule__XCollectionLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1483:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1483: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"
+    // InternalPerspectiveDsl.g:1492:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    public final void entryRuleXSetLiteral() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1493:1: ( ruleXSetLiteral EOF )
+            // InternalPerspectiveDsl.g:1494: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"
+    // InternalPerspectiveDsl.g:1501:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    public final void ruleXSetLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1505:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1506:2: ( ( rule__XSetLiteral__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1506:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1507:3: ( rule__XSetLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1508:3: ( rule__XSetLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1508: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"
+    // InternalPerspectiveDsl.g:1517:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    public final void entryRuleXListLiteral() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1518:1: ( ruleXListLiteral EOF )
+            // InternalPerspectiveDsl.g:1519: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"
+    // InternalPerspectiveDsl.g:1526:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    public final void ruleXListLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1530:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1531:2: ( ( rule__XListLiteral__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1531:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1532:3: ( rule__XListLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1533:3: ( rule__XListLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1533: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"
+    // InternalPerspectiveDsl.g:1542:1: entryRuleXClosure : ruleXClosure EOF ;
+    public final void entryRuleXClosure() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1543:1: ( ruleXClosure EOF )
+            // InternalPerspectiveDsl.g:1544: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"
+    // InternalPerspectiveDsl.g:1551:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    public final void ruleXClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1555:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1556:2: ( ( rule__XClosure__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1556:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1557:3: ( rule__XClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1558:3: ( rule__XClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1558: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"
+    // InternalPerspectiveDsl.g:1567:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    public final void entryRuleXExpressionInClosure() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1568:1: ( ruleXExpressionInClosure EOF )
+            // InternalPerspectiveDsl.g:1569: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"
+    // InternalPerspectiveDsl.g:1576:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    public final void ruleXExpressionInClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1580:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1581:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1581:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1582:3: ( rule__XExpressionInClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1583:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1583: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"
+    // InternalPerspectiveDsl.g:1592:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    public final void entryRuleXShortClosure() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1593:1: ( ruleXShortClosure EOF )
+            // InternalPerspectiveDsl.g:1594: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"
+    // InternalPerspectiveDsl.g:1601:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    public final void ruleXShortClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1605:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1606:2: ( ( rule__XShortClosure__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1606:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1607:3: ( rule__XShortClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1608:3: ( rule__XShortClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1608: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"
+    // InternalPerspectiveDsl.g:1617:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    public final void entryRuleXParenthesizedExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1618:1: ( ruleXParenthesizedExpression EOF )
+            // InternalPerspectiveDsl.g:1619: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"
+    // InternalPerspectiveDsl.g:1626:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    public final void ruleXParenthesizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1630:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1631:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1631:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1632:3: ( rule__XParenthesizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1633:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1633: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"
+    // InternalPerspectiveDsl.g:1642:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    public final void entryRuleXIfExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1643:1: ( ruleXIfExpression EOF )
+            // InternalPerspectiveDsl.g:1644: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"
+    // InternalPerspectiveDsl.g:1651:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    public final void ruleXIfExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1655:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1656:2: ( ( rule__XIfExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1656:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1657:3: ( rule__XIfExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1658:3: ( rule__XIfExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1658: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"
+    // InternalPerspectiveDsl.g:1667:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    public final void entryRuleXSwitchExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1668:1: ( ruleXSwitchExpression EOF )
+            // InternalPerspectiveDsl.g:1669: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"
+    // InternalPerspectiveDsl.g:1676:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    public final void ruleXSwitchExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1680:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1681:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1681:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1682:3: ( rule__XSwitchExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1683:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1683: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"
+    // InternalPerspectiveDsl.g:1692:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    public final void entryRuleXCasePart() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1693:1: ( ruleXCasePart EOF )
+            // InternalPerspectiveDsl.g:1694: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"
+    // InternalPerspectiveDsl.g:1701:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    public final void ruleXCasePart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1705:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1706:2: ( ( rule__XCasePart__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1706:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalPerspectiveDsl.g:1707:3: ( rule__XCasePart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1708:3: ( rule__XCasePart__Group__0 )
+            // InternalPerspectiveDsl.g:1708: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"
+    // InternalPerspectiveDsl.g:1717:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    public final void entryRuleXForLoopExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1718:1: ( ruleXForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:1719: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"
+    // InternalPerspectiveDsl.g:1726:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    public final void ruleXForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1730:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1731:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1731:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1732:3: ( rule__XForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1733:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1733: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"
+    // InternalPerspectiveDsl.g:1742:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1743:1: ( ruleXBasicForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:1744: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"
+    // InternalPerspectiveDsl.g:1751:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    public final void ruleXBasicForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1755:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1756:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1756:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1757:3: ( rule__XBasicForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1758:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1758: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"
+    // InternalPerspectiveDsl.g:1767:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    public final void entryRuleXWhileExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1768:1: ( ruleXWhileExpression EOF )
+            // InternalPerspectiveDsl.g:1769: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"
+    // InternalPerspectiveDsl.g:1776:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    public final void ruleXWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1780:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1781:2: ( ( rule__XWhileExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1781:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1782:3: ( rule__XWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1783:3: ( rule__XWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1783: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"
+    // InternalPerspectiveDsl.g:1792:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    public final void entryRuleXDoWhileExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1793:1: ( ruleXDoWhileExpression EOF )
+            // InternalPerspectiveDsl.g:1794: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"
+    // InternalPerspectiveDsl.g:1801:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    public final void ruleXDoWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1805:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1806:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1806:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1807:3: ( rule__XDoWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1808:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1808: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"
+    // InternalPerspectiveDsl.g:1817:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    public final void entryRuleXBlockExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1818:1: ( ruleXBlockExpression EOF )
+            // InternalPerspectiveDsl.g:1819: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"
+    // InternalPerspectiveDsl.g:1826:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    public final void ruleXBlockExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1830:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1831:2: ( ( rule__XBlockExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1831:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1832:3: ( rule__XBlockExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1833:3: ( rule__XBlockExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1833: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"
+    // InternalPerspectiveDsl.g:1842:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1843:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // InternalPerspectiveDsl.g:1844: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"
+    // InternalPerspectiveDsl.g:1851:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1855:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1856:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1856:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalPerspectiveDsl.g:1857:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1858:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalPerspectiveDsl.g:1858: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"
+    // InternalPerspectiveDsl.g:1867:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    public final void entryRuleXVariableDeclaration() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1868:1: ( ruleXVariableDeclaration EOF )
+            // InternalPerspectiveDsl.g:1869: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"
+    // InternalPerspectiveDsl.g:1876:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    public final void ruleXVariableDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1880:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1881:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1881:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:1882:3: ( rule__XVariableDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1883:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:1883: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"
+    // InternalPerspectiveDsl.g:1892:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    public final void entryRuleJvmFormalParameter() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1893:1: ( ruleJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:1894: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"
+    // InternalPerspectiveDsl.g:1901:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    public final void ruleJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1905:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1906:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1906:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:1907:3: ( rule__JvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1908:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:1908: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"
+    // InternalPerspectiveDsl.g:1917:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1918:1: ( ruleFullJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:1919: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"
+    // InternalPerspectiveDsl.g:1926:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    public final void ruleFullJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1930:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1931:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1931:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:1932:3: ( rule__FullJvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1933:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:1933: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"
+    // InternalPerspectiveDsl.g:1942:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    public final void entryRuleXFeatureCall() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1943:1: ( ruleXFeatureCall EOF )
+            // InternalPerspectiveDsl.g:1944: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"
+    // InternalPerspectiveDsl.g:1951:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    public final void ruleXFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1955:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1956:2: ( ( rule__XFeatureCall__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:1956:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:1957:3: ( rule__XFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:1958:3: ( rule__XFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:1958: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"
+    // InternalPerspectiveDsl.g:1967:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    public final void entryRuleFeatureCallID() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1968:1: ( ruleFeatureCallID EOF )
+            // InternalPerspectiveDsl.g:1969: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"
+    // InternalPerspectiveDsl.g:1976:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    public final void ruleFeatureCallID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:1980:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1981:2: ( ( rule__FeatureCallID__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:1981:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalPerspectiveDsl.g:1982:3: ( rule__FeatureCallID__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:1983:3: ( rule__FeatureCallID__Alternatives )
+            // InternalPerspectiveDsl.g:1983: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"
+    // InternalPerspectiveDsl.g:1992:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    public final void entryRuleIdOrSuper() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:1993:1: ( ruleIdOrSuper EOF )
+            // InternalPerspectiveDsl.g:1994: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"
+    // InternalPerspectiveDsl.g:2001:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    public final void ruleIdOrSuper() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2005:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2006:2: ( ( rule__IdOrSuper__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:2006:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalPerspectiveDsl.g:2007:3: ( rule__IdOrSuper__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:2008:3: ( rule__IdOrSuper__Alternatives )
+            // InternalPerspectiveDsl.g:2008: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"
+    // InternalPerspectiveDsl.g:2017:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    public final void entryRuleXConstructorCall() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2018:1: ( ruleXConstructorCall EOF )
+            // InternalPerspectiveDsl.g:2019: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"
+    // InternalPerspectiveDsl.g:2026:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    public final void ruleXConstructorCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2030:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2031:2: ( ( rule__XConstructorCall__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2031:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:2032:3: ( rule__XConstructorCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2033:3: ( rule__XConstructorCall__Group__0 )
+            // InternalPerspectiveDsl.g:2033: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"
+    // InternalPerspectiveDsl.g:2042:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    public final void entryRuleXBooleanLiteral() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2043:1: ( ruleXBooleanLiteral EOF )
+            // InternalPerspectiveDsl.g:2044: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"
+    // InternalPerspectiveDsl.g:2051:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    public final void ruleXBooleanLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2055:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2056:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2056:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2057:3: ( rule__XBooleanLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2058:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2058: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"
+    // InternalPerspectiveDsl.g:2067:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    public final void entryRuleXNullLiteral() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2068:1: ( ruleXNullLiteral EOF )
+            // InternalPerspectiveDsl.g:2069: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"
+    // InternalPerspectiveDsl.g:2076:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    public final void ruleXNullLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2080:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2081:2: ( ( rule__XNullLiteral__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2081:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2082:3: ( rule__XNullLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2083:3: ( rule__XNullLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2083: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"
+    // InternalPerspectiveDsl.g:2092:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    public final void entryRuleXNumberLiteral() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2093:1: ( ruleXNumberLiteral EOF )
+            // InternalPerspectiveDsl.g:2094: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"
+    // InternalPerspectiveDsl.g:2101:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    public final void ruleXNumberLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2105:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2106:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2106:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2107:3: ( rule__XNumberLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2108:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2108: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"
+    // InternalPerspectiveDsl.g:2117:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    public final void entryRuleXStringLiteral() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2118:1: ( ruleXStringLiteral EOF )
+            // InternalPerspectiveDsl.g:2119: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"
+    // InternalPerspectiveDsl.g:2126:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    public final void ruleXStringLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2130:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2131:2: ( ( rule__XStringLiteral__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2131:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2132:3: ( rule__XStringLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2133:3: ( rule__XStringLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2133: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"
+    // InternalPerspectiveDsl.g:2142:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    public final void entryRuleXTypeLiteral() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2143:1: ( ruleXTypeLiteral EOF )
+            // InternalPerspectiveDsl.g:2144: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"
+    // InternalPerspectiveDsl.g:2151:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    public final void ruleXTypeLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2155:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2156:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2156:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2157:3: ( rule__XTypeLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2158:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2158: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"
+    // InternalPerspectiveDsl.g:2167:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    public final void entryRuleXThrowExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2168:1: ( ruleXThrowExpression EOF )
+            // InternalPerspectiveDsl.g:2169: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"
+    // InternalPerspectiveDsl.g:2176:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    public final void ruleXThrowExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2180:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2181:2: ( ( rule__XThrowExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2181:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2182:3: ( rule__XThrowExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2183:3: ( rule__XThrowExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2183: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"
+    // InternalPerspectiveDsl.g:2192:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    public final void entryRuleXReturnExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2193:1: ( ruleXReturnExpression EOF )
+            // InternalPerspectiveDsl.g:2194: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"
+    // InternalPerspectiveDsl.g:2201:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    public final void ruleXReturnExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2205:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2206:2: ( ( rule__XReturnExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2206:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2207:3: ( rule__XReturnExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2208:3: ( rule__XReturnExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2208: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"
+    // InternalPerspectiveDsl.g:2217:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2218:1: ( ruleXTryCatchFinallyExpression EOF )
+            // InternalPerspectiveDsl.g:2219: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"
+    // InternalPerspectiveDsl.g:2226:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2230:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2231:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2231:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2232:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2233:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2233: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"
+    // InternalPerspectiveDsl.g:2242:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    public final void entryRuleXSynchronizedExpression() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2243:1: ( ruleXSynchronizedExpression EOF )
+            // InternalPerspectiveDsl.g:2244: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"
+    // InternalPerspectiveDsl.g:2251:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    public final void ruleXSynchronizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2255:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2256:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2256:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2257:3: ( rule__XSynchronizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2258:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2258: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"
+    // InternalPerspectiveDsl.g:2267:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    public final void entryRuleXCatchClause() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2268:1: ( ruleXCatchClause EOF )
+            // InternalPerspectiveDsl.g:2269: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"
+    // InternalPerspectiveDsl.g:2276:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    public final void ruleXCatchClause() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2280:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2281:2: ( ( rule__XCatchClause__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2281:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalPerspectiveDsl.g:2282:3: ( rule__XCatchClause__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2283:3: ( rule__XCatchClause__Group__0 )
+            // InternalPerspectiveDsl.g:2283: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"
+    // InternalPerspectiveDsl.g:2292:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    public final void entryRuleQualifiedName() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2293:1: ( ruleQualifiedName EOF )
+            // InternalPerspectiveDsl.g:2294: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"
+    // InternalPerspectiveDsl.g:2301:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    public final void ruleQualifiedName() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2305:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2306:2: ( ( rule__QualifiedName__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2306:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalPerspectiveDsl.g:2307:3: ( rule__QualifiedName__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2308:3: ( rule__QualifiedName__Group__0 )
+            // InternalPerspectiveDsl.g:2308: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"
+    // InternalPerspectiveDsl.g:2317:1: entryRuleNumber : ruleNumber EOF ;
+    public final void entryRuleNumber() throws RecognitionException {
+         
+        	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+
+        try {
+            // InternalPerspectiveDsl.g:2321:1: ( ruleNumber EOF )
+            // InternalPerspectiveDsl.g:2322: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"
+    // InternalPerspectiveDsl.g:2332:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    public final void ruleNumber() throws RecognitionException {
+
+        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2337:2: ( ( ( rule__Number__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2338:2: ( ( rule__Number__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:2338:2: ( ( rule__Number__Alternatives ) )
+            // InternalPerspectiveDsl.g:2339:3: ( rule__Number__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:2340:3: ( rule__Number__Alternatives )
+            // InternalPerspectiveDsl.g:2340: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"
+    // InternalPerspectiveDsl.g:2350:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    public final void entryRuleJvmTypeReference() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2351:1: ( ruleJvmTypeReference EOF )
+            // InternalPerspectiveDsl.g:2352: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"
+    // InternalPerspectiveDsl.g:2359:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    public final void ruleJvmTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2363:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2364:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:2364:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2365:3: ( rule__JvmTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:2366:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2366: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"
+    // InternalPerspectiveDsl.g:2375:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    public final void entryRuleArrayBrackets() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2376:1: ( ruleArrayBrackets EOF )
+            // InternalPerspectiveDsl.g:2377: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"
+    // InternalPerspectiveDsl.g:2384:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    public final void ruleArrayBrackets() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2388:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2389:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2389:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalPerspectiveDsl.g:2390:3: ( rule__ArrayBrackets__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2391:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalPerspectiveDsl.g:2391: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"
+    // InternalPerspectiveDsl.g:2400:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    public final void entryRuleXFunctionTypeRef() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2401:1: ( ruleXFunctionTypeRef EOF )
+            // InternalPerspectiveDsl.g:2402: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"
+    // InternalPerspectiveDsl.g:2409:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    public final void ruleXFunctionTypeRef() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2413:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2414:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2414:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalPerspectiveDsl.g:2415:3: ( rule__XFunctionTypeRef__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2416:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalPerspectiveDsl.g:2416: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"
+    // InternalPerspectiveDsl.g:2425:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2426:1: ( ruleJvmParameterizedTypeReference EOF )
+            // InternalPerspectiveDsl.g:2427: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"
+    // InternalPerspectiveDsl.g:2434:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2438:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2439:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2439:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2440:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2441:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2441: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"
+    // InternalPerspectiveDsl.g:2450:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2451:1: ( ruleJvmArgumentTypeReference EOF )
+            // InternalPerspectiveDsl.g:2452: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"
+    // InternalPerspectiveDsl.g:2459:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    public final void ruleJvmArgumentTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2463:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2464:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:2464:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2465:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:2466:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2466: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"
+    // InternalPerspectiveDsl.g:2475:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2476:1: ( ruleJvmWildcardTypeReference EOF )
+            // InternalPerspectiveDsl.g:2477: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"
+    // InternalPerspectiveDsl.g:2484:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    public final void ruleJvmWildcardTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2488:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2489:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2489:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2490:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2491:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2491: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"
+    // InternalPerspectiveDsl.g:2500:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    public final void entryRuleJvmUpperBound() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2501:1: ( ruleJvmUpperBound EOF )
+            // InternalPerspectiveDsl.g:2502: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"
+    // InternalPerspectiveDsl.g:2509:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    public final void ruleJvmUpperBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2513:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2514:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2514:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2515:3: ( rule__JvmUpperBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2516:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalPerspectiveDsl.g:2516: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"
+    // InternalPerspectiveDsl.g:2525:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2526:1: ( ruleJvmUpperBoundAnded EOF )
+            // InternalPerspectiveDsl.g:2527: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"
+    // InternalPerspectiveDsl.g:2534:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmUpperBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2538:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2539:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2539:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2540:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2541:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2541: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"
+    // InternalPerspectiveDsl.g:2550:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    public final void entryRuleJvmLowerBound() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2551:1: ( ruleJvmLowerBound EOF )
+            // InternalPerspectiveDsl.g:2552: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"
+    // InternalPerspectiveDsl.g:2559:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    public final void ruleJvmLowerBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2563:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2564:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2564:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2565:3: ( rule__JvmLowerBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2566:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalPerspectiveDsl.g:2566: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"
+    // InternalPerspectiveDsl.g:2575:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2576:1: ( ruleJvmLowerBoundAnded EOF )
+            // InternalPerspectiveDsl.g:2577: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"
+    // InternalPerspectiveDsl.g:2584:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmLowerBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2588:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2589:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2589:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2590:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2591:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2591: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"
+    // InternalPerspectiveDsl.g:2600:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2601:1: ( ruleQualifiedNameWithWildcard EOF )
+            // InternalPerspectiveDsl.g:2602: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"
+    // InternalPerspectiveDsl.g:2609:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2613:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2614:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:2614:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalPerspectiveDsl.g:2615:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2616:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalPerspectiveDsl.g:2616: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"
+    // InternalPerspectiveDsl.g:2625:1: entryRuleValidID : ruleValidID EOF ;
+    public final void entryRuleValidID() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2626:1: ( ruleValidID EOF )
+            // InternalPerspectiveDsl.g:2627: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"
+    // InternalPerspectiveDsl.g:2634:1: ruleValidID : ( RULE_ID ) ;
+    public final void ruleValidID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2638:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:2639:2: ( RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:2639:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:2640: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"
+    // InternalPerspectiveDsl.g:2650:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    public final void entryRuleXImportSection() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2651:1: ( ruleXImportSection EOF )
+            // InternalPerspectiveDsl.g:2652: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"
+    // InternalPerspectiveDsl.g:2659:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    public final void ruleXImportSection() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2663:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // InternalPerspectiveDsl.g:2664:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            {
+            // InternalPerspectiveDsl.g:2664:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalPerspectiveDsl.g:2665:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            {
+            // InternalPerspectiveDsl.g:2665:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // InternalPerspectiveDsl.g:2666:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // InternalPerspectiveDsl.g:2667:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalPerspectiveDsl.g:2667:5: rule__XImportSection__ImportDeclarationsAssignment
+            {
+            pushFollow(FOLLOW_3);
+            rule__XImportSection__ImportDeclarationsAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:2670:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalPerspectiveDsl.g:2671:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // InternalPerspectiveDsl.g:2672:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==47) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:2672:5: rule__XImportSection__ImportDeclarationsAssignment
+            	    {
+            	    pushFollow(FOLLOW_3);
+            	    rule__XImportSection__ImportDeclarationsAssignment();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXImportSection"
+
+
+    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+    // InternalPerspectiveDsl.g:2682:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:2683:1: ( ruleQualifiedNameInStaticImport EOF )
+            // InternalPerspectiveDsl.g:2684: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"
+    // InternalPerspectiveDsl.g:2691:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2695:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // InternalPerspectiveDsl.g:2696:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            {
+            // InternalPerspectiveDsl.g:2696:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalPerspectiveDsl.g:2697:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            {
+            // InternalPerspectiveDsl.g:2697:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // InternalPerspectiveDsl.g:2698:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2699:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalPerspectiveDsl.g:2699: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()); 
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:2702:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalPerspectiveDsl.g:2703:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:2704:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==RULE_ID) ) {
+                    int LA2_2 = input.LA(2);
+
+                    if ( (LA2_2==43) ) {
+                        alt2=1;
+                    }
+
+
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:2704:5: rule__QualifiedNameInStaticImport__Group__0
+            	    {
+            	    pushFollow(FOLLOW_4);
+            	    rule__QualifiedNameInStaticImport__Group__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleSashOrientation"
+    // InternalPerspectiveDsl.g:2714:1: ruleSashOrientation : ( ( rule__SashOrientation__Alternatives ) ) ;
+    public final void ruleSashOrientation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2718:1: ( ( ( rule__SashOrientation__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2719:2: ( ( rule__SashOrientation__Alternatives ) )
+            {
+            // InternalPerspectiveDsl.g:2719:2: ( ( rule__SashOrientation__Alternatives ) )
+            // InternalPerspectiveDsl.g:2720:3: ( rule__SashOrientation__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSashOrientationAccess().getAlternatives()); 
+            }
+            // InternalPerspectiveDsl.g:2721:3: ( rule__SashOrientation__Alternatives )
+            // InternalPerspectiveDsl.g:2721:4: rule__SashOrientation__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__SashOrientation__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSashOrientationAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSashOrientation"
+
+
+    // $ANTLR start "rule__PerspectiveElement__Alternatives"
+    // InternalPerspectiveDsl.g:2729:1: rule__PerspectiveElement__Alternatives : ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) );
+    public final void rule__PerspectiveElement__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2733:1: ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) )
+            int alt3=3;
+            switch ( input.LA(1) ) {
+            case 62:
+                {
+                alt3=1;
+                }
+                break;
+            case 66:
+                {
+                alt3=2;
+                }
+                break;
+            case 67:
+                {
+                alt3=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt3) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2734:2: ( rulePerspectiveSashContainer )
+                    {
+                    // InternalPerspectiveDsl.g:2734:2: ( rulePerspectiveSashContainer )
+                    // InternalPerspectiveDsl.g:2735:3: rulePerspectiveSashContainer
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveSashContainer();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:2740:2: ( rulePerspectivePartStack )
+                    {
+                    // InternalPerspectiveDsl.g:2740:2: ( rulePerspectivePartStack )
+                    // InternalPerspectiveDsl.g:2741:3: rulePerspectivePartStack
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectivePartStack();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:2746:2: ( rulePerspectivePart )
+                    {
+                    // InternalPerspectiveDsl.g:2746:2: ( rulePerspectivePart )
+                    // InternalPerspectiveDsl.g:2747:3: rulePerspectivePart
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectivePart();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveElement__Alternatives"
+
+
+    // $ANTLR start "rule__PerspectiveView__Alternatives"
+    // InternalPerspectiveDsl.g:2756:1: rule__PerspectiveView__Alternatives : ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveBean ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveBPMN ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveKanban ) );
+    public final void rule__PerspectiveView__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2760:1: ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveBean ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveBPMN ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveKanban ) )
+            int alt4=14;
+            switch ( input.LA(1) ) {
+            case 69:
+                {
+                alt4=1;
+                }
+                break;
+            case 70:
+                {
+                alt4=2;
+                }
+                break;
+            case 73:
+                {
+                alt4=3;
+                }
+                break;
+            case 72:
+                {
+                alt4=4;
+                }
+                break;
+            case 74:
+                {
+                alt4=5;
+                }
+                break;
+            case 75:
+                {
+                alt4=6;
+                }
+                break;
+            case 76:
+                {
+                alt4=7;
+                }
+                break;
+            case 77:
+                {
+                alt4=8;
+                }
+                break;
+            case 78:
+                {
+                alt4=9;
+                }
+                break;
+            case 71:
+                {
+                alt4=10;
+                }
+                break;
+            case 82:
+                {
+                alt4=11;
+                }
+                break;
+            case 83:
+                {
+                alt4=12;
+                }
+                break;
+            case 87:
+                {
+                alt4=13;
+                }
+                break;
+            case 79:
+                {
+                alt4=14;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt4) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2761:2: ( rulePerspectiveSelection )
+                    {
+                    // InternalPerspectiveDsl.g:2761:2: ( rulePerspectiveSelection )
+                    // InternalPerspectiveDsl.g:2762:3: rulePerspectiveSelection
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveSelection();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:2767:2: ( rulePerspectiveTable )
+                    {
+                    // InternalPerspectiveDsl.g:2767:2: ( rulePerspectiveTable )
+                    // InternalPerspectiveDsl.g:2768:3: rulePerspectiveTable
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveTable();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:2773:2: ( rulePerspectiveChart )
+                    {
+                    // InternalPerspectiveDsl.g:2773:2: ( rulePerspectiveChart )
+                    // InternalPerspectiveDsl.g:2774:3: rulePerspectiveChart
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveChart();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalPerspectiveDsl.g:2779:2: ( rulePerspectiveBean )
+                    {
+                    // InternalPerspectiveDsl.g:2779:2: ( rulePerspectiveBean )
+                    // InternalPerspectiveDsl.g:2780:3: rulePerspectiveBean
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveBean();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalPerspectiveDsl.g:2785:2: ( rulePerspectiveReport )
+                    {
+                    // InternalPerspectiveDsl.g:2785:2: ( rulePerspectiveReport )
+                    // InternalPerspectiveDsl.g:2786:3: rulePerspectiveReport
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveReport();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalPerspectiveDsl.g:2791:2: ( rulePerspectiveOrganization )
+                    {
+                    // InternalPerspectiveDsl.g:2791:2: ( rulePerspectiveOrganization )
+                    // InternalPerspectiveDsl.g:2792:3: rulePerspectiveOrganization
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveOrganization();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalPerspectiveDsl.g:2797:2: ( rulePerspectiveTopology )
+                    {
+                    // InternalPerspectiveDsl.g:2797:2: ( rulePerspectiveTopology )
+                    // InternalPerspectiveDsl.g:2798:3: rulePerspectiveTopology
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveTopology();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalPerspectiveDsl.g:2803:2: ( rulePerspectiveDialog )
+                    {
+                    // InternalPerspectiveDsl.g:2803:2: ( rulePerspectiveDialog )
+                    // InternalPerspectiveDsl.g:2804:3: rulePerspectiveDialog
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveDialog();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalPerspectiveDsl.g:2809:2: ( rulePerspectiveBPMN )
+                    {
+                    // InternalPerspectiveDsl.g:2809:2: ( rulePerspectiveBPMN )
+                    // InternalPerspectiveDsl.g:2810:3: rulePerspectiveBPMN
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_8()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveBPMN();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_8()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // InternalPerspectiveDsl.g:2815:2: ( rulePerspectiveGrid )
+                    {
+                    // InternalPerspectiveDsl.g:2815:2: ( rulePerspectiveGrid )
+                    // InternalPerspectiveDsl.g:2816:3: rulePerspectiveGrid
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_9()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveGrid();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_9()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // InternalPerspectiveDsl.g:2821:2: ( rulePerspectiveWelcome )
+                    {
+                    // InternalPerspectiveDsl.g:2821:2: ( rulePerspectiveWelcome )
+                    // InternalPerspectiveDsl.g:2822:3: rulePerspectiveWelcome
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_10()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveWelcome();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_10()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // InternalPerspectiveDsl.g:2827:2: ( rulePerspectiveSearch )
+                    {
+                    // InternalPerspectiveDsl.g:2827:2: ( rulePerspectiveSearch )
+                    // InternalPerspectiveDsl.g:2828:3: rulePerspectiveSearch
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_11()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveSearch();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_11()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // InternalPerspectiveDsl.g:2833:2: ( rulePerspectiveDataInterchange )
+                    {
+                    // InternalPerspectiveDsl.g:2833:2: ( rulePerspectiveDataInterchange )
+                    // InternalPerspectiveDsl.g:2834:3: rulePerspectiveDataInterchange
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_12()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveDataInterchange();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_12()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // InternalPerspectiveDsl.g:2839:2: ( rulePerspectiveKanban )
+                    {
+                    // InternalPerspectiveDsl.g:2839:2: ( rulePerspectiveKanban )
+                    // InternalPerspectiveDsl.g:2840:3: rulePerspectiveKanban
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveKanbanParserRuleCall_13()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveKanban();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveKanbanParserRuleCall_13()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveView__Alternatives"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
+    // InternalPerspectiveDsl.g:2849: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 {
+            // InternalPerspectiveDsl.g:2853:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            int alt5=4;
+            alt5 = dfa5.predict(input);
+            switch (alt5) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2854:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2854:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:2855:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:2856:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:2856: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 :
+                    // InternalPerspectiveDsl.g:2860:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2860:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:2861:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:2862:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:2862: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 :
+                    // InternalPerspectiveDsl.g:2866:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2866:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalPerspectiveDsl.g:2867:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
+                    }
+                    // InternalPerspectiveDsl.g:2868:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalPerspectiveDsl.g:2868: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 :
+                    // InternalPerspectiveDsl.g:2872:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2872:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalPerspectiveDsl.g:2873:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
+                    }
+                    // InternalPerspectiveDsl.g:2874:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalPerspectiveDsl.g:2874: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"
+    // InternalPerspectiveDsl.g:2882: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 {
+            // InternalPerspectiveDsl.g:2886:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==36) ) {
+                alt6=1;
+            }
+            else if ( (LA6_0==RULE_ID) ) {
+                alt6=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2887:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2887:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalPerspectiveDsl.g:2888:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:2889:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalPerspectiveDsl.g:2889: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 :
+                    // InternalPerspectiveDsl.g:2893:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2893:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalPerspectiveDsl.g:2894:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:2895:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalPerspectiveDsl.g:2895: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"
+    // InternalPerspectiveDsl.g:2903: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 {
+            // InternalPerspectiveDsl.g:2907:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt7=2;
+            alt7 = dfa7.predict(input);
+            switch (alt7) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2908:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2908:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:2909:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:2910:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalPerspectiveDsl.g:2910: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 :
+                    // InternalPerspectiveDsl.g:2914:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2914:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalPerspectiveDsl.g:2915:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:2916:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalPerspectiveDsl.g:2916: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"
+    // InternalPerspectiveDsl.g:2924: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 {
+            // InternalPerspectiveDsl.g:2928:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt8=2;
+            alt8 = dfa8.predict(input);
+            switch (alt8) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2929:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2929:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:2930:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:2931:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalPerspectiveDsl.g:2931: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 :
+                    // InternalPerspectiveDsl.g:2935:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2935:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:2936:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:2937:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalPerspectiveDsl.g:2937: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"
+    // InternalPerspectiveDsl.g:2945:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2949:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt9=2;
+            alt9 = dfa9.predict(input);
+            switch (alt9) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2950:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2950:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:2951:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:2952:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalPerspectiveDsl.g:2952: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 :
+                    // InternalPerspectiveDsl.g:2956:2: ( ruleXAnnotationOrExpression )
+                    {
+                    // InternalPerspectiveDsl.g:2956:2: ( ruleXAnnotationOrExpression )
+                    // InternalPerspectiveDsl.g:2957: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"
+    // InternalPerspectiveDsl.g:2966:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:2970:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==89) ) {
+                alt10=1;
+            }
+            else if ( ((LA10_0>=RULE_ID && LA10_0<=RULE_DECIMAL)||LA10_0==27||(LA10_0>=34 && LA10_0<=35)||LA10_0==40||(LA10_0>=45 && LA10_0<=50)||LA10_0==54||LA10_0==90||(LA10_0>=94 && LA10_0<=95)||LA10_0==98||LA10_0==100||(LA10_0>=104 && LA10_0<=112)||LA10_0==114||LA10_0==125) ) {
+                alt10=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+            switch (alt10) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2971:2: ( ruleXAnnotation )
+                    {
+                    // InternalPerspectiveDsl.g:2971:2: ( ruleXAnnotation )
+                    // InternalPerspectiveDsl.g:2972: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 :
+                    // InternalPerspectiveDsl.g:2977:2: ( ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:2977:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:2978: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"
+    // InternalPerspectiveDsl.g:2987: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 {
+            // InternalPerspectiveDsl.g:2991:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt11=2;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                int LA11_1 = input.LA(2);
+
+                if ( (LA11_1==13) ) {
+                    alt11=1;
+                }
+                else if ( (LA11_1==EOF||(LA11_1>=RULE_ID && LA11_1<=RULE_DECIMAL)||(LA11_1>=14 && LA11_1<=50)||(LA11_1>=54 && LA11_1<=55)||LA11_1==88||(LA11_1>=90 && LA11_1<=115)||(LA11_1>=121 && LA11_1<=122)||(LA11_1>=124 && LA11_1<=125)) ) {
+                    alt11=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 45:
+                {
+                int LA11_2 = input.LA(2);
+
+                if ( (LA11_2==EOF||(LA11_2>=RULE_ID && LA11_2<=RULE_DECIMAL)||(LA11_2>=14 && LA11_2<=50)||(LA11_2>=54 && LA11_2<=55)||LA11_2==88||(LA11_2>=90 && LA11_2<=115)||(LA11_2>=121 && LA11_2<=122)||(LA11_2>=124 && LA11_2<=125)) ) {
+                    alt11=2;
+                }
+                else if ( (LA11_2==13) ) {
+                    alt11=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 46:
+                {
+                int LA11_3 = input.LA(2);
+
+                if ( (LA11_3==EOF||(LA11_3>=RULE_ID && LA11_3<=RULE_DECIMAL)||(LA11_3>=14 && LA11_3<=50)||(LA11_3>=54 && LA11_3<=55)||LA11_3==88||(LA11_3>=90 && LA11_3<=115)||(LA11_3>=121 && LA11_3<=122)||(LA11_3>=124 && LA11_3<=125)) ) {
+                    alt11=2;
+                }
+                else if ( (LA11_3==13) ) {
+                    alt11=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 47:
+                {
+                int LA11_4 = input.LA(2);
+
+                if ( (LA11_4==13) ) {
+                    alt11=1;
+                }
+                else if ( (LA11_4==EOF||(LA11_4>=RULE_ID && LA11_4<=RULE_DECIMAL)||(LA11_4>=14 && LA11_4<=50)||(LA11_4>=54 && LA11_4<=55)||LA11_4==88||(LA11_4>=90 && LA11_4<=115)||(LA11_4>=121 && LA11_4<=122)||(LA11_4>=124 && LA11_4<=125)) ) {
+                    alt11=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 48:
+                {
+                int LA11_5 = input.LA(2);
+
+                if ( (LA11_5==EOF||(LA11_5>=RULE_ID && LA11_5<=RULE_DECIMAL)||(LA11_5>=14 && LA11_5<=50)||(LA11_5>=54 && LA11_5<=55)||LA11_5==88||(LA11_5>=90 && LA11_5<=115)||(LA11_5>=121 && LA11_5<=122)||(LA11_5>=124 && LA11_5<=125)) ) {
+                    alt11=2;
+                }
+                else if ( (LA11_5==13) ) {
+                    alt11=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 5, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_STRING:
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+            case 27:
+            case 34:
+            case 35:
+            case 40:
+            case 49:
+            case 50:
+            case 54:
+            case 90:
+            case 94:
+            case 95:
+            case 98:
+            case 100:
+            case 104:
+            case 105:
+            case 106:
+            case 107:
+            case 108:
+            case 109:
+            case 110:
+            case 111:
+            case 112:
+            case 114:
+            case 125:
+                {
+                alt11=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt11) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2992:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2992:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:2993:3: ( rule__XAssignment__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:2994:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalPerspectiveDsl.g:2994: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 :
+                    // InternalPerspectiveDsl.g:2998:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:2998:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:2999:3: ( rule__XAssignment__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3000:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3000: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"
+    // InternalPerspectiveDsl.g:3008: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 {
+            // InternalPerspectiveDsl.g:3012:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt12=7;
+            switch ( input.LA(1) ) {
+            case 16:
+                {
+                alt12=1;
+                }
+                break;
+            case 17:
+                {
+                alt12=2;
+                }
+                break;
+            case 18:
+                {
+                alt12=3;
+                }
+                break;
+            case 19:
+                {
+                alt12=4;
+                }
+                break;
+            case 20:
+                {
+                alt12=5;
+                }
+                break;
+            case 27:
+                {
+                alt12=6;
+                }
+                break;
+            case 26:
+                {
+                alt12=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt12) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3013:2: ( '+=' )
+                    {
+                    // InternalPerspectiveDsl.g:3013:2: ( '+=' )
+                    // InternalPerspectiveDsl.g:3014: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 :
+                    // InternalPerspectiveDsl.g:3019:2: ( '-=' )
+                    {
+                    // InternalPerspectiveDsl.g:3019:2: ( '-=' )
+                    // InternalPerspectiveDsl.g:3020: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 :
+                    // InternalPerspectiveDsl.g:3025:2: ( '*=' )
+                    {
+                    // InternalPerspectiveDsl.g:3025:2: ( '*=' )
+                    // InternalPerspectiveDsl.g:3026: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 :
+                    // InternalPerspectiveDsl.g:3031:2: ( '/=' )
+                    {
+                    // InternalPerspectiveDsl.g:3031:2: ( '/=' )
+                    // InternalPerspectiveDsl.g:3032: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 :
+                    // InternalPerspectiveDsl.g:3037:2: ( '%=' )
+                    {
+                    // InternalPerspectiveDsl.g:3037:2: ( '%=' )
+                    // InternalPerspectiveDsl.g:3038: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 :
+                    // InternalPerspectiveDsl.g:3043:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3043:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3044:3: ( rule__OpMultiAssign__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
+                    }
+                    // InternalPerspectiveDsl.g:3045:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3045: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 :
+                    // InternalPerspectiveDsl.g:3049:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3049:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3050:3: ( rule__OpMultiAssign__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
+                    }
+                    // InternalPerspectiveDsl.g:3051:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3051: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"
+    // InternalPerspectiveDsl.g:3059:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    public final void rule__OpEquality__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3063:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            int alt13=4;
+            switch ( input.LA(1) ) {
+            case 21:
+                {
+                alt13=1;
+                }
+                break;
+            case 22:
+                {
+                alt13=2;
+                }
+                break;
+            case 23:
+                {
+                alt13=3;
+                }
+                break;
+            case 24:
+                {
+                alt13=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 13, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt13) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3064:2: ( '==' )
+                    {
+                    // InternalPerspectiveDsl.g:3064:2: ( '==' )
+                    // InternalPerspectiveDsl.g:3065: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 :
+                    // InternalPerspectiveDsl.g:3070:2: ( '!=' )
+                    {
+                    // InternalPerspectiveDsl.g:3070:2: ( '!=' )
+                    // InternalPerspectiveDsl.g:3071: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 :
+                    // InternalPerspectiveDsl.g:3076:2: ( '===' )
+                    {
+                    // InternalPerspectiveDsl.g:3076:2: ( '===' )
+                    // InternalPerspectiveDsl.g:3077: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 :
+                    // InternalPerspectiveDsl.g:3082:2: ( '!==' )
+                    {
+                    // InternalPerspectiveDsl.g:3082:2: ( '!==' )
+                    // InternalPerspectiveDsl.g:3083: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"
+    // InternalPerspectiveDsl.g:3092: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 {
+            // InternalPerspectiveDsl.g:3096:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==96) ) {
+                alt14=1;
+            }
+            else if ( ((LA14_0>=25 && LA14_0<=27)) ) {
+                alt14=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 14, 0, input);
+
+                throw nvae;
+            }
+            switch (alt14) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3097:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3097:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3098:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3099:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3099: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 :
+                    // InternalPerspectiveDsl.g:3103:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3103:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3104:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3105:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3105: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"
+    // InternalPerspectiveDsl.g:3113:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    public final void rule__OpCompare__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3117:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            int alt15=4;
+            switch ( input.LA(1) ) {
+            case 25:
+                {
+                alt15=1;
+                }
+                break;
+            case 27:
+                {
+                int LA15_2 = input.LA(2);
+
+                if ( (LA15_2==13) ) {
+                    alt15=2;
+                }
+                else if ( (LA15_2==EOF||(LA15_2>=RULE_ID && LA15_2<=RULE_DECIMAL)||LA15_2==27||(LA15_2>=34 && LA15_2<=35)||LA15_2==40||(LA15_2>=45 && LA15_2<=50)||LA15_2==54||LA15_2==90||(LA15_2>=94 && LA15_2<=95)||LA15_2==98||LA15_2==100||(LA15_2>=104 && LA15_2<=112)||LA15_2==114||LA15_2==125) ) {
+                    alt15=4;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 15, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 26:
+                {
+                alt15=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt15) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3118:2: ( '>=' )
+                    {
+                    // InternalPerspectiveDsl.g:3118:2: ( '>=' )
+                    // InternalPerspectiveDsl.g:3119: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 :
+                    // InternalPerspectiveDsl.g:3124:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3124:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3125:3: ( rule__OpCompare__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGroup_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3126:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3126: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 :
+                    // InternalPerspectiveDsl.g:3130:2: ( '>' )
+                    {
+                    // InternalPerspectiveDsl.g:3130:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3131: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 :
+                    // InternalPerspectiveDsl.g:3136:2: ( '<' )
+                    {
+                    // InternalPerspectiveDsl.g:3136:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3137: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"
+    // InternalPerspectiveDsl.g:3146: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 {
+            // InternalPerspectiveDsl.g:3150:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            int alt16=9;
+            alt16 = dfa16.predict(input);
+            switch (alt16) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3151:2: ( '->' )
+                    {
+                    // InternalPerspectiveDsl.g:3151:2: ( '->' )
+                    // InternalPerspectiveDsl.g:3152: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 :
+                    // InternalPerspectiveDsl.g:3157:2: ( '..<' )
+                    {
+                    // InternalPerspectiveDsl.g:3157:2: ( '..<' )
+                    // InternalPerspectiveDsl.g:3158: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 :
+                    // InternalPerspectiveDsl.g:3163:2: ( ( rule__OpOther__Group_2__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3163:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalPerspectiveDsl.g:3164:3: ( rule__OpOther__Group_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_2()); 
+                    }
+                    // InternalPerspectiveDsl.g:3165:3: ( rule__OpOther__Group_2__0 )
+                    // InternalPerspectiveDsl.g:3165: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 :
+                    // InternalPerspectiveDsl.g:3169:2: ( '..' )
+                    {
+                    // InternalPerspectiveDsl.g:3169:2: ( '..' )
+                    // InternalPerspectiveDsl.g:3170: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 :
+                    // InternalPerspectiveDsl.g:3175:2: ( '=>' )
+                    {
+                    // InternalPerspectiveDsl.g:3175:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3176: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 :
+                    // InternalPerspectiveDsl.g:3181:2: ( ( rule__OpOther__Group_5__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3181:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3182:3: ( rule__OpOther__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_5()); 
+                    }
+                    // InternalPerspectiveDsl.g:3183:3: ( rule__OpOther__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3183: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 :
+                    // InternalPerspectiveDsl.g:3187:2: ( ( rule__OpOther__Group_6__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3187:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3188:3: ( rule__OpOther__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_6()); 
+                    }
+                    // InternalPerspectiveDsl.g:3189:3: ( rule__OpOther__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3189: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 :
+                    // InternalPerspectiveDsl.g:3193:2: ( '<>' )
+                    {
+                    // InternalPerspectiveDsl.g:3193:2: ( '<>' )
+                    // InternalPerspectiveDsl.g:3194: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 :
+                    // InternalPerspectiveDsl.g:3199:2: ( '?:' )
+                    {
+                    // InternalPerspectiveDsl.g:3199:2: ( '?:' )
+                    // InternalPerspectiveDsl.g:3200: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"
+    // InternalPerspectiveDsl.g:3209: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 {
+            // InternalPerspectiveDsl.g:3213:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==26) ) {
+                int LA17_1 = input.LA(2);
+
+                if ( (LA17_1==26) ) {
+                    alt17=1;
+                }
+                else if ( (LA17_1==EOF||(LA17_1>=RULE_ID && LA17_1<=RULE_DECIMAL)||LA17_1==27||(LA17_1>=34 && LA17_1<=35)||LA17_1==40||(LA17_1>=45 && LA17_1<=50)||LA17_1==54||LA17_1==90||(LA17_1>=94 && LA17_1<=95)||LA17_1==98||LA17_1==100||(LA17_1>=104 && LA17_1<=112)||LA17_1==114||LA17_1==125) ) {
+                    alt17=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 17, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 17, 0, input);
+
+                throw nvae;
+            }
+            switch (alt17) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3214:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3214:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3215:3: ( rule__OpOther__Group_5_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3216:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalPerspectiveDsl.g:3216: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 :
+                    // InternalPerspectiveDsl.g:3220:2: ( '>' )
+                    {
+                    // InternalPerspectiveDsl.g:3220:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3221: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"
+    // InternalPerspectiveDsl.g:3230: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 {
+            // InternalPerspectiveDsl.g:3234:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            int alt18=3;
+            int LA18_0 = input.LA(1);
+
+            if ( (LA18_0==27) ) {
+                int LA18_1 = input.LA(2);
+
+                if ( (synpred49_InternalPerspectiveDsl()) ) {
+                    alt18=1;
+                }
+                else if ( (synpred50_InternalPerspectiveDsl()) ) {
+                    alt18=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 18, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA18_0==31) ) {
+                alt18=3;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 18, 0, input);
+
+                throw nvae;
+            }
+            switch (alt18) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3235:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3235:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3236:3: ( rule__OpOther__Group_6_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3237:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalPerspectiveDsl.g:3237: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 :
+                    // InternalPerspectiveDsl.g:3241:2: ( '<' )
+                    {
+                    // InternalPerspectiveDsl.g:3241:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3242: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 :
+                    // InternalPerspectiveDsl.g:3247:2: ( '=>' )
+                    {
+                    // InternalPerspectiveDsl.g:3247:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3248: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"
+    // InternalPerspectiveDsl.g:3257:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    public final void rule__OpAdd__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3261:1: ( ( '+' ) | ( '-' ) )
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==34) ) {
+                alt19=1;
+            }
+            else if ( (LA19_0==35) ) {
+                alt19=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 19, 0, input);
+
+                throw nvae;
+            }
+            switch (alt19) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3262:2: ( '+' )
+                    {
+                    // InternalPerspectiveDsl.g:3262:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3263: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 :
+                    // InternalPerspectiveDsl.g:3268:2: ( '-' )
+                    {
+                    // InternalPerspectiveDsl.g:3268:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3269: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"
+    // InternalPerspectiveDsl.g:3278:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    public final void rule__OpMulti__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3282:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            int alt20=4;
+            switch ( input.LA(1) ) {
+            case 36:
+                {
+                alt20=1;
+                }
+                break;
+            case 37:
+                {
+                alt20=2;
+                }
+                break;
+            case 38:
+                {
+                alt20=3;
+                }
+                break;
+            case 39:
+                {
+                alt20=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 20, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt20) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3283:2: ( '*' )
+                    {
+                    // InternalPerspectiveDsl.g:3283:2: ( '*' )
+                    // InternalPerspectiveDsl.g:3284: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 :
+                    // InternalPerspectiveDsl.g:3289:2: ( '**' )
+                    {
+                    // InternalPerspectiveDsl.g:3289:2: ( '**' )
+                    // InternalPerspectiveDsl.g:3290: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 :
+                    // InternalPerspectiveDsl.g:3295:2: ( '/' )
+                    {
+                    // InternalPerspectiveDsl.g:3295:2: ( '/' )
+                    // InternalPerspectiveDsl.g:3296: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 :
+                    // InternalPerspectiveDsl.g:3301:2: ( '%' )
+                    {
+                    // InternalPerspectiveDsl.g:3301:2: ( '%' )
+                    // InternalPerspectiveDsl.g:3302: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"
+    // InternalPerspectiveDsl.g:3311:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3315:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( ((LA21_0>=34 && LA21_0<=35)||LA21_0==40) ) {
+                alt21=1;
+            }
+            else if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_DECIMAL)||LA21_0==27||(LA21_0>=45 && LA21_0<=50)||LA21_0==54||LA21_0==90||(LA21_0>=94 && LA21_0<=95)||LA21_0==98||LA21_0==100||(LA21_0>=104 && LA21_0<=112)||LA21_0==114||LA21_0==125) ) {
+                alt21=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 21, 0, input);
+
+                throw nvae;
+            }
+            switch (alt21) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3316:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3316:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3317:3: ( rule__XUnaryOperation__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3318:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3318: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 :
+                    // InternalPerspectiveDsl.g:3322:2: ( ruleXCastedExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3322:2: ( ruleXCastedExpression )
+                    // InternalPerspectiveDsl.g:3323: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"
+    // InternalPerspectiveDsl.g:3332:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    public final void rule__OpUnary__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3336:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            int alt22=3;
+            switch ( input.LA(1) ) {
+            case 40:
+                {
+                alt22=1;
+                }
+                break;
+            case 35:
+                {
+                alt22=2;
+                }
+                break;
+            case 34:
+                {
+                alt22=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 22, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt22) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3337:2: ( '!' )
+                    {
+                    // InternalPerspectiveDsl.g:3337:2: ( '!' )
+                    // InternalPerspectiveDsl.g:3338: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 :
+                    // InternalPerspectiveDsl.g:3343:2: ( '-' )
+                    {
+                    // InternalPerspectiveDsl.g:3343:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3344: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 :
+                    // InternalPerspectiveDsl.g:3349:2: ( '+' )
+                    {
+                    // InternalPerspectiveDsl.g:3349:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3350: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"
+    // InternalPerspectiveDsl.g:3359:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    public final void rule__OpPostfix__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3363:1: ( ( '++' ) | ( '--' ) )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==41) ) {
+                alt23=1;
+            }
+            else if ( (LA23_0==42) ) {
+                alt23=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 23, 0, input);
+
+                throw nvae;
+            }
+            switch (alt23) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3364:2: ( '++' )
+                    {
+                    // InternalPerspectiveDsl.g:3364:2: ( '++' )
+                    // InternalPerspectiveDsl.g:3365: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 :
+                    // InternalPerspectiveDsl.g:3370:2: ( '--' )
+                    {
+                    // InternalPerspectiveDsl.g:3370:2: ( '--' )
+                    // InternalPerspectiveDsl.g:3371: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"
+    // InternalPerspectiveDsl.g:3380: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 {
+            // InternalPerspectiveDsl.g:3384:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            int alt24=2;
+            alt24 = dfa24.predict(input);
+            switch (alt24) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3385:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3385:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3386:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3387:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3387: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 :
+                    // InternalPerspectiveDsl.g:3391:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3391:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3392:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3393:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3393: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"
+    // InternalPerspectiveDsl.g:3401: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 {
+            // InternalPerspectiveDsl.g:3405:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==43) ) {
+                alt25=1;
+            }
+            else if ( (LA25_0==121) ) {
+                alt25=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 25, 0, input);
+
+                throw nvae;
+            }
+            switch (alt25) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3406:2: ( '.' )
+                    {
+                    // InternalPerspectiveDsl.g:3406:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3407: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 :
+                    // InternalPerspectiveDsl.g:3412:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3412:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3413:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3414:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3414: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"
+    // InternalPerspectiveDsl.g:3422: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 {
+            // InternalPerspectiveDsl.g:3426:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
+            int alt26=3;
+            switch ( input.LA(1) ) {
+            case 43:
+                {
+                alt26=1;
+                }
+                break;
+            case 122:
+                {
+                alt26=2;
+                }
+                break;
+            case 121:
+                {
+                alt26=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 26, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt26) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3427:2: ( '.' )
+                    {
+                    // InternalPerspectiveDsl.g:3427:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3428: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 :
+                    // InternalPerspectiveDsl.g:3433:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3433:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3434:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3435:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3435: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 :
+                    // InternalPerspectiveDsl.g:3439:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3439:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalPerspectiveDsl.g:3440:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); 
+                    }
+                    // InternalPerspectiveDsl.g:3441:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalPerspectiveDsl.g:3441: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"
+    // InternalPerspectiveDsl.g:3449: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 {
+            // InternalPerspectiveDsl.g:3453:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
+            int alt27=2;
+            alt27 = dfa27.predict(input);
+            switch (alt27) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3454:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3454:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3455:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3456:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalPerspectiveDsl.g:3456: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 :
+                    // InternalPerspectiveDsl.g:3460:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3460:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3461:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3462:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3462: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"
+    // InternalPerspectiveDsl.g:3470: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 {
+            // InternalPerspectiveDsl.g:3474:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
+            int alt28=15;
+            alt28 = dfa28.predict(input);
+            switch (alt28) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3475:2: ( ruleXConstructorCall )
+                    {
+                    // InternalPerspectiveDsl.g:3475:2: ( ruleXConstructorCall )
+                    // InternalPerspectiveDsl.g:3476: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 :
+                    // InternalPerspectiveDsl.g:3481:2: ( ruleXBlockExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3481:2: ( ruleXBlockExpression )
+                    // InternalPerspectiveDsl.g:3482: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 :
+                    // InternalPerspectiveDsl.g:3487:2: ( ruleXSwitchExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3487:2: ( ruleXSwitchExpression )
+                    // InternalPerspectiveDsl.g:3488: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 :
+                    // InternalPerspectiveDsl.g:3493:2: ( ( ruleXSynchronizedExpression ) )
+                    {
+                    // InternalPerspectiveDsl.g:3493:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalPerspectiveDsl.g:3494:3: ( ruleXSynchronizedExpression )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+                    }
+                    // InternalPerspectiveDsl.g:3495:3: ( ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:3495:4: ruleXSynchronizedExpression
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXSynchronizedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalPerspectiveDsl.g:3499:2: ( ruleXFeatureCall )
+                    {
+                    // InternalPerspectiveDsl.g:3499:2: ( ruleXFeatureCall )
+                    // InternalPerspectiveDsl.g:3500: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 :
+                    // InternalPerspectiveDsl.g:3505:2: ( ruleXLiteral )
+                    {
+                    // InternalPerspectiveDsl.g:3505:2: ( ruleXLiteral )
+                    // InternalPerspectiveDsl.g:3506: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 :
+                    // InternalPerspectiveDsl.g:3511:2: ( ruleXIfExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3511:2: ( ruleXIfExpression )
+                    // InternalPerspectiveDsl.g:3512: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 :
+                    // InternalPerspectiveDsl.g:3517:2: ( ( ruleXForLoopExpression ) )
+                    {
+                    // InternalPerspectiveDsl.g:3517:2: ( ( ruleXForLoopExpression ) )
+                    // InternalPerspectiveDsl.g:3518:3: ( ruleXForLoopExpression )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+                    }
+                    // InternalPerspectiveDsl.g:3519:3: ( ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:3519:4: ruleXForLoopExpression
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXForLoopExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalPerspectiveDsl.g:3523:2: ( ruleXBasicForLoopExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3523:2: ( ruleXBasicForLoopExpression )
+                    // InternalPerspectiveDsl.g:3524: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 :
+                    // InternalPerspectiveDsl.g:3529:2: ( ruleXWhileExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3529:2: ( ruleXWhileExpression )
+                    // InternalPerspectiveDsl.g:3530: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 :
+                    // InternalPerspectiveDsl.g:3535:2: ( ruleXDoWhileExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3535:2: ( ruleXDoWhileExpression )
+                    // InternalPerspectiveDsl.g:3536: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 :
+                    // InternalPerspectiveDsl.g:3541:2: ( ruleXThrowExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3541:2: ( ruleXThrowExpression )
+                    // InternalPerspectiveDsl.g:3542: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 :
+                    // InternalPerspectiveDsl.g:3547:2: ( ruleXReturnExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3547:2: ( ruleXReturnExpression )
+                    // InternalPerspectiveDsl.g:3548: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 :
+                    // InternalPerspectiveDsl.g:3553:2: ( ruleXTryCatchFinallyExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3553:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalPerspectiveDsl.g:3554: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 :
+                    // InternalPerspectiveDsl.g:3559:2: ( ruleXParenthesizedExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3559:2: ( ruleXParenthesizedExpression )
+                    // InternalPerspectiveDsl.g:3560: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"
+    // InternalPerspectiveDsl.g:3569:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
+    public final void rule__XLiteral__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3573:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
+            int alt29=7;
+            switch ( input.LA(1) ) {
+            case 94:
+                {
+                alt29=1;
+                }
+                break;
+            case 95:
+                {
+                alt29=2;
+                }
+                break;
+            case 50:
+            case 125:
+                {
+                alt29=3;
+                }
+                break;
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+                {
+                alt29=4;
+                }
+                break;
+            case 108:
+                {
+                alt29=5;
+                }
+                break;
+            case RULE_STRING:
+                {
+                alt29=6;
+                }
+                break;
+            case 109:
+                {
+                alt29=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 29, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt29) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3574:2: ( ruleXCollectionLiteral )
+                    {
+                    // InternalPerspectiveDsl.g:3574:2: ( ruleXCollectionLiteral )
+                    // InternalPerspectiveDsl.g:3575: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 :
+                    // InternalPerspectiveDsl.g:3580:2: ( ( ruleXClosure ) )
+                    {
+                    // InternalPerspectiveDsl.g:3580:2: ( ( ruleXClosure ) )
+                    // InternalPerspectiveDsl.g:3581:3: ( ruleXClosure )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3582:3: ( ruleXClosure )
+                    // InternalPerspectiveDsl.g:3582:4: ruleXClosure
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXClosure();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:3586:2: ( ruleXBooleanLiteral )
+                    {
+                    // InternalPerspectiveDsl.g:3586:2: ( ruleXBooleanLiteral )
+                    // InternalPerspectiveDsl.g:3587: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 :
+                    // InternalPerspectiveDsl.g:3592:2: ( ruleXNumberLiteral )
+                    {
+                    // InternalPerspectiveDsl.g:3592:2: ( ruleXNumberLiteral )
+                    // InternalPerspectiveDsl.g:3593: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 :
+                    // InternalPerspectiveDsl.g:3598:2: ( ruleXNullLiteral )
+                    {
+                    // InternalPerspectiveDsl.g:3598:2: ( ruleXNullLiteral )
+                    // InternalPerspectiveDsl.g:3599: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 :
+                    // InternalPerspectiveDsl.g:3604:2: ( ruleXStringLiteral )
+                    {
+                    // InternalPerspectiveDsl.g:3604:2: ( ruleXStringLiteral )
+                    // InternalPerspectiveDsl.g:3605: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 :
+                    // InternalPerspectiveDsl.g:3610:2: ( ruleXTypeLiteral )
+                    {
+                    // InternalPerspectiveDsl.g:3610:2: ( ruleXTypeLiteral )
+                    // InternalPerspectiveDsl.g:3611: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"
+    // InternalPerspectiveDsl.g:3620:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
+    public final void rule__XCollectionLiteral__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3624:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
+            int alt30=2;
+            int LA30_0 = input.LA(1);
+
+            if ( (LA30_0==94) ) {
+                int LA30_1 = input.LA(2);
+
+                if ( (LA30_1==54) ) {
+                    alt30=1;
+                }
+                else if ( (LA30_1==95) ) {
+                    alt30=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 30, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 30, 0, input);
+
+                throw nvae;
+            }
+            switch (alt30) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3625:2: ( ruleXSetLiteral )
+                    {
+                    // InternalPerspectiveDsl.g:3625:2: ( ruleXSetLiteral )
+                    // InternalPerspectiveDsl.g:3626: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 :
+                    // InternalPerspectiveDsl.g:3631:2: ( ruleXListLiteral )
+                    {
+                    // InternalPerspectiveDsl.g:3631:2: ( ruleXListLiteral )
+                    // InternalPerspectiveDsl.g:3632: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"
+    // InternalPerspectiveDsl.g:3641: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 {
+            // InternalPerspectiveDsl.g:3645:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
+            int alt31=2;
+            alt31 = dfa31.predict(input);
+            switch (alt31) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3646:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3646:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3647:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3648:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3648: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 :
+                    // InternalPerspectiveDsl.g:3652:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3652:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:3653:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3654:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:3654: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"
+    // InternalPerspectiveDsl.g:3662: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 {
+            // InternalPerspectiveDsl.g:3666:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==101) ) {
+                alt32=1;
+            }
+            else if ( (LA32_0==92) ) {
+                alt32=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 32, 0, input);
+
+                throw nvae;
+            }
+            switch (alt32) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3667:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3667:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3668:3: ( rule__XCasePart__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3669:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3669: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 :
+                    // InternalPerspectiveDsl.g:3673:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3673:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalPerspectiveDsl.g:3674:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3675:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalPerspectiveDsl.g:3675: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"
+    // InternalPerspectiveDsl.g:3683:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
+    public final void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3687:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==44||LA33_0==124) ) {
+                alt33=1;
+            }
+            else if ( ((LA33_0>=RULE_ID && LA33_0<=RULE_DECIMAL)||LA33_0==27||(LA33_0>=34 && LA33_0<=35)||LA33_0==40||(LA33_0>=45 && LA33_0<=50)||LA33_0==54||LA33_0==90||(LA33_0>=94 && LA33_0<=95)||LA33_0==98||LA33_0==100||(LA33_0>=104 && LA33_0<=112)||LA33_0==114||LA33_0==125) ) {
+                alt33=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 33, 0, input);
+
+                throw nvae;
+            }
+            switch (alt33) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3688:2: ( ruleXVariableDeclaration )
+                    {
+                    // InternalPerspectiveDsl.g:3688:2: ( ruleXVariableDeclaration )
+                    // InternalPerspectiveDsl.g:3689: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 :
+                    // InternalPerspectiveDsl.g:3694:2: ( ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:3694:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:3695: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"
+    // InternalPerspectiveDsl.g:3704:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
+    public final void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3708:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
+            int alt34=2;
+            int LA34_0 = input.LA(1);
+
+            if ( (LA34_0==124) ) {
+                alt34=1;
+            }
+            else if ( (LA34_0==44) ) {
+                alt34=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 34, 0, input);
+
+                throw nvae;
+            }
+            switch (alt34) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3709:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3709:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalPerspectiveDsl.g:3710:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3711:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalPerspectiveDsl.g:3711: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 :
+                    // InternalPerspectiveDsl.g:3715:2: ( 'val' )
+                    {
+                    // InternalPerspectiveDsl.g:3715:2: ( 'val' )
+                    // InternalPerspectiveDsl.g:3716: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"
+    // InternalPerspectiveDsl.g:3725: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 {
+            // InternalPerspectiveDsl.g:3729:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
+            int alt35=2;
+            int LA35_0 = input.LA(1);
+
+            if ( (LA35_0==RULE_ID) ) {
+                int LA35_1 = input.LA(2);
+
+                if ( (synpred89_InternalPerspectiveDsl()) ) {
+                    alt35=1;
+                }
+                else if ( (true) ) {
+                    alt35=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 35, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA35_0==31||LA35_0==90) ) {
+                alt35=1;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 35, 0, input);
+
+                throw nvae;
+            }
+            switch (alt35) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3730:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3730:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3731:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3732:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3732: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 :
+                    // InternalPerspectiveDsl.g:3736:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3736:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:3737:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3738:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:3738: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"
+    // InternalPerspectiveDsl.g:3746: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 {
+            // InternalPerspectiveDsl.g:3750:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
+            int alt36=2;
+            alt36 = dfa36.predict(input);
+            switch (alt36) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3751:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3751:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3752:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3753:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalPerspectiveDsl.g:3753: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 :
+                    // InternalPerspectiveDsl.g:3757:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3757:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3758:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3759:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3759: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"
+    // InternalPerspectiveDsl.g:3767:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
+    public final void rule__FeatureCallID__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3771:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
+            int alt37=5;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                alt37=1;
+                }
+                break;
+            case 45:
+                {
+                alt37=2;
+                }
+                break;
+            case 46:
+                {
+                alt37=3;
+                }
+                break;
+            case 47:
+                {
+                alt37=4;
+                }
+                break;
+            case 48:
+                {
+                alt37=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 37, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt37) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3772:2: ( ruleValidID )
+                    {
+                    // InternalPerspectiveDsl.g:3772:2: ( ruleValidID )
+                    // InternalPerspectiveDsl.g:3773: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 :
+                    // InternalPerspectiveDsl.g:3778:2: ( 'extends' )
+                    {
+                    // InternalPerspectiveDsl.g:3778:2: ( 'extends' )
+                    // InternalPerspectiveDsl.g:3779: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 :
+                    // InternalPerspectiveDsl.g:3784:2: ( 'static' )
+                    {
+                    // InternalPerspectiveDsl.g:3784:2: ( 'static' )
+                    // InternalPerspectiveDsl.g:3785: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 :
+                    // InternalPerspectiveDsl.g:3790:2: ( 'import' )
+                    {
+                    // InternalPerspectiveDsl.g:3790:2: ( 'import' )
+                    // InternalPerspectiveDsl.g:3791: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 :
+                    // InternalPerspectiveDsl.g:3796:2: ( 'extension' )
+                    {
+                    // InternalPerspectiveDsl.g:3796:2: ( 'extension' )
+                    // InternalPerspectiveDsl.g:3797: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"
+    // InternalPerspectiveDsl.g:3806:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
+    public final void rule__IdOrSuper__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3810:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
+            int alt38=2;
+            int LA38_0 = input.LA(1);
+
+            if ( (LA38_0==RULE_ID||(LA38_0>=45 && LA38_0<=48)) ) {
+                alt38=1;
+            }
+            else if ( (LA38_0==49) ) {
+                alt38=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 38, 0, input);
+
+                throw nvae;
+            }
+            switch (alt38) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3811:2: ( ruleFeatureCallID )
+                    {
+                    // InternalPerspectiveDsl.g:3811:2: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:3812: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 :
+                    // InternalPerspectiveDsl.g:3817:2: ( 'super' )
+                    {
+                    // InternalPerspectiveDsl.g:3817:2: ( 'super' )
+                    // InternalPerspectiveDsl.g:3818: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"
+    // InternalPerspectiveDsl.g:3827: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 {
+            // InternalPerspectiveDsl.g:3831:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
+            int alt39=2;
+            alt39 = dfa39.predict(input);
+            switch (alt39) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3832:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3832:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalPerspectiveDsl.g:3833:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3834:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalPerspectiveDsl.g:3834: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 :
+                    // InternalPerspectiveDsl.g:3838:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3838:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3839:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3840:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalPerspectiveDsl.g:3840: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"
+    // InternalPerspectiveDsl.g:3848:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
+    public final void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3852:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
+            int alt40=2;
+            int LA40_0 = input.LA(1);
+
+            if ( (LA40_0==50) ) {
+                alt40=1;
+            }
+            else if ( (LA40_0==125) ) {
+                alt40=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 40, 0, input);
+
+                throw nvae;
+            }
+            switch (alt40) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3853:2: ( 'false' )
+                    {
+                    // InternalPerspectiveDsl.g:3853:2: ( 'false' )
+                    // InternalPerspectiveDsl.g:3854: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 :
+                    // InternalPerspectiveDsl.g:3859:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3859:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalPerspectiveDsl.g:3860:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3861:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalPerspectiveDsl.g:3861: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"
+    // InternalPerspectiveDsl.g:3869: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 {
+            // InternalPerspectiveDsl.g:3873:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==115) ) {
+                alt41=1;
+            }
+            else if ( (LA41_0==113) ) {
+                alt41=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 41, 0, input);
+
+                throw nvae;
+            }
+            switch (alt41) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3874:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3874:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3875:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3876:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3876: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 :
+                    // InternalPerspectiveDsl.g:3880:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3880:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:3881:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3882:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:3882: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"
+    // InternalPerspectiveDsl.g:3890:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
+    public final void rule__Number__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3894:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
+            int alt42=2;
+            int LA42_0 = input.LA(1);
+
+            if ( (LA42_0==RULE_HEX) ) {
+                alt42=1;
+            }
+            else if ( ((LA42_0>=RULE_INT && LA42_0<=RULE_DECIMAL)) ) {
+                alt42=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 42, 0, input);
+
+                throw nvae;
+            }
+            switch (alt42) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3895:2: ( RULE_HEX )
+                    {
+                    // InternalPerspectiveDsl.g:3895:2: ( RULE_HEX )
+                    // InternalPerspectiveDsl.g:3896: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 :
+                    // InternalPerspectiveDsl.g:3901:2: ( ( rule__Number__Group_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3901:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3902:3: ( rule__Number__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getNumberAccess().getGroup_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:3903:3: ( rule__Number__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3903: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"
+    // InternalPerspectiveDsl.g:3911:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    public final void rule__Number__Alternatives_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3915:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt43=2;
+            int LA43_0 = input.LA(1);
+
+            if ( (LA43_0==RULE_INT) ) {
+                alt43=1;
+            }
+            else if ( (LA43_0==RULE_DECIMAL) ) {
+                alt43=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 43, 0, input);
+
+                throw nvae;
+            }
+            switch (alt43) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3916:2: ( RULE_INT )
+                    {
+                    // InternalPerspectiveDsl.g:3916:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:3917: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 :
+                    // InternalPerspectiveDsl.g:3922:2: ( RULE_DECIMAL )
+                    {
+                    // InternalPerspectiveDsl.g:3922:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:3923: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"
+    // InternalPerspectiveDsl.g:3932: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 {
+            // InternalPerspectiveDsl.g:3936:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==RULE_INT) ) {
+                alt44=1;
+            }
+            else if ( (LA44_0==RULE_DECIMAL) ) {
+                alt44=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 44, 0, input);
+
+                throw nvae;
+            }
+            switch (alt44) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3937:2: ( RULE_INT )
+                    {
+                    // InternalPerspectiveDsl.g:3937:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:3938: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 :
+                    // InternalPerspectiveDsl.g:3943:2: ( RULE_DECIMAL )
+                    {
+                    // InternalPerspectiveDsl.g:3943:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:3944: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"
+    // InternalPerspectiveDsl.g:3953:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
+    public final void rule__JvmTypeReference__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3957:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( (LA45_0==RULE_ID) ) {
+                alt45=1;
+            }
+            else if ( (LA45_0==31||LA45_0==90) ) {
+                alt45=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 45, 0, input);
+
+                throw nvae;
+            }
+            switch (alt45) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3958:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:3958:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3959:3: ( rule__JvmTypeReference__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:3960:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3960: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 :
+                    // InternalPerspectiveDsl.g:3964:2: ( ruleXFunctionTypeRef )
+                    {
+                    // InternalPerspectiveDsl.g:3964:2: ( ruleXFunctionTypeRef )
+                    // InternalPerspectiveDsl.g:3965: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"
+    // InternalPerspectiveDsl.g:3974:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
+    public final void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:3978:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
+            int alt46=2;
+            int LA46_0 = input.LA(1);
+
+            if ( (LA46_0==RULE_ID||LA46_0==31||LA46_0==90) ) {
+                alt46=1;
+            }
+            else if ( (LA46_0==116) ) {
+                alt46=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 46, 0, input);
+
+                throw nvae;
+            }
+            switch (alt46) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3979:2: ( ruleJvmTypeReference )
+                    {
+                    // InternalPerspectiveDsl.g:3979:2: ( ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:3980: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 :
+                    // InternalPerspectiveDsl.g:3985:2: ( ruleJvmWildcardTypeReference )
+                    {
+                    // InternalPerspectiveDsl.g:3985:2: ( ruleJvmWildcardTypeReference )
+                    // InternalPerspectiveDsl.g:3986: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"
+    // InternalPerspectiveDsl.g:3995: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 {
+            // InternalPerspectiveDsl.g:3999:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
+
+            if ( (LA47_0==45) ) {
+                alt47=1;
+            }
+            else if ( (LA47_0==49) ) {
+                alt47=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 47, 0, input);
+
+                throw nvae;
+            }
+            switch (alt47) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4000:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:4000:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:4001:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:4002:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:4002: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 :
+                    // InternalPerspectiveDsl.g:4006:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    {
+                    // InternalPerspectiveDsl.g:4006:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:4007:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:4008:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:4008: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__SashOrientation__Alternatives"
+    // InternalPerspectiveDsl.g:4016:1: rule__SashOrientation__Alternatives : ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) );
+    public final void rule__SashOrientation__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4020:1: ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) )
+            int alt48=2;
+            int LA48_0 = input.LA(1);
+
+            if ( (LA48_0==51) ) {
+                alt48=1;
+            }
+            else if ( (LA48_0==52) ) {
+                alt48=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 48, 0, input);
+
+                throw nvae;
+            }
+            switch (alt48) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4021:2: ( ( 'horizontal' ) )
+                    {
+                    // InternalPerspectiveDsl.g:4021:2: ( ( 'horizontal' ) )
+                    // InternalPerspectiveDsl.g:4022:3: ( 'horizontal' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:4023:3: ( 'horizontal' )
+                    // InternalPerspectiveDsl.g:4023:4: 'horizontal'
+                    {
+                    match(input,51,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:4027:2: ( ( 'vertical' ) )
+                    {
+                    // InternalPerspectiveDsl.g:4027:2: ( ( 'vertical' ) )
+                    // InternalPerspectiveDsl.g:4028:3: ( 'vertical' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:4029:3: ( 'vertical' )
+                    // InternalPerspectiveDsl.g:4029:4: 'vertical'
+                    {
+                    match(input,52,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SashOrientation__Alternatives"
+
+
+    // $ANTLR start "rule__PerspectiveModel__Group__0"
+    // InternalPerspectiveDsl.g:4037:1: rule__PerspectiveModel__Group__0 : rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1 ;
+    public final void rule__PerspectiveModel__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4041:1: ( rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1 )
+            // InternalPerspectiveDsl.g:4042:2: rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1
+            {
+            pushFollow(FOLLOW_5);
+            rule__PerspectiveModel__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveModel__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveModel__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveModel__Group__0__Impl"
+    // InternalPerspectiveDsl.g:4049:1: rule__PerspectiveModel__Group__0__Impl : ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? ) ;
+    public final void rule__PerspectiveModel__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4053:1: ( ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? ) )
+            // InternalPerspectiveDsl.g:4054:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
+            {
+            // InternalPerspectiveDsl.g:4054:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
+            // InternalPerspectiveDsl.g:4055:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveModelAccess().getImportSectionAssignment_0()); 
+            }
+            // InternalPerspectiveDsl.g:4056:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
+            int alt49=2;
+            int LA49_0 = input.LA(1);
+
+            if ( (LA49_0==47) ) {
+                alt49=1;
+            }
+            switch (alt49) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4056:3: rule__PerspectiveModel__ImportSectionAssignment_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveModel__ImportSectionAssignment_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveModelAccess().getImportSectionAssignment_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveModel__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveModel__Group__1"
+    // InternalPerspectiveDsl.g:4064:1: rule__PerspectiveModel__Group__1 : rule__PerspectiveModel__Group__1__Impl ;
+    public final void rule__PerspectiveModel__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4068:1: ( rule__PerspectiveModel__Group__1__Impl )
+            // InternalPerspectiveDsl.g:4069:2: rule__PerspectiveModel__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveModel__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveModel__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveModel__Group__1__Impl"
+    // InternalPerspectiveDsl.g:4075:1: rule__PerspectiveModel__Group__1__Impl : ( ( rule__PerspectiveModel__PackagesAssignment_1 )* ) ;
+    public final void rule__PerspectiveModel__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4079:1: ( ( ( rule__PerspectiveModel__PackagesAssignment_1 )* ) )
+            // InternalPerspectiveDsl.g:4080:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
+            {
+            // InternalPerspectiveDsl.g:4080:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
+            // InternalPerspectiveDsl.g:4081:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveModelAccess().getPackagesAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:4082:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
+            loop50:
+            do {
+                int alt50=2;
+                int LA50_0 = input.LA(1);
+
+                if ( (LA50_0==53) ) {
+                    alt50=1;
+                }
+
+
+                switch (alt50) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:4082:3: rule__PerspectiveModel__PackagesAssignment_1
+            	    {
+            	    pushFollow(FOLLOW_6);
+            	    rule__PerspectiveModel__PackagesAssignment_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop50;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveModelAccess().getPackagesAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveModel__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group__0"
+    // InternalPerspectiveDsl.g:4091:1: rule__PerspectivePackage__Group__0 : rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1 ;
+    public final void rule__PerspectivePackage__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4095:1: ( rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1 )
+            // InternalPerspectiveDsl.g:4096:2: rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1
+            {
+            pushFollow(FOLLOW_5);
+            rule__PerspectivePackage__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePackage__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group__0"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group__0__Impl"
+    // InternalPerspectiveDsl.g:4103:1: rule__PerspectivePackage__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectivePackage__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4107:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:4108:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:4108:1: ( () )
+            // InternalPerspectiveDsl.g:4109:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:4110:2: ()
+            // InternalPerspectiveDsl.g:4110:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group__1"
+    // InternalPerspectiveDsl.g:4118:1: rule__PerspectivePackage__Group__1 : rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2 ;
+    public final void rule__PerspectivePackage__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4122:1: ( rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2 )
+            // InternalPerspectiveDsl.g:4123:2: rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectivePackage__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePackage__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group__1"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group__1__Impl"
+    // InternalPerspectiveDsl.g:4130:1: rule__PerspectivePackage__Group__1__Impl : ( 'package' ) ;
+    public final void rule__PerspectivePackage__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4134:1: ( ( 'package' ) )
+            // InternalPerspectiveDsl.g:4135:1: ( 'package' )
+            {
+            // InternalPerspectiveDsl.g:4135:1: ( 'package' )
+            // InternalPerspectiveDsl.g:4136:2: 'package'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getPackageKeyword_1()); 
+            }
+            match(input,53,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getPackageKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group__2"
+    // InternalPerspectiveDsl.g:4145:1: rule__PerspectivePackage__Group__2 : rule__PerspectivePackage__Group__2__Impl rule__PerspectivePackage__Group__3 ;
+    public final void rule__PerspectivePackage__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4149:1: ( rule__PerspectivePackage__Group__2__Impl rule__PerspectivePackage__Group__3 )
+            // InternalPerspectiveDsl.g:4150:2: rule__PerspectivePackage__Group__2__Impl rule__PerspectivePackage__Group__3
+            {
+            pushFollow(FOLLOW_8);
+            rule__PerspectivePackage__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePackage__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group__2"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group__2__Impl"
+    // InternalPerspectiveDsl.g:4157:1: rule__PerspectivePackage__Group__2__Impl : ( ( rule__PerspectivePackage__NameAssignment_2 ) ) ;
+    public final void rule__PerspectivePackage__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4161:1: ( ( ( rule__PerspectivePackage__NameAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:4162:1: ( ( rule__PerspectivePackage__NameAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:4162:1: ( ( rule__PerspectivePackage__NameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:4163:2: ( rule__PerspectivePackage__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getNameAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:4164:2: ( rule__PerspectivePackage__NameAssignment_2 )
+            // InternalPerspectiveDsl.g:4164:3: rule__PerspectivePackage__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePackage__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group__3"
+    // InternalPerspectiveDsl.g:4172:1: rule__PerspectivePackage__Group__3 : rule__PerspectivePackage__Group__3__Impl ;
+    public final void rule__PerspectivePackage__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4176:1: ( rule__PerspectivePackage__Group__3__Impl )
+            // InternalPerspectiveDsl.g:4177:2: rule__PerspectivePackage__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePackage__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group__3"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group__3__Impl"
+    // InternalPerspectiveDsl.g:4183:1: rule__PerspectivePackage__Group__3__Impl : ( ( rule__PerspectivePackage__Group_3__0 )? ) ;
+    public final void rule__PerspectivePackage__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4187:1: ( ( ( rule__PerspectivePackage__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:4188:1: ( ( rule__PerspectivePackage__Group_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:4188:1: ( ( rule__PerspectivePackage__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:4189:2: ( rule__PerspectivePackage__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:4190:2: ( rule__PerspectivePackage__Group_3__0 )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
+
+            if ( (LA51_0==54) ) {
+                alt51=1;
+            }
+            switch (alt51) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4190:3: rule__PerspectivePackage__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePackage__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group_3__0"
+    // InternalPerspectiveDsl.g:4199:1: rule__PerspectivePackage__Group_3__0 : rule__PerspectivePackage__Group_3__0__Impl rule__PerspectivePackage__Group_3__1 ;
+    public final void rule__PerspectivePackage__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4203:1: ( rule__PerspectivePackage__Group_3__0__Impl rule__PerspectivePackage__Group_3__1 )
+            // InternalPerspectiveDsl.g:4204:2: rule__PerspectivePackage__Group_3__0__Impl rule__PerspectivePackage__Group_3__1
+            {
+            pushFollow(FOLLOW_9);
+            rule__PerspectivePackage__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePackage__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group_3__0"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group_3__0__Impl"
+    // InternalPerspectiveDsl.g:4211:1: rule__PerspectivePackage__Group_3__0__Impl : ( '{' ) ;
+    public final void rule__PerspectivePackage__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4215:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:4216:1: ( '{' )
+            {
+            // InternalPerspectiveDsl.g:4216:1: ( '{' )
+            // InternalPerspectiveDsl.g:4217:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0()); 
+            }
+            match(input,54,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group_3__1"
+    // InternalPerspectiveDsl.g:4226:1: rule__PerspectivePackage__Group_3__1 : rule__PerspectivePackage__Group_3__1__Impl rule__PerspectivePackage__Group_3__2 ;
+    public final void rule__PerspectivePackage__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4230:1: ( rule__PerspectivePackage__Group_3__1__Impl rule__PerspectivePackage__Group_3__2 )
+            // InternalPerspectiveDsl.g:4231:2: rule__PerspectivePackage__Group_3__1__Impl rule__PerspectivePackage__Group_3__2
+            {
+            pushFollow(FOLLOW_9);
+            rule__PerspectivePackage__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePackage__Group_3__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group_3__1"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group_3__1__Impl"
+    // InternalPerspectiveDsl.g:4238:1: rule__PerspectivePackage__Group_3__1__Impl : ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* ) ;
+    public final void rule__PerspectivePackage__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4242:1: ( ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* ) )
+            // InternalPerspectiveDsl.g:4243:1: ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* )
+            {
+            // InternalPerspectiveDsl.g:4243:1: ( ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )* )
+            // InternalPerspectiveDsl.g:4244:2: ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getPerspectivesAssignment_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:4245:2: ( rule__PerspectivePackage__PerspectivesAssignment_3_1 )*
+            loop52:
+            do {
+                int alt52=2;
+                int LA52_0 = input.LA(1);
+
+                if ( (LA52_0==56) ) {
+                    alt52=1;
+                }
+
+
+                switch (alt52) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:4245:3: rule__PerspectivePackage__PerspectivesAssignment_3_1
+            	    {
+            	    pushFollow(FOLLOW_10);
+            	    rule__PerspectivePackage__PerspectivesAssignment_3_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop52;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getPerspectivesAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group_3__2"
+    // InternalPerspectiveDsl.g:4253:1: rule__PerspectivePackage__Group_3__2 : rule__PerspectivePackage__Group_3__2__Impl ;
+    public final void rule__PerspectivePackage__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4257:1: ( rule__PerspectivePackage__Group_3__2__Impl )
+            // InternalPerspectiveDsl.g:4258:2: rule__PerspectivePackage__Group_3__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePackage__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__PerspectivePackage__Group_3__2"
+
+
+    // $ANTLR start "rule__PerspectivePackage__Group_3__2__Impl"
+    // InternalPerspectiveDsl.g:4264:1: rule__PerspectivePackage__Group_3__2__Impl : ( '}' ) ;
+    public final void rule__PerspectivePackage__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4268:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:4269:1: ( '}' )
+            {
+            // InternalPerspectiveDsl.g:4269:1: ( '}' )
+            // InternalPerspectiveDsl.g:4270:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_2()); 
+            }
+            match(input,55,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group__0"
+    // InternalPerspectiveDsl.g:4280:1: rule__Perspective__Group__0 : rule__Perspective__Group__0__Impl rule__Perspective__Group__1 ;
+    public final void rule__Perspective__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4284:1: ( rule__Perspective__Group__0__Impl rule__Perspective__Group__1 )
+            // InternalPerspectiveDsl.g:4285:2: rule__Perspective__Group__0__Impl rule__Perspective__Group__1
+            {
+            pushFollow(FOLLOW_11);
+            rule__Perspective__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__0"
+
+
+    // $ANTLR start "rule__Perspective__Group__0__Impl"
+    // InternalPerspectiveDsl.g:4292:1: rule__Perspective__Group__0__Impl : ( () ) ;
+    public final void rule__Perspective__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4296:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:4297:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:4297:1: ( () )
+            // InternalPerspectiveDsl.g:4298:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getPerspectiveAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:4299:2: ()
+            // InternalPerspectiveDsl.g:4299:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getPerspectiveAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group__1"
+    // InternalPerspectiveDsl.g:4307:1: rule__Perspective__Group__1 : rule__Perspective__Group__1__Impl rule__Perspective__Group__2 ;
+    public final void rule__Perspective__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4311:1: ( rule__Perspective__Group__1__Impl rule__Perspective__Group__2 )
+            // InternalPerspectiveDsl.g:4312:2: rule__Perspective__Group__1__Impl rule__Perspective__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__Perspective__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__1"
+
+
+    // $ANTLR start "rule__Perspective__Group__1__Impl"
+    // InternalPerspectiveDsl.g:4319:1: rule__Perspective__Group__1__Impl : ( 'perspective' ) ;
+    public final void rule__Perspective__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4323:1: ( ( 'perspective' ) )
+            // InternalPerspectiveDsl.g:4324:1: ( 'perspective' )
+            {
+            // InternalPerspectiveDsl.g:4324:1: ( 'perspective' )
+            // InternalPerspectiveDsl.g:4325:2: 'perspective'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getPerspectiveKeyword_1()); 
+            }
+            match(input,56,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getPerspectiveKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group__2"
+    // InternalPerspectiveDsl.g:4334:1: rule__Perspective__Group__2 : rule__Perspective__Group__2__Impl rule__Perspective__Group__3 ;
+    public final void rule__Perspective__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4338:1: ( rule__Perspective__Group__2__Impl rule__Perspective__Group__3 )
+            // InternalPerspectiveDsl.g:4339:2: rule__Perspective__Group__2__Impl rule__Perspective__Group__3
+            {
+            pushFollow(FOLLOW_12);
+            rule__Perspective__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__2"
+
+
+    // $ANTLR start "rule__Perspective__Group__2__Impl"
+    // InternalPerspectiveDsl.g:4346:1: rule__Perspective__Group__2__Impl : ( ( rule__Perspective__NameAssignment_2 ) ) ;
+    public final void rule__Perspective__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4350:1: ( ( ( rule__Perspective__NameAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:4351:1: ( ( rule__Perspective__NameAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:4351:1: ( ( rule__Perspective__NameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:4352:2: ( rule__Perspective__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getNameAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:4353:2: ( rule__Perspective__NameAssignment_2 )
+            // InternalPerspectiveDsl.g:4353:3: rule__Perspective__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group__3"
+    // InternalPerspectiveDsl.g:4361:1: rule__Perspective__Group__3 : rule__Perspective__Group__3__Impl rule__Perspective__Group__4 ;
+    public final void rule__Perspective__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4365:1: ( rule__Perspective__Group__3__Impl rule__Perspective__Group__4 )
+            // InternalPerspectiveDsl.g:4366:2: rule__Perspective__Group__3__Impl rule__Perspective__Group__4
+            {
+            pushFollow(FOLLOW_12);
+            rule__Perspective__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__3"
+
+
+    // $ANTLR start "rule__Perspective__Group__3__Impl"
+    // InternalPerspectiveDsl.g:4373:1: rule__Perspective__Group__3__Impl : ( ( rule__Perspective__Group_3__0 )? ) ;
+    public final void rule__Perspective__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4377:1: ( ( ( rule__Perspective__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:4378:1: ( ( rule__Perspective__Group_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:4378:1: ( ( rule__Perspective__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:4379:2: ( rule__Perspective__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:4380:2: ( rule__Perspective__Group_3__0 )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
+
+            if ( (LA53_0==118) ) {
+                alt53=1;
+            }
+            switch (alt53) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4380:3: rule__Perspective__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Perspective__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group__4"
+    // InternalPerspectiveDsl.g:4388:1: rule__Perspective__Group__4 : rule__Perspective__Group__4__Impl rule__Perspective__Group__5 ;
+    public final void rule__Perspective__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4392:1: ( rule__Perspective__Group__4__Impl rule__Perspective__Group__5 )
+            // InternalPerspectiveDsl.g:4393:2: rule__Perspective__Group__4__Impl rule__Perspective__Group__5
+            {
+            pushFollow(FOLLOW_12);
+            rule__Perspective__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__4"
+
+
+    // $ANTLR start "rule__Perspective__Group__4__Impl"
+    // InternalPerspectiveDsl.g:4400:1: rule__Perspective__Group__4__Impl : ( ( rule__Perspective__Group_4__0 )? ) ;
+    public final void rule__Perspective__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4404:1: ( ( ( rule__Perspective__Group_4__0 )? ) )
+            // InternalPerspectiveDsl.g:4405:1: ( ( rule__Perspective__Group_4__0 )? )
+            {
+            // InternalPerspectiveDsl.g:4405:1: ( ( rule__Perspective__Group_4__0 )? )
+            // InternalPerspectiveDsl.g:4406:2: ( rule__Perspective__Group_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getGroup_4()); 
+            }
+            // InternalPerspectiveDsl.g:4407:2: ( rule__Perspective__Group_4__0 )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
+
+            if ( (LA54_0==57) ) {
+                alt54=1;
+            }
+            switch (alt54) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4407:3: rule__Perspective__Group_4__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Perspective__Group_4__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getGroup_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group__5"
+    // InternalPerspectiveDsl.g:4415:1: rule__Perspective__Group__5 : rule__Perspective__Group__5__Impl rule__Perspective__Group__6 ;
+    public final void rule__Perspective__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4419:1: ( rule__Perspective__Group__5__Impl rule__Perspective__Group__6 )
+            // InternalPerspectiveDsl.g:4420:2: rule__Perspective__Group__5__Impl rule__Perspective__Group__6
+            {
+            pushFollow(FOLLOW_8);
+            rule__Perspective__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__5"
+
+
+    // $ANTLR start "rule__Perspective__Group__5__Impl"
+    // InternalPerspectiveDsl.g:4427:1: rule__Perspective__Group__5__Impl : ( ( rule__Perspective__UnorderedGroup_5 ) ) ;
+    public final void rule__Perspective__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4431:1: ( ( ( rule__Perspective__UnorderedGroup_5 ) ) )
+            // InternalPerspectiveDsl.g:4432:1: ( ( rule__Perspective__UnorderedGroup_5 ) )
+            {
+            // InternalPerspectiveDsl.g:4432:1: ( ( rule__Perspective__UnorderedGroup_5 ) )
+            // InternalPerspectiveDsl.g:4433:2: ( rule__Perspective__UnorderedGroup_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5()); 
+            }
+            // InternalPerspectiveDsl.g:4434:2: ( rule__Perspective__UnorderedGroup_5 )
+            // InternalPerspectiveDsl.g:4434:3: rule__Perspective__UnorderedGroup_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__UnorderedGroup_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__5__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group__6"
+    // InternalPerspectiveDsl.g:4442:1: rule__Perspective__Group__6 : rule__Perspective__Group__6__Impl rule__Perspective__Group__7 ;
+    public final void rule__Perspective__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4446:1: ( rule__Perspective__Group__6__Impl rule__Perspective__Group__7 )
+            // InternalPerspectiveDsl.g:4447:2: rule__Perspective__Group__6__Impl rule__Perspective__Group__7
+            {
+            pushFollow(FOLLOW_13);
+            rule__Perspective__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__6"
+
+
+    // $ANTLR start "rule__Perspective__Group__6__Impl"
+    // InternalPerspectiveDsl.g:4454:1: rule__Perspective__Group__6__Impl : ( '{' ) ;
+    public final void rule__Perspective__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4458:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:4459:1: ( '{' )
+            {
+            // InternalPerspectiveDsl.g:4459:1: ( '{' )
+            // InternalPerspectiveDsl.g:4460:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getLeftCurlyBracketKeyword_6()); 
+            }
+            match(input,54,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getLeftCurlyBracketKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__6__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group__7"
+    // InternalPerspectiveDsl.g:4469:1: rule__Perspective__Group__7 : rule__Perspective__Group__7__Impl rule__Perspective__Group__8 ;
+    public final void rule__Perspective__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4473:1: ( rule__Perspective__Group__7__Impl rule__Perspective__Group__8 )
+            // InternalPerspectiveDsl.g:4474:2: rule__Perspective__Group__7__Impl rule__Perspective__Group__8
+            {
+            pushFollow(FOLLOW_13);
+            rule__Perspective__Group__7__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__8();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__7"
+
+
+    // $ANTLR start "rule__Perspective__Group__7__Impl"
+    // InternalPerspectiveDsl.g:4481:1: rule__Perspective__Group__7__Impl : ( ( rule__Perspective__ElementsAssignment_7 )* ) ;
+    public final void rule__Perspective__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4485:1: ( ( ( rule__Perspective__ElementsAssignment_7 )* ) )
+            // InternalPerspectiveDsl.g:4486:1: ( ( rule__Perspective__ElementsAssignment_7 )* )
+            {
+            // InternalPerspectiveDsl.g:4486:1: ( ( rule__Perspective__ElementsAssignment_7 )* )
+            // InternalPerspectiveDsl.g:4487:2: ( rule__Perspective__ElementsAssignment_7 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getElementsAssignment_7()); 
+            }
+            // InternalPerspectiveDsl.g:4488:2: ( rule__Perspective__ElementsAssignment_7 )*
+            loop55:
+            do {
+                int alt55=2;
+                int LA55_0 = input.LA(1);
+
+                if ( (LA55_0==62||(LA55_0>=66 && LA55_0<=67)) ) {
+                    alt55=1;
+                }
+
+
+                switch (alt55) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:4488:3: rule__Perspective__ElementsAssignment_7
+            	    {
+            	    pushFollow(FOLLOW_14);
+            	    rule__Perspective__ElementsAssignment_7();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop55;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getElementsAssignment_7()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__7__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group__8"
+    // InternalPerspectiveDsl.g:4496:1: rule__Perspective__Group__8 : rule__Perspective__Group__8__Impl ;
+    public final void rule__Perspective__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4500:1: ( rule__Perspective__Group__8__Impl )
+            // InternalPerspectiveDsl.g:4501:2: rule__Perspective__Group__8__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group__8__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__8"
+
+
+    // $ANTLR start "rule__Perspective__Group__8__Impl"
+    // InternalPerspectiveDsl.g:4507:1: rule__Perspective__Group__8__Impl : ( '}' ) ;
+    public final void rule__Perspective__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4511:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:4512:1: ( '}' )
+            {
+            // InternalPerspectiveDsl.g:4512:1: ( '}' )
+            // InternalPerspectiveDsl.g:4513:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8()); 
+            }
+            match(input,55,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group__8__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_3__0"
+    // InternalPerspectiveDsl.g:4523:1: rule__Perspective__Group_3__0 : rule__Perspective__Group_3__0__Impl rule__Perspective__Group_3__1 ;
+    public final void rule__Perspective__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4527:1: ( rule__Perspective__Group_3__0__Impl rule__Perspective__Group_3__1 )
+            // InternalPerspectiveDsl.g:4528:2: rule__Perspective__Group_3__0__Impl rule__Perspective__Group_3__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__Perspective__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_3__0"
+
+
+    // $ANTLR start "rule__Perspective__Group_3__0__Impl"
+    // InternalPerspectiveDsl.g:4535:1: rule__Perspective__Group_3__0__Impl : ( ( rule__Perspective__DescriptionAssignment_3_0 ) ) ;
+    public final void rule__Perspective__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4539:1: ( ( ( rule__Perspective__DescriptionAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:4540:1: ( ( rule__Perspective__DescriptionAssignment_3_0 ) )
+            {
+            // InternalPerspectiveDsl.g:4540:1: ( ( rule__Perspective__DescriptionAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:4541:2: ( rule__Perspective__DescriptionAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getDescriptionAssignment_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:4542:2: ( rule__Perspective__DescriptionAssignment_3_0 )
+            // InternalPerspectiveDsl.g:4542:3: rule__Perspective__DescriptionAssignment_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__DescriptionAssignment_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getDescriptionAssignment_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_3__1"
+    // InternalPerspectiveDsl.g:4550:1: rule__Perspective__Group_3__1 : rule__Perspective__Group_3__1__Impl ;
+    public final void rule__Perspective__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4554:1: ( rule__Perspective__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:4555:2: rule__Perspective__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__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__Perspective__Group_3__1"
+
+
+    // $ANTLR start "rule__Perspective__Group_3__1__Impl"
+    // InternalPerspectiveDsl.g:4561:1: rule__Perspective__Group_3__1__Impl : ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) ) ;
+    public final void rule__Perspective__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4565:1: ( ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:4566:1: ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) )
+            {
+            // InternalPerspectiveDsl.g:4566:1: ( ( rule__Perspective__DescriptionValueAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:4567:2: ( rule__Perspective__DescriptionValueAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getDescriptionValueAssignment_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:4568:2: ( rule__Perspective__DescriptionValueAssignment_3_1 )
+            // InternalPerspectiveDsl.g:4568:3: rule__Perspective__DescriptionValueAssignment_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__DescriptionValueAssignment_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getDescriptionValueAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_4__0"
+    // InternalPerspectiveDsl.g:4577:1: rule__Perspective__Group_4__0 : rule__Perspective__Group_4__0__Impl rule__Perspective__Group_4__1 ;
+    public final void rule__Perspective__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4581:1: ( rule__Perspective__Group_4__0__Impl rule__Perspective__Group_4__1 )
+            // InternalPerspectiveDsl.g:4582:2: rule__Perspective__Group_4__0__Impl rule__Perspective__Group_4__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__Perspective__Group_4__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_4__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_4__0"
+
+
+    // $ANTLR start "rule__Perspective__Group_4__0__Impl"
+    // InternalPerspectiveDsl.g:4589:1: rule__Perspective__Group_4__0__Impl : ( 'process' ) ;
+    public final void rule__Perspective__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4593:1: ( ( 'process' ) )
+            // InternalPerspectiveDsl.g:4594:1: ( 'process' )
+            {
+            // InternalPerspectiveDsl.g:4594:1: ( 'process' )
+            // InternalPerspectiveDsl.g:4595:2: 'process'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getProcessKeyword_4_0()); 
+            }
+            match(input,57,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getProcessKeyword_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_4__1"
+    // InternalPerspectiveDsl.g:4604:1: rule__Perspective__Group_4__1 : rule__Perspective__Group_4__1__Impl rule__Perspective__Group_4__2 ;
+    public final void rule__Perspective__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4608:1: ( rule__Perspective__Group_4__1__Impl rule__Perspective__Group_4__2 )
+            // InternalPerspectiveDsl.g:4609:2: rule__Perspective__Group_4__1__Impl rule__Perspective__Group_4__2
+            {
+            pushFollow(FOLLOW_16);
+            rule__Perspective__Group_4__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_4__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_4__1"
+
+
+    // $ANTLR start "rule__Perspective__Group_4__1__Impl"
+    // InternalPerspectiveDsl.g:4616:1: rule__Perspective__Group_4__1__Impl : ( ( rule__Perspective__ProcessAssignment_4_1 ) ) ;
+    public final void rule__Perspective__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4620:1: ( ( ( rule__Perspective__ProcessAssignment_4_1 ) ) )
+            // InternalPerspectiveDsl.g:4621:1: ( ( rule__Perspective__ProcessAssignment_4_1 ) )
+            {
+            // InternalPerspectiveDsl.g:4621:1: ( ( rule__Perspective__ProcessAssignment_4_1 ) )
+            // InternalPerspectiveDsl.g:4622:2: ( rule__Perspective__ProcessAssignment_4_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getProcessAssignment_4_1()); 
+            }
+            // InternalPerspectiveDsl.g:4623:2: ( rule__Perspective__ProcessAssignment_4_1 )
+            // InternalPerspectiveDsl.g:4623:3: rule__Perspective__ProcessAssignment_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__ProcessAssignment_4_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getProcessAssignment_4_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_4__2"
+    // InternalPerspectiveDsl.g:4631:1: rule__Perspective__Group_4__2 : rule__Perspective__Group_4__2__Impl rule__Perspective__Group_4__3 ;
+    public final void rule__Perspective__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4635:1: ( rule__Perspective__Group_4__2__Impl rule__Perspective__Group_4__3 )
+            // InternalPerspectiveDsl.g:4636:2: rule__Perspective__Group_4__2__Impl rule__Perspective__Group_4__3
+            {
+            pushFollow(FOLLOW_7);
+            rule__Perspective__Group_4__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_4__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_4__2"
+
+
+    // $ANTLR start "rule__Perspective__Group_4__2__Impl"
+    // InternalPerspectiveDsl.g:4643:1: rule__Perspective__Group_4__2__Impl : ( 'usertask' ) ;
+    public final void rule__Perspective__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4647:1: ( ( 'usertask' ) )
+            // InternalPerspectiveDsl.g:4648:1: ( 'usertask' )
+            {
+            // InternalPerspectiveDsl.g:4648:1: ( 'usertask' )
+            // InternalPerspectiveDsl.g:4649:2: 'usertask'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getUsertaskKeyword_4_2()); 
+            }
+            match(input,58,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getUsertaskKeyword_4_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_4__3"
+    // InternalPerspectiveDsl.g:4658:1: rule__Perspective__Group_4__3 : rule__Perspective__Group_4__3__Impl ;
+    public final void rule__Perspective__Group_4__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4662:1: ( rule__Perspective__Group_4__3__Impl )
+            // InternalPerspectiveDsl.g:4663:2: rule__Perspective__Group_4__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_4__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_4__3"
+
+
+    // $ANTLR start "rule__Perspective__Group_4__3__Impl"
+    // InternalPerspectiveDsl.g:4669:1: rule__Perspective__Group_4__3__Impl : ( ( rule__Perspective__UserTaskAssignment_4_3 ) ) ;
+    public final void rule__Perspective__Group_4__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4673:1: ( ( ( rule__Perspective__UserTaskAssignment_4_3 ) ) )
+            // InternalPerspectiveDsl.g:4674:1: ( ( rule__Perspective__UserTaskAssignment_4_3 ) )
+            {
+            // InternalPerspectiveDsl.g:4674:1: ( ( rule__Perspective__UserTaskAssignment_4_3 ) )
+            // InternalPerspectiveDsl.g:4675:2: ( rule__Perspective__UserTaskAssignment_4_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getUserTaskAssignment_4_3()); 
+            }
+            // InternalPerspectiveDsl.g:4676:2: ( rule__Perspective__UserTaskAssignment_4_3 )
+            // InternalPerspectiveDsl.g:4676:3: rule__Perspective__UserTaskAssignment_4_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__UserTaskAssignment_4_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getUserTaskAssignment_4_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_4__3__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_0__0"
+    // InternalPerspectiveDsl.g:4685:1: rule__Perspective__Group_5_0__0 : rule__Perspective__Group_5_0__0__Impl rule__Perspective__Group_5_0__1 ;
+    public final void rule__Perspective__Group_5_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4689:1: ( rule__Perspective__Group_5_0__0__Impl rule__Perspective__Group_5_0__1 )
+            // InternalPerspectiveDsl.g:4690:2: rule__Perspective__Group_5_0__0__Impl rule__Perspective__Group_5_0__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__Perspective__Group_5_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_5_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_0__0"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_0__0__Impl"
+    // InternalPerspectiveDsl.g:4697:1: rule__Perspective__Group_5_0__0__Impl : ( 'iconURI' ) ;
+    public final void rule__Perspective__Group_5_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4701:1: ( ( 'iconURI' ) )
+            // InternalPerspectiveDsl.g:4702:1: ( 'iconURI' )
+            {
+            // InternalPerspectiveDsl.g:4702:1: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:4703:2: 'iconURI'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0()); 
+            }
+            match(input,59,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_0__0__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_0__1"
+    // InternalPerspectiveDsl.g:4712:1: rule__Perspective__Group_5_0__1 : rule__Perspective__Group_5_0__1__Impl ;
+    public final void rule__Perspective__Group_5_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4716:1: ( rule__Perspective__Group_5_0__1__Impl )
+            // InternalPerspectiveDsl.g:4717:2: rule__Perspective__Group_5_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_5_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_0__1"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_0__1__Impl"
+    // InternalPerspectiveDsl.g:4723:1: rule__Perspective__Group_5_0__1__Impl : ( ( rule__Perspective__IconURIAssignment_5_0_1 ) ) ;
+    public final void rule__Perspective__Group_5_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4727:1: ( ( ( rule__Perspective__IconURIAssignment_5_0_1 ) ) )
+            // InternalPerspectiveDsl.g:4728:1: ( ( rule__Perspective__IconURIAssignment_5_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:4728:1: ( ( rule__Perspective__IconURIAssignment_5_0_1 ) )
+            // InternalPerspectiveDsl.g:4729:2: ( rule__Perspective__IconURIAssignment_5_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getIconURIAssignment_5_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:4730:2: ( rule__Perspective__IconURIAssignment_5_0_1 )
+            // InternalPerspectiveDsl.g:4730:3: rule__Perspective__IconURIAssignment_5_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__IconURIAssignment_5_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getIconURIAssignment_5_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_0__1__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_1__0"
+    // InternalPerspectiveDsl.g:4739:1: rule__Perspective__Group_5_1__0 : rule__Perspective__Group_5_1__0__Impl rule__Perspective__Group_5_1__1 ;
+    public final void rule__Perspective__Group_5_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4743:1: ( rule__Perspective__Group_5_1__0__Impl rule__Perspective__Group_5_1__1 )
+            // InternalPerspectiveDsl.g:4744:2: rule__Perspective__Group_5_1__0__Impl rule__Perspective__Group_5_1__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__Perspective__Group_5_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_5_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_1__0"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_1__0__Impl"
+    // InternalPerspectiveDsl.g:4751:1: rule__Perspective__Group_5_1__0__Impl : ( 'accessibility' ) ;
+    public final void rule__Perspective__Group_5_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4755:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:4756:1: ( 'accessibility' )
+            {
+            // InternalPerspectiveDsl.g:4756:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:4757:2: 'accessibility'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getAccessibilityKeyword_5_1_0()); 
+            }
+            match(input,60,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getAccessibilityKeyword_5_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_1__0__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_1__1"
+    // InternalPerspectiveDsl.g:4766:1: rule__Perspective__Group_5_1__1 : rule__Perspective__Group_5_1__1__Impl ;
+    public final void rule__Perspective__Group_5_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4770:1: ( rule__Perspective__Group_5_1__1__Impl )
+            // InternalPerspectiveDsl.g:4771:2: rule__Perspective__Group_5_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_5_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_1__1"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_1__1__Impl"
+    // InternalPerspectiveDsl.g:4777:1: rule__Perspective__Group_5_1__1__Impl : ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) ) ;
+    public final void rule__Perspective__Group_5_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4781:1: ( ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) ) )
+            // InternalPerspectiveDsl.g:4782:1: ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:4782:1: ( ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 ) )
+            // InternalPerspectiveDsl.g:4783:2: ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseAssignment_5_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:4784:2: ( rule__Perspective__AccessibilityPhraseAssignment_5_1_1 )
+            // InternalPerspectiveDsl.g:4784:3: rule__Perspective__AccessibilityPhraseAssignment_5_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__AccessibilityPhraseAssignment_5_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseAssignment_5_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_1__1__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_2__0"
+    // InternalPerspectiveDsl.g:4793:1: rule__Perspective__Group_5_2__0 : rule__Perspective__Group_5_2__0__Impl rule__Perspective__Group_5_2__1 ;
+    public final void rule__Perspective__Group_5_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4797:1: ( rule__Perspective__Group_5_2__0__Impl rule__Perspective__Group_5_2__1 )
+            // InternalPerspectiveDsl.g:4798:2: rule__Perspective__Group_5_2__0__Impl rule__Perspective__Group_5_2__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__Perspective__Group_5_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_5_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_2__0"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_2__0__Impl"
+    // InternalPerspectiveDsl.g:4805:1: rule__Perspective__Group_5_2__0__Impl : ( 'toolbar' ) ;
+    public final void rule__Perspective__Group_5_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4809:1: ( ( 'toolbar' ) )
+            // InternalPerspectiveDsl.g:4810:1: ( 'toolbar' )
+            {
+            // InternalPerspectiveDsl.g:4810:1: ( 'toolbar' )
+            // InternalPerspectiveDsl.g:4811:2: 'toolbar'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getToolbarKeyword_5_2_0()); 
+            }
+            match(input,61,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getToolbarKeyword_5_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_2__0__Impl"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_2__1"
+    // InternalPerspectiveDsl.g:4820:1: rule__Perspective__Group_5_2__1 : rule__Perspective__Group_5_2__1__Impl ;
+    public final void rule__Perspective__Group_5_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4824:1: ( rule__Perspective__Group_5_2__1__Impl )
+            // InternalPerspectiveDsl.g:4825:2: rule__Perspective__Group_5_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__Group_5_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_2__1"
+
+
+    // $ANTLR start "rule__Perspective__Group_5_2__1__Impl"
+    // InternalPerspectiveDsl.g:4831:1: rule__Perspective__Group_5_2__1__Impl : ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) ) ;
+    public final void rule__Perspective__Group_5_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4835:1: ( ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) ) )
+            // InternalPerspectiveDsl.g:4836:1: ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:4836:1: ( ( rule__Perspective__ToolbarAssignment_5_2_1 ) )
+            // InternalPerspectiveDsl.g:4837:2: ( rule__Perspective__ToolbarAssignment_5_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getToolbarAssignment_5_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:4838:2: ( rule__Perspective__ToolbarAssignment_5_2_1 )
+            // InternalPerspectiveDsl.g:4838:3: rule__Perspective__ToolbarAssignment_5_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__ToolbarAssignment_5_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getToolbarAssignment_5_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__Group_5_2__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__0"
+    // InternalPerspectiveDsl.g:4847:1: rule__PerspectiveSashContainer__Group__0 : rule__PerspectiveSashContainer__Group__0__Impl rule__PerspectiveSashContainer__Group__1 ;
+    public final void rule__PerspectiveSashContainer__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4851:1: ( rule__PerspectiveSashContainer__Group__0__Impl rule__PerspectiveSashContainer__Group__1 )
+            // InternalPerspectiveDsl.g:4852:2: rule__PerspectiveSashContainer__Group__0__Impl rule__PerspectiveSashContainer__Group__1
+            {
+            pushFollow(FOLLOW_17);
+            rule__PerspectiveSashContainer__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__0__Impl"
+    // InternalPerspectiveDsl.g:4859:1: rule__PerspectiveSashContainer__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveSashContainer__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4863:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:4864:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:4864:1: ( () )
+            // InternalPerspectiveDsl.g:4865:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getPerspectiveSashContainerAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:4866:2: ()
+            // InternalPerspectiveDsl.g:4866:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getPerspectiveSashContainerAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__1"
+    // InternalPerspectiveDsl.g:4874:1: rule__PerspectiveSashContainer__Group__1 : rule__PerspectiveSashContainer__Group__1__Impl rule__PerspectiveSashContainer__Group__2 ;
+    public final void rule__PerspectiveSashContainer__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4878:1: ( rule__PerspectiveSashContainer__Group__1__Impl rule__PerspectiveSashContainer__Group__2 )
+            // InternalPerspectiveDsl.g:4879:2: rule__PerspectiveSashContainer__Group__1__Impl rule__PerspectiveSashContainer__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveSashContainer__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__1__Impl"
+    // InternalPerspectiveDsl.g:4886:1: rule__PerspectiveSashContainer__Group__1__Impl : ( 'sashContainer' ) ;
+    public final void rule__PerspectiveSashContainer__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4890:1: ( ( 'sashContainer' ) )
+            // InternalPerspectiveDsl.g:4891:1: ( 'sashContainer' )
+            {
+            // InternalPerspectiveDsl.g:4891:1: ( 'sashContainer' )
+            // InternalPerspectiveDsl.g:4892:2: 'sashContainer'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getSashContainerKeyword_1()); 
+            }
+            match(input,62,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getSashContainerKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__2"
+    // InternalPerspectiveDsl.g:4901:1: rule__PerspectiveSashContainer__Group__2 : rule__PerspectiveSashContainer__Group__2__Impl rule__PerspectiveSashContainer__Group__3 ;
+    public final void rule__PerspectiveSashContainer__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4905:1: ( rule__PerspectiveSashContainer__Group__2__Impl rule__PerspectiveSashContainer__Group__3 )
+            // InternalPerspectiveDsl.g:4906:2: rule__PerspectiveSashContainer__Group__2__Impl rule__PerspectiveSashContainer__Group__3
+            {
+            pushFollow(FOLLOW_18);
+            rule__PerspectiveSashContainer__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__2__Impl"
+    // InternalPerspectiveDsl.g:4913:1: rule__PerspectiveSashContainer__Group__2__Impl : ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) ) ;
+    public final void rule__PerspectiveSashContainer__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4917:1: ( ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:4918:1: ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:4918:1: ( ( rule__PerspectiveSashContainer__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:4919:2: ( rule__PerspectiveSashContainer__ElementIdAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getElementIdAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:4920:2: ( rule__PerspectiveSashContainer__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:4920:3: rule__PerspectiveSashContainer__ElementIdAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__ElementIdAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getElementIdAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__3"
+    // InternalPerspectiveDsl.g:4928:1: rule__PerspectiveSashContainer__Group__3 : rule__PerspectiveSashContainer__Group__3__Impl rule__PerspectiveSashContainer__Group__4 ;
+    public final void rule__PerspectiveSashContainer__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4932:1: ( rule__PerspectiveSashContainer__Group__3__Impl rule__PerspectiveSashContainer__Group__4 )
+            // InternalPerspectiveDsl.g:4933:2: rule__PerspectiveSashContainer__Group__3__Impl rule__PerspectiveSashContainer__Group__4
+            {
+            pushFollow(FOLLOW_8);
+            rule__PerspectiveSashContainer__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__3"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__3__Impl"
+    // InternalPerspectiveDsl.g:4940:1: rule__PerspectiveSashContainer__Group__3__Impl : ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) ) ;
+    public final void rule__PerspectiveSashContainer__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4944:1: ( ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) ) )
+            // InternalPerspectiveDsl.g:4945:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) )
+            {
+            // InternalPerspectiveDsl.g:4945:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:4946:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:4947:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:4947:3: rule__PerspectiveSashContainer__UnorderedGroup_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__UnorderedGroup_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__4"
+    // InternalPerspectiveDsl.g:4955:1: rule__PerspectiveSashContainer__Group__4 : rule__PerspectiveSashContainer__Group__4__Impl rule__PerspectiveSashContainer__Group__5 ;
+    public final void rule__PerspectiveSashContainer__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4959:1: ( rule__PerspectiveSashContainer__Group__4__Impl rule__PerspectiveSashContainer__Group__5 )
+            // InternalPerspectiveDsl.g:4960:2: rule__PerspectiveSashContainer__Group__4__Impl rule__PerspectiveSashContainer__Group__5
+            {
+            pushFollow(FOLLOW_13);
+            rule__PerspectiveSashContainer__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__4"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__4__Impl"
+    // InternalPerspectiveDsl.g:4967:1: rule__PerspectiveSashContainer__Group__4__Impl : ( '{' ) ;
+    public final void rule__PerspectiveSashContainer__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4971:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:4972:1: ( '{' )
+            {
+            // InternalPerspectiveDsl.g:4972:1: ( '{' )
+            // InternalPerspectiveDsl.g:4973:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getLeftCurlyBracketKeyword_4()); 
+            }
+            match(input,54,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getLeftCurlyBracketKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__5"
+    // InternalPerspectiveDsl.g:4982:1: rule__PerspectiveSashContainer__Group__5 : rule__PerspectiveSashContainer__Group__5__Impl rule__PerspectiveSashContainer__Group__6 ;
+    public final void rule__PerspectiveSashContainer__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4986:1: ( rule__PerspectiveSashContainer__Group__5__Impl rule__PerspectiveSashContainer__Group__6 )
+            // InternalPerspectiveDsl.g:4987:2: rule__PerspectiveSashContainer__Group__5__Impl rule__PerspectiveSashContainer__Group__6
+            {
+            pushFollow(FOLLOW_13);
+            rule__PerspectiveSashContainer__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__5"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__5__Impl"
+    // InternalPerspectiveDsl.g:4994:1: rule__PerspectiveSashContainer__Group__5__Impl : ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* ) ;
+    public final void rule__PerspectiveSashContainer__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:4998:1: ( ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* ) )
+            // InternalPerspectiveDsl.g:4999:1: ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* )
+            {
+            // InternalPerspectiveDsl.g:4999:1: ( ( rule__PerspectiveSashContainer__ElementsAssignment_5 )* )
+            // InternalPerspectiveDsl.g:5000:2: ( rule__PerspectiveSashContainer__ElementsAssignment_5 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getElementsAssignment_5()); 
+            }
+            // InternalPerspectiveDsl.g:5001:2: ( rule__PerspectiveSashContainer__ElementsAssignment_5 )*
+            loop56:
+            do {
+                int alt56=2;
+                int LA56_0 = input.LA(1);
+
+                if ( (LA56_0==62||(LA56_0>=66 && LA56_0<=67)) ) {
+                    alt56=1;
+                }
+
+
+                switch (alt56) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:5001:3: rule__PerspectiveSashContainer__ElementsAssignment_5
+            	    {
+            	    pushFollow(FOLLOW_14);
+            	    rule__PerspectiveSashContainer__ElementsAssignment_5();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop56;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getElementsAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__5__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__6"
+    // InternalPerspectiveDsl.g:5009:1: rule__PerspectiveSashContainer__Group__6 : rule__PerspectiveSashContainer__Group__6__Impl ;
+    public final void rule__PerspectiveSashContainer__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5013:1: ( rule__PerspectiveSashContainer__Group__6__Impl )
+            // InternalPerspectiveDsl.g:5014:2: rule__PerspectiveSashContainer__Group__6__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__6"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group__6__Impl"
+    // InternalPerspectiveDsl.g:5020:1: rule__PerspectiveSashContainer__Group__6__Impl : ( '}' ) ;
+    public final void rule__PerspectiveSashContainer__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5024:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:5025:1: ( '}' )
+            {
+            // InternalPerspectiveDsl.g:5025:1: ( '}' )
+            // InternalPerspectiveDsl.g:5026:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getRightCurlyBracketKeyword_6()); 
+            }
+            match(input,55,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getRightCurlyBracketKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group__6__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_0__0"
+    // InternalPerspectiveDsl.g:5036:1: rule__PerspectiveSashContainer__Group_3_0__0 : rule__PerspectiveSashContainer__Group_3_0__0__Impl rule__PerspectiveSashContainer__Group_3_0__1 ;
+    public final void rule__PerspectiveSashContainer__Group_3_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5040:1: ( rule__PerspectiveSashContainer__Group_3_0__0__Impl rule__PerspectiveSashContainer__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:5041:2: rule__PerspectiveSashContainer__Group_3_0__0__Impl rule__PerspectiveSashContainer__Group_3_0__1
+            {
+            pushFollow(FOLLOW_19);
+            rule__PerspectiveSashContainer__Group_3_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__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__PerspectiveSashContainer__Group_3_0__0"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_0__0__Impl"
+    // InternalPerspectiveDsl.g:5048:1: rule__PerspectiveSashContainer__Group_3_0__0__Impl : ( 'orientation' ) ;
+    public final void rule__PerspectiveSashContainer__Group_3_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5052:1: ( ( 'orientation' ) )
+            // InternalPerspectiveDsl.g:5053:1: ( 'orientation' )
+            {
+            // InternalPerspectiveDsl.g:5053:1: ( 'orientation' )
+            // InternalPerspectiveDsl.g:5054:2: 'orientation'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationKeyword_3_0_0()); 
+            }
+            match(input,63,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getOrientationKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_0__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_0__1"
+    // InternalPerspectiveDsl.g:5063:1: rule__PerspectiveSashContainer__Group_3_0__1 : rule__PerspectiveSashContainer__Group_3_0__1__Impl ;
+    public final void rule__PerspectiveSashContainer__Group_3_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5067:1: ( rule__PerspectiveSashContainer__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:5068:2: rule__PerspectiveSashContainer__Group_3_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__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__PerspectiveSashContainer__Group_3_0__1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_0__1__Impl"
+    // InternalPerspectiveDsl.g:5074:1: rule__PerspectiveSashContainer__Group_3_0__1__Impl : ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) ) ;
+    public final void rule__PerspectiveSashContainer__Group_3_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5078:1: ( ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:5079:1: ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5079:1: ( ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:5080:2: ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationAssignment_3_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:5081:2: ( rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:5081:3: rule__PerspectiveSashContainer__OrientationAssignment_3_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__OrientationAssignment_3_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getOrientationAssignment_3_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_0__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_1__0"
+    // InternalPerspectiveDsl.g:5090:1: rule__PerspectiveSashContainer__Group_3_1__0 : rule__PerspectiveSashContainer__Group_3_1__0__Impl rule__PerspectiveSashContainer__Group_3_1__1 ;
+    public final void rule__PerspectiveSashContainer__Group_3_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5094:1: ( rule__PerspectiveSashContainer__Group_3_1__0__Impl rule__PerspectiveSashContainer__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:5095:2: rule__PerspectiveSashContainer__Group_3_1__0__Impl rule__PerspectiveSashContainer__Group_3_1__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveSashContainer__Group_3_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__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__PerspectiveSashContainer__Group_3_1__0"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_1__0__Impl"
+    // InternalPerspectiveDsl.g:5102:1: rule__PerspectiveSashContainer__Group_3_1__0__Impl : ( 'selectedElement' ) ;
+    public final void rule__PerspectiveSashContainer__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5106:1: ( ( 'selectedElement' ) )
+            // InternalPerspectiveDsl.g:5107:1: ( 'selectedElement' )
+            {
+            // InternalPerspectiveDsl.g:5107:1: ( 'selectedElement' )
+            // InternalPerspectiveDsl.g:5108:2: 'selectedElement'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementKeyword_3_1_0()); 
+            }
+            match(input,64,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementKeyword_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_1__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_1__1"
+    // InternalPerspectiveDsl.g:5117:1: rule__PerspectiveSashContainer__Group_3_1__1 : rule__PerspectiveSashContainer__Group_3_1__1__Impl ;
+    public final void rule__PerspectiveSashContainer__Group_3_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5121:1: ( rule__PerspectiveSashContainer__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:5122:2: rule__PerspectiveSashContainer__Group_3_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__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__PerspectiveSashContainer__Group_3_1__1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_1__1__Impl"
+    // InternalPerspectiveDsl.g:5128:1: rule__PerspectiveSashContainer__Group_3_1__1__Impl : ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) ) ;
+    public final void rule__PerspectiveSashContainer__Group_3_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5132:1: ( ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:5133:1: ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5133:1: ( ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5134:2: ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementAssignment_3_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:5135:2: ( rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5135:3: rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementAssignment_3_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_1__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_2__0"
+    // InternalPerspectiveDsl.g:5144:1: rule__PerspectiveSashContainer__Group_3_2__0 : rule__PerspectiveSashContainer__Group_3_2__0__Impl rule__PerspectiveSashContainer__Group_3_2__1 ;
+    public final void rule__PerspectiveSashContainer__Group_3_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5148:1: ( rule__PerspectiveSashContainer__Group_3_2__0__Impl rule__PerspectiveSashContainer__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:5149:2: rule__PerspectiveSashContainer__Group_3_2__0__Impl rule__PerspectiveSashContainer__Group_3_2__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectiveSashContainer__Group_3_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__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__PerspectiveSashContainer__Group_3_2__0"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_2__0__Impl"
+    // InternalPerspectiveDsl.g:5156:1: rule__PerspectiveSashContainer__Group_3_2__0__Impl : ( 'spaceVolume' ) ;
+    public final void rule__PerspectiveSashContainer__Group_3_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5160:1: ( ( 'spaceVolume' ) )
+            // InternalPerspectiveDsl.g:5161:1: ( 'spaceVolume' )
+            {
+            // InternalPerspectiveDsl.g:5161:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5162:2: 'spaceVolume'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getSpaceVolumeKeyword_3_2_0()); 
+            }
+            match(input,65,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getSpaceVolumeKeyword_3_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_2__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_2__1"
+    // InternalPerspectiveDsl.g:5171:1: rule__PerspectiveSashContainer__Group_3_2__1 : rule__PerspectiveSashContainer__Group_3_2__1__Impl ;
+    public final void rule__PerspectiveSashContainer__Group_3_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5175:1: ( rule__PerspectiveSashContainer__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:5176:2: rule__PerspectiveSashContainer__Group_3_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__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__PerspectiveSashContainer__Group_3_2__1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_2__1__Impl"
+    // InternalPerspectiveDsl.g:5182:1: rule__PerspectiveSashContainer__Group_3_2__1__Impl : ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) ) ;
+    public final void rule__PerspectiveSashContainer__Group_3_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5186:1: ( ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:5187:1: ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5187:1: ( ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5188:2: ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataAssignment_3_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:5189:2: ( rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5189:3: rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataAssignment_3_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_2__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_3__0"
+    // InternalPerspectiveDsl.g:5198:1: rule__PerspectiveSashContainer__Group_3_3__0 : rule__PerspectiveSashContainer__Group_3_3__0__Impl rule__PerspectiveSashContainer__Group_3_3__1 ;
+    public final void rule__PerspectiveSashContainer__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5202:1: ( rule__PerspectiveSashContainer__Group_3_3__0__Impl rule__PerspectiveSashContainer__Group_3_3__1 )
+            // InternalPerspectiveDsl.g:5203:2: rule__PerspectiveSashContainer__Group_3_3__0__Impl rule__PerspectiveSashContainer__Group_3_3__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectiveSashContainer__Group_3_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group_3_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_3__0"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_3__0__Impl"
+    // InternalPerspectiveDsl.g:5210:1: rule__PerspectiveSashContainer__Group_3_3__0__Impl : ( 'accessibility' ) ;
+    public final void rule__PerspectiveSashContainer__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5214:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:5215:1: ( 'accessibility' )
+            {
+            // InternalPerspectiveDsl.g:5215:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5216:2: 'accessibility'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityKeyword_3_3_0()); 
+            }
+            match(input,60,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityKeyword_3_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_3__1"
+    // InternalPerspectiveDsl.g:5225:1: rule__PerspectiveSashContainer__Group_3_3__1 : rule__PerspectiveSashContainer__Group_3_3__1__Impl ;
+    public final void rule__PerspectiveSashContainer__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5229:1: ( rule__PerspectiveSashContainer__Group_3_3__1__Impl )
+            // InternalPerspectiveDsl.g:5230:2: rule__PerspectiveSashContainer__Group_3_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__Group_3_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_3__1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__Group_3_3__1__Impl"
+    // InternalPerspectiveDsl.g:5236:1: rule__PerspectiveSashContainer__Group_3_3__1__Impl : ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) ) ;
+    public final void rule__PerspectiveSashContainer__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5240:1: ( ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) ) )
+            // InternalPerspectiveDsl.g:5241:1: ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5241:1: ( ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 ) )
+            // InternalPerspectiveDsl.g:5242:2: ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseAssignment_3_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:5243:2: ( rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 )
+            // InternalPerspectiveDsl.g:5243:3: rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseAssignment_3_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__0"
+    // InternalPerspectiveDsl.g:5252:1: rule__PerspectivePartStack__Group__0 : rule__PerspectivePartStack__Group__0__Impl rule__PerspectivePartStack__Group__1 ;
+    public final void rule__PerspectivePartStack__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5256:1: ( rule__PerspectivePartStack__Group__0__Impl rule__PerspectivePartStack__Group__1 )
+            // InternalPerspectiveDsl.g:5257:2: rule__PerspectivePartStack__Group__0__Impl rule__PerspectivePartStack__Group__1
+            {
+            pushFollow(FOLLOW_20);
+            rule__PerspectivePartStack__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__0"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__0__Impl"
+    // InternalPerspectiveDsl.g:5264:1: rule__PerspectivePartStack__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectivePartStack__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5268:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:5269:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:5269:1: ( () )
+            // InternalPerspectiveDsl.g:5270:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getPerspectivePartStackAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:5271:2: ()
+            // InternalPerspectiveDsl.g:5271:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getPerspectivePartStackAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__1"
+    // InternalPerspectiveDsl.g:5279:1: rule__PerspectivePartStack__Group__1 : rule__PerspectivePartStack__Group__1__Impl rule__PerspectivePartStack__Group__2 ;
+    public final void rule__PerspectivePartStack__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5283:1: ( rule__PerspectivePartStack__Group__1__Impl rule__PerspectivePartStack__Group__2 )
+            // InternalPerspectiveDsl.g:5284:2: rule__PerspectivePartStack__Group__1__Impl rule__PerspectivePartStack__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectivePartStack__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__1__Impl"
+    // InternalPerspectiveDsl.g:5291:1: rule__PerspectivePartStack__Group__1__Impl : ( 'partStack' ) ;
+    public final void rule__PerspectivePartStack__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5295:1: ( ( 'partStack' ) )
+            // InternalPerspectiveDsl.g:5296:1: ( 'partStack' )
+            {
+            // InternalPerspectiveDsl.g:5296:1: ( 'partStack' )
+            // InternalPerspectiveDsl.g:5297:2: 'partStack'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getPartStackKeyword_1()); 
+            }
+            match(input,66,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getPartStackKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__2"
+    // InternalPerspectiveDsl.g:5306:1: rule__PerspectivePartStack__Group__2 : rule__PerspectivePartStack__Group__2__Impl rule__PerspectivePartStack__Group__3 ;
+    public final void rule__PerspectivePartStack__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5310:1: ( rule__PerspectivePartStack__Group__2__Impl rule__PerspectivePartStack__Group__3 )
+            // InternalPerspectiveDsl.g:5311:2: rule__PerspectivePartStack__Group__2__Impl rule__PerspectivePartStack__Group__3
+            {
+            pushFollow(FOLLOW_21);
+            rule__PerspectivePartStack__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__2"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__2__Impl"
+    // InternalPerspectiveDsl.g:5318:1: rule__PerspectivePartStack__Group__2__Impl : ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) ) ;
+    public final void rule__PerspectivePartStack__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5322:1: ( ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:5323:1: ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:5323:1: ( ( rule__PerspectivePartStack__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:5324:2: ( rule__PerspectivePartStack__ElementIdAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getElementIdAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:5325:2: ( rule__PerspectivePartStack__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:5325:3: rule__PerspectivePartStack__ElementIdAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__ElementIdAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getElementIdAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__3"
+    // InternalPerspectiveDsl.g:5333:1: rule__PerspectivePartStack__Group__3 : rule__PerspectivePartStack__Group__3__Impl rule__PerspectivePartStack__Group__4 ;
+    public final void rule__PerspectivePartStack__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5337:1: ( rule__PerspectivePartStack__Group__3__Impl rule__PerspectivePartStack__Group__4 )
+            // InternalPerspectiveDsl.g:5338:2: rule__PerspectivePartStack__Group__3__Impl rule__PerspectivePartStack__Group__4
+            {
+            pushFollow(FOLLOW_8);
+            rule__PerspectivePartStack__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__3"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__3__Impl"
+    // InternalPerspectiveDsl.g:5345:1: rule__PerspectivePartStack__Group__3__Impl : ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) ) ;
+    public final void rule__PerspectivePartStack__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5349:1: ( ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) ) )
+            // InternalPerspectiveDsl.g:5350:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) )
+            {
+            // InternalPerspectiveDsl.g:5350:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:5351:2: ( rule__PerspectivePartStack__UnorderedGroup_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:5352:2: ( rule__PerspectivePartStack__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:5352:3: rule__PerspectivePartStack__UnorderedGroup_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__UnorderedGroup_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__4"
+    // InternalPerspectiveDsl.g:5360:1: rule__PerspectivePartStack__Group__4 : rule__PerspectivePartStack__Group__4__Impl rule__PerspectivePartStack__Group__5 ;
+    public final void rule__PerspectivePartStack__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5364:1: ( rule__PerspectivePartStack__Group__4__Impl rule__PerspectivePartStack__Group__5 )
+            // InternalPerspectiveDsl.g:5365:2: rule__PerspectivePartStack__Group__4__Impl rule__PerspectivePartStack__Group__5
+            {
+            pushFollow(FOLLOW_13);
+            rule__PerspectivePartStack__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__4"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__4__Impl"
+    // InternalPerspectiveDsl.g:5372:1: rule__PerspectivePartStack__Group__4__Impl : ( '{' ) ;
+    public final void rule__PerspectivePartStack__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5376:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:5377:1: ( '{' )
+            {
+            // InternalPerspectiveDsl.g:5377:1: ( '{' )
+            // InternalPerspectiveDsl.g:5378:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4()); 
+            }
+            match(input,54,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__5"
+    // InternalPerspectiveDsl.g:5387:1: rule__PerspectivePartStack__Group__5 : rule__PerspectivePartStack__Group__5__Impl rule__PerspectivePartStack__Group__6 ;
+    public final void rule__PerspectivePartStack__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5391:1: ( rule__PerspectivePartStack__Group__5__Impl rule__PerspectivePartStack__Group__6 )
+            // InternalPerspectiveDsl.g:5392:2: rule__PerspectivePartStack__Group__5__Impl rule__PerspectivePartStack__Group__6
+            {
+            pushFollow(FOLLOW_13);
+            rule__PerspectivePartStack__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__5"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__5__Impl"
+    // InternalPerspectiveDsl.g:5399:1: rule__PerspectivePartStack__Group__5__Impl : ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* ) ;
+    public final void rule__PerspectivePartStack__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5403:1: ( ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* ) )
+            // InternalPerspectiveDsl.g:5404:1: ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* )
+            {
+            // InternalPerspectiveDsl.g:5404:1: ( ( rule__PerspectivePartStack__ElementsAssignment_5 )* )
+            // InternalPerspectiveDsl.g:5405:2: ( rule__PerspectivePartStack__ElementsAssignment_5 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getElementsAssignment_5()); 
+            }
+            // InternalPerspectiveDsl.g:5406:2: ( rule__PerspectivePartStack__ElementsAssignment_5 )*
+            loop57:
+            do {
+                int alt57=2;
+                int LA57_0 = input.LA(1);
+
+                if ( (LA57_0==62||(LA57_0>=66 && LA57_0<=67)) ) {
+                    alt57=1;
+                }
+
+
+                switch (alt57) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:5406:3: rule__PerspectivePartStack__ElementsAssignment_5
+            	    {
+            	    pushFollow(FOLLOW_14);
+            	    rule__PerspectivePartStack__ElementsAssignment_5();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop57;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getElementsAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__5__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__6"
+    // InternalPerspectiveDsl.g:5414:1: rule__PerspectivePartStack__Group__6 : rule__PerspectivePartStack__Group__6__Impl ;
+    public final void rule__PerspectivePartStack__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5418:1: ( rule__PerspectivePartStack__Group__6__Impl )
+            // InternalPerspectiveDsl.g:5419:2: rule__PerspectivePartStack__Group__6__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__6"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group__6__Impl"
+    // InternalPerspectiveDsl.g:5425:1: rule__PerspectivePartStack__Group__6__Impl : ( '}' ) ;
+    public final void rule__PerspectivePartStack__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5429:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:5430:1: ( '}' )
+            {
+            // InternalPerspectiveDsl.g:5430:1: ( '}' )
+            // InternalPerspectiveDsl.g:5431:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6()); 
+            }
+            match(input,55,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group__6__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_0__0"
+    // InternalPerspectiveDsl.g:5441:1: rule__PerspectivePartStack__Group_3_0__0 : rule__PerspectivePartStack__Group_3_0__0__Impl rule__PerspectivePartStack__Group_3_0__1 ;
+    public final void rule__PerspectivePartStack__Group_3_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5445:1: ( rule__PerspectivePartStack__Group_3_0__0__Impl rule__PerspectivePartStack__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:5446:2: rule__PerspectivePartStack__Group_3_0__0__Impl rule__PerspectivePartStack__Group_3_0__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectivePartStack__Group_3_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__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__PerspectivePartStack__Group_3_0__0"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_0__0__Impl"
+    // InternalPerspectiveDsl.g:5453:1: rule__PerspectivePartStack__Group_3_0__0__Impl : ( 'selectedElement' ) ;
+    public final void rule__PerspectivePartStack__Group_3_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5457:1: ( ( 'selectedElement' ) )
+            // InternalPerspectiveDsl.g:5458:1: ( 'selectedElement' )
+            {
+            // InternalPerspectiveDsl.g:5458:1: ( 'selectedElement' )
+            // InternalPerspectiveDsl.g:5459:2: 'selectedElement'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementKeyword_3_0_0()); 
+            }
+            match(input,64,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getSelectedElementKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_0__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_0__1"
+    // InternalPerspectiveDsl.g:5468:1: rule__PerspectivePartStack__Group_3_0__1 : rule__PerspectivePartStack__Group_3_0__1__Impl ;
+    public final void rule__PerspectivePartStack__Group_3_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5472:1: ( rule__PerspectivePartStack__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:5473:2: rule__PerspectivePartStack__Group_3_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__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__PerspectivePartStack__Group_3_0__1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_0__1__Impl"
+    // InternalPerspectiveDsl.g:5479:1: rule__PerspectivePartStack__Group_3_0__1__Impl : ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) ) ;
+    public final void rule__PerspectivePartStack__Group_3_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5483:1: ( ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:5484:1: ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5484:1: ( ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:5485:2: ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementAssignment_3_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:5486:2: ( rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:5486:3: rule__PerspectivePartStack__SelectedElementAssignment_3_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__SelectedElementAssignment_3_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getSelectedElementAssignment_3_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_0__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_1__0"
+    // InternalPerspectiveDsl.g:5495:1: rule__PerspectivePartStack__Group_3_1__0 : rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1 ;
+    public final void rule__PerspectivePartStack__Group_3_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5499:1: ( rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:5500:2: rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectivePartStack__Group_3_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__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__PerspectivePartStack__Group_3_1__0"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_1__0__Impl"
+    // InternalPerspectiveDsl.g:5507:1: rule__PerspectivePartStack__Group_3_1__0__Impl : ( 'spaceVolume' ) ;
+    public final void rule__PerspectivePartStack__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5511:1: ( ( 'spaceVolume' ) )
+            // InternalPerspectiveDsl.g:5512:1: ( 'spaceVolume' )
+            {
+            // InternalPerspectiveDsl.g:5512:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5513:2: 'spaceVolume'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0()); 
+            }
+            match(input,65,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_1__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_1__1"
+    // InternalPerspectiveDsl.g:5522:1: rule__PerspectivePartStack__Group_3_1__1 : rule__PerspectivePartStack__Group_3_1__1__Impl ;
+    public final void rule__PerspectivePartStack__Group_3_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5526:1: ( rule__PerspectivePartStack__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:5527:2: rule__PerspectivePartStack__Group_3_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__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__PerspectivePartStack__Group_3_1__1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_1__1__Impl"
+    // InternalPerspectiveDsl.g:5533:1: rule__PerspectivePartStack__Group_3_1__1__Impl : ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) ) ;
+    public final void rule__PerspectivePartStack__Group_3_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5537:1: ( ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:5538:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5538:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5539:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:5540:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5540:3: rule__PerspectivePartStack__ContainerDataAssignment_3_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__ContainerDataAssignment_3_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_1__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_2__0"
+    // InternalPerspectiveDsl.g:5549:1: rule__PerspectivePartStack__Group_3_2__0 : rule__PerspectivePartStack__Group_3_2__0__Impl rule__PerspectivePartStack__Group_3_2__1 ;
+    public final void rule__PerspectivePartStack__Group_3_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5553:1: ( rule__PerspectivePartStack__Group_3_2__0__Impl rule__PerspectivePartStack__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:5554:2: rule__PerspectivePartStack__Group_3_2__0__Impl rule__PerspectivePartStack__Group_3_2__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectivePartStack__Group_3_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__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__PerspectivePartStack__Group_3_2__0"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_2__0__Impl"
+    // InternalPerspectiveDsl.g:5561:1: rule__PerspectivePartStack__Group_3_2__0__Impl : ( 'accessibility' ) ;
+    public final void rule__PerspectivePartStack__Group_3_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5565:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:5566:1: ( 'accessibility' )
+            {
+            // InternalPerspectiveDsl.g:5566:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5567:2: 'accessibility'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0()); 
+            }
+            match(input,60,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_2__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_2__1"
+    // InternalPerspectiveDsl.g:5576:1: rule__PerspectivePartStack__Group_3_2__1 : rule__PerspectivePartStack__Group_3_2__1__Impl ;
+    public final void rule__PerspectivePartStack__Group_3_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5580:1: ( rule__PerspectivePartStack__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:5581:2: rule__PerspectivePartStack__Group_3_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__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__PerspectivePartStack__Group_3_2__1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_2__1__Impl"
+    // InternalPerspectiveDsl.g:5587:1: rule__PerspectivePartStack__Group_3_2__1__Impl : ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) ) ;
+    public final void rule__PerspectivePartStack__Group_3_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5591:1: ( ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:5592:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5592:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5593:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:5594:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5594:3: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_2__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group__0"
+    // InternalPerspectiveDsl.g:5603:1: rule__PerspectivePart__Group__0 : rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1 ;
+    public final void rule__PerspectivePart__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5607:1: ( rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1 )
+            // InternalPerspectiveDsl.g:5608:2: rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1
+            {
+            pushFollow(FOLLOW_22);
+            rule__PerspectivePart__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group__0"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group__0__Impl"
+    // InternalPerspectiveDsl.g:5615:1: rule__PerspectivePart__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectivePart__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5619:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:5620:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:5620:1: ( () )
+            // InternalPerspectiveDsl.g:5621:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:5622:2: ()
+            // InternalPerspectiveDsl.g:5622:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group__1"
+    // InternalPerspectiveDsl.g:5630:1: rule__PerspectivePart__Group__1 : rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2 ;
+    public final void rule__PerspectivePart__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5634:1: ( rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2 )
+            // InternalPerspectiveDsl.g:5635:2: rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectivePart__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group__1"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group__1__Impl"
+    // InternalPerspectiveDsl.g:5642:1: rule__PerspectivePart__Group__1__Impl : ( 'part' ) ;
+    public final void rule__PerspectivePart__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5646:1: ( ( 'part' ) )
+            // InternalPerspectiveDsl.g:5647:1: ( 'part' )
+            {
+            // InternalPerspectiveDsl.g:5647:1: ( 'part' )
+            // InternalPerspectiveDsl.g:5648:2: 'part'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getPartKeyword_1()); 
+            }
+            match(input,67,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getPartKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group__2"
+    // InternalPerspectiveDsl.g:5657:1: rule__PerspectivePart__Group__2 : rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3 ;
+    public final void rule__PerspectivePart__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5661:1: ( rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3 )
+            // InternalPerspectiveDsl.g:5662:2: rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3
+            {
+            pushFollow(FOLLOW_23);
+            rule__PerspectivePart__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group__2"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group__2__Impl"
+    // InternalPerspectiveDsl.g:5669:1: rule__PerspectivePart__Group__2__Impl : ( ( rule__PerspectivePart__ElementIdAssignment_2 ) ) ;
+    public final void rule__PerspectivePart__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5673:1: ( ( ( rule__PerspectivePart__ElementIdAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:5674:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:5674:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:5675:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getElementIdAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:5676:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:5676:3: rule__PerspectivePart__ElementIdAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__ElementIdAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getElementIdAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group__3"
+    // InternalPerspectiveDsl.g:5684:1: rule__PerspectivePart__Group__3 : rule__PerspectivePart__Group__3__Impl ;
+    public final void rule__PerspectivePart__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5688:1: ( rule__PerspectivePart__Group__3__Impl )
+            // InternalPerspectiveDsl.g:5689:2: rule__PerspectivePart__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group__3"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group__3__Impl"
+    // InternalPerspectiveDsl.g:5695:1: rule__PerspectivePart__Group__3__Impl : ( ( rule__PerspectivePart__UnorderedGroup_3 ) ) ;
+    public final void rule__PerspectivePart__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5699:1: ( ( ( rule__PerspectivePart__UnorderedGroup_3 ) ) )
+            // InternalPerspectiveDsl.g:5700:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
+            {
+            // InternalPerspectiveDsl.g:5700:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:5701:2: ( rule__PerspectivePart__UnorderedGroup_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:5702:2: ( rule__PerspectivePart__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:5702:3: rule__PerspectivePart__UnorderedGroup_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__UnorderedGroup_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_0__0"
+    // InternalPerspectiveDsl.g:5711:1: rule__PerspectivePart__Group_3_0__0 : rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1 ;
+    public final void rule__PerspectivePart__Group_3_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5715:1: ( rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:5716:2: rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectivePart__Group_3_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__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__PerspectivePart__Group_3_0__0"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_0__0__Impl"
+    // InternalPerspectiveDsl.g:5723:1: rule__PerspectivePart__Group_3_0__0__Impl : ( 'spaceVolume' ) ;
+    public final void rule__PerspectivePart__Group_3_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5727:1: ( ( 'spaceVolume' ) )
+            // InternalPerspectiveDsl.g:5728:1: ( 'spaceVolume' )
+            {
+            // InternalPerspectiveDsl.g:5728:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5729:2: 'spaceVolume'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_0_0()); 
+            }
+            match(input,65,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_0__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_0__1"
+    // InternalPerspectiveDsl.g:5738:1: rule__PerspectivePart__Group_3_0__1 : rule__PerspectivePart__Group_3_0__1__Impl ;
+    public final void rule__PerspectivePart__Group_3_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5742:1: ( rule__PerspectivePart__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:5743:2: rule__PerspectivePart__Group_3_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__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__PerspectivePart__Group_3_0__1"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_0__1__Impl"
+    // InternalPerspectiveDsl.g:5749:1: rule__PerspectivePart__Group_3_0__1__Impl : ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) ) ;
+    public final void rule__PerspectivePart__Group_3_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5753:1: ( ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:5754:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5754:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:5755:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getContainerDataAssignment_3_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:5756:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:5756:3: rule__PerspectivePart__ContainerDataAssignment_3_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__ContainerDataAssignment_3_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getContainerDataAssignment_3_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_0__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_1__0"
+    // InternalPerspectiveDsl.g:5765:1: rule__PerspectivePart__Group_3_1__0 : rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1 ;
+    public final void rule__PerspectivePart__Group_3_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5769:1: ( rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:5770:2: rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectivePart__Group_3_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__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__PerspectivePart__Group_3_1__0"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_1__0__Impl"
+    // InternalPerspectiveDsl.g:5777:1: rule__PerspectivePart__Group_3_1__0__Impl : ( 'accessibility' ) ;
+    public final void rule__PerspectivePart__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5781:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:5782:1: ( 'accessibility' )
+            {
+            // InternalPerspectiveDsl.g:5782:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5783:2: 'accessibility'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_1_0()); 
+            }
+            match(input,60,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_1__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_1__1"
+    // InternalPerspectiveDsl.g:5792:1: rule__PerspectivePart__Group_3_1__1 : rule__PerspectivePart__Group_3_1__1__Impl ;
+    public final void rule__PerspectivePart__Group_3_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5796:1: ( rule__PerspectivePart__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:5797:2: rule__PerspectivePart__Group_3_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__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__PerspectivePart__Group_3_1__1"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_1__1__Impl"
+    // InternalPerspectiveDsl.g:5803:1: rule__PerspectivePart__Group_3_1__1__Impl : ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) ) ;
+    public final void rule__PerspectivePart__Group_3_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5807:1: ( ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:5808:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5808:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5809:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseAssignment_3_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:5810:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5810:3: rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseAssignment_3_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_1__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_2__0"
+    // InternalPerspectiveDsl.g:5819:1: rule__PerspectivePart__Group_3_2__0 : rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1 ;
+    public final void rule__PerspectivePart__Group_3_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5823:1: ( rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:5824:2: rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectivePart__Group_3_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__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__PerspectivePart__Group_3_2__0"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_2__0__Impl"
+    // InternalPerspectiveDsl.g:5831:1: rule__PerspectivePart__Group_3_2__0__Impl : ( 'iconURI' ) ;
+    public final void rule__PerspectivePart__Group_3_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5835:1: ( ( 'iconURI' ) )
+            // InternalPerspectiveDsl.g:5836:1: ( 'iconURI' )
+            {
+            // InternalPerspectiveDsl.g:5836:1: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:5837:2: 'iconURI'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0()); 
+            }
+            match(input,59,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_2__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_2__1"
+    // InternalPerspectiveDsl.g:5846:1: rule__PerspectivePart__Group_3_2__1 : rule__PerspectivePart__Group_3_2__1__Impl ;
+    public final void rule__PerspectivePart__Group_3_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5850:1: ( rule__PerspectivePart__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:5851:2: rule__PerspectivePart__Group_3_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__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__PerspectivePart__Group_3_2__1"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_2__1__Impl"
+    // InternalPerspectiveDsl.g:5857:1: rule__PerspectivePart__Group_3_2__1__Impl : ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) ) ;
+    public final void rule__PerspectivePart__Group_3_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5861:1: ( ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:5862:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5862:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5863:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getIconURIAssignment_3_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:5864:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5864:3: rule__PerspectivePart__IconURIAssignment_3_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__IconURIAssignment_3_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getIconURIAssignment_3_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_2__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_3__0"
+    // InternalPerspectiveDsl.g:5873:1: rule__PerspectivePart__Group_3_3__0 : rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1 ;
+    public final void rule__PerspectivePart__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5877:1: ( rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1 )
+            // InternalPerspectiveDsl.g:5878:2: rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1
+            {
+            pushFollow(FOLLOW_24);
+            rule__PerspectivePart__Group_3_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__Group_3_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_3__0"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_3__0__Impl"
+    // InternalPerspectiveDsl.g:5885:1: rule__PerspectivePart__Group_3_3__0__Impl : ( 'view' ) ;
+    public final void rule__PerspectivePart__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5889:1: ( ( 'view' ) )
+            // InternalPerspectiveDsl.g:5890:1: ( 'view' )
+            {
+            // InternalPerspectiveDsl.g:5890:1: ( 'view' )
+            // InternalPerspectiveDsl.g:5891:2: 'view'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0()); 
+            }
+            match(input,68,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_3__1"
+    // InternalPerspectiveDsl.g:5900:1: rule__PerspectivePart__Group_3_3__1 : rule__PerspectivePart__Group_3_3__1__Impl ;
+    public final void rule__PerspectivePart__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5904:1: ( rule__PerspectivePart__Group_3_3__1__Impl )
+            // InternalPerspectiveDsl.g:5905:2: rule__PerspectivePart__Group_3_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__Group_3_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_3__1"
+
+
+    // $ANTLR start "rule__PerspectivePart__Group_3_3__1__Impl"
+    // InternalPerspectiveDsl.g:5911:1: rule__PerspectivePart__Group_3_3__1__Impl : ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) ) ;
+    public final void rule__PerspectivePart__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5915:1: ( ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) ) )
+            // InternalPerspectiveDsl.g:5916:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5916:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
+            // InternalPerspectiveDsl.g:5917:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getViewAssignment_3_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:5918:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
+            // InternalPerspectiveDsl.g:5918:3: rule__PerspectivePart__ViewAssignment_3_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__ViewAssignment_3_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getViewAssignment_3_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSelection__Group__0"
+    // InternalPerspectiveDsl.g:5927:1: rule__PerspectiveSelection__Group__0 : rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1 ;
+    public final void rule__PerspectiveSelection__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5931:1: ( rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1 )
+            // InternalPerspectiveDsl.g:5932:2: rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1
+            {
+            pushFollow(FOLLOW_25);
+            rule__PerspectiveSelection__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSelection__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSelection__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveSelection__Group__0__Impl"
+    // InternalPerspectiveDsl.g:5939:1: rule__PerspectiveSelection__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveSelection__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5943:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:5944:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:5944:1: ( () )
+            // InternalPerspectiveDsl.g:5945:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:5946:2: ()
+            // InternalPerspectiveDsl.g:5946:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSelection__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSelection__Group__1"
+    // InternalPerspectiveDsl.g:5954:1: rule__PerspectiveSelection__Group__1 : rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2 ;
+    public final void rule__PerspectiveSelection__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5958:1: ( rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2 )
+            // InternalPerspectiveDsl.g:5959:2: rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveSelection__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSelection__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSelection__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveSelection__Group__1__Impl"
+    // InternalPerspectiveDsl.g:5966:1: rule__PerspectiveSelection__Group__1__Impl : ( 'select' ) ;
+    public final void rule__PerspectiveSelection__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5970:1: ( ( 'select' ) )
+            // InternalPerspectiveDsl.g:5971:1: ( 'select' )
+            {
+            // InternalPerspectiveDsl.g:5971:1: ( 'select' )
+            // InternalPerspectiveDsl.g:5972:2: 'select'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1()); 
+            }
+            match(input,69,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSelection__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSelection__Group__2"
+    // InternalPerspectiveDsl.g:5981:1: rule__PerspectiveSelection__Group__2 : rule__PerspectiveSelection__Group__2__Impl ;
+    public final void rule__PerspectiveSelection__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5985:1: ( rule__PerspectiveSelection__Group__2__Impl )
+            // InternalPerspectiveDsl.g:5986:2: rule__PerspectiveSelection__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSelection__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSelection__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveSelection__Group__2__Impl"
+    // InternalPerspectiveDsl.g:5992:1: rule__PerspectiveSelection__Group__2__Impl : ( ( rule__PerspectiveSelection__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveSelection__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5996:1: ( ( ( rule__PerspectiveSelection__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:5997:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:5997:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:5998:2: ( rule__PerspectiveSelection__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSelectionAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:5999:2: ( rule__PerspectiveSelection__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:5999:3: rule__PerspectiveSelection__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSelection__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSelectionAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSelection__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveTable__Group__0"
+    // InternalPerspectiveDsl.g:6008:1: rule__PerspectiveTable__Group__0 : rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1 ;
+    public final void rule__PerspectiveTable__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6012:1: ( rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1 )
+            // InternalPerspectiveDsl.g:6013:2: rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1
+            {
+            pushFollow(FOLLOW_26);
+            rule__PerspectiveTable__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTable__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTable__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveTable__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6020:1: rule__PerspectiveTable__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveTable__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6024:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6025:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6025:1: ( () )
+            // InternalPerspectiveDsl.g:6026:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6027:2: ()
+            // InternalPerspectiveDsl.g:6027:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTable__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveTable__Group__1"
+    // InternalPerspectiveDsl.g:6035:1: rule__PerspectiveTable__Group__1 : rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2 ;
+    public final void rule__PerspectiveTable__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6039:1: ( rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2 )
+            // InternalPerspectiveDsl.g:6040:2: rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveTable__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTable__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTable__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveTable__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6047:1: rule__PerspectiveTable__Group__1__Impl : ( 'table' ) ;
+    public final void rule__PerspectiveTable__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6051:1: ( ( 'table' ) )
+            // InternalPerspectiveDsl.g:6052:1: ( 'table' )
+            {
+            // InternalPerspectiveDsl.g:6052:1: ( 'table' )
+            // InternalPerspectiveDsl.g:6053:2: 'table'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTableAccess().getTableKeyword_1()); 
+            }
+            match(input,70,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTableAccess().getTableKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTable__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveTable__Group__2"
+    // InternalPerspectiveDsl.g:6062:1: rule__PerspectiveTable__Group__2 : rule__PerspectiveTable__Group__2__Impl ;
+    public final void rule__PerspectiveTable__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6066:1: ( rule__PerspectiveTable__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6067:2: rule__PerspectiveTable__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTable__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTable__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveTable__Group__2__Impl"
+    // InternalPerspectiveDsl.g:6073:1: rule__PerspectiveTable__Group__2__Impl : ( ( rule__PerspectiveTable__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveTable__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6077:1: ( ( ( rule__PerspectiveTable__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6078:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:6078:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6079:2: ( rule__PerspectiveTable__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTableAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:6080:2: ( rule__PerspectiveTable__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6080:3: rule__PerspectiveTable__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTable__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTableAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTable__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveGrid__Group__0"
+    // InternalPerspectiveDsl.g:6089:1: rule__PerspectiveGrid__Group__0 : rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1 ;
+    public final void rule__PerspectiveGrid__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6093:1: ( rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1 )
+            // InternalPerspectiveDsl.g:6094:2: rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1
+            {
+            pushFollow(FOLLOW_27);
+            rule__PerspectiveGrid__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveGrid__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveGrid__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveGrid__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6101:1: rule__PerspectiveGrid__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveGrid__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6105:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6106:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6106:1: ( () )
+            // InternalPerspectiveDsl.g:6107:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6108:2: ()
+            // InternalPerspectiveDsl.g:6108:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveGrid__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveGrid__Group__1"
+    // InternalPerspectiveDsl.g:6116:1: rule__PerspectiveGrid__Group__1 : rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2 ;
+    public final void rule__PerspectiveGrid__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6120:1: ( rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2 )
+            // InternalPerspectiveDsl.g:6121:2: rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveGrid__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveGrid__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveGrid__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveGrid__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6128:1: rule__PerspectiveGrid__Group__1__Impl : ( 'grid' ) ;
+    public final void rule__PerspectiveGrid__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6132:1: ( ( 'grid' ) )
+            // InternalPerspectiveDsl.g:6133:1: ( 'grid' )
+            {
+            // InternalPerspectiveDsl.g:6133:1: ( 'grid' )
+            // InternalPerspectiveDsl.g:6134:2: 'grid'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveGridAccess().getGridKeyword_1()); 
+            }
+            match(input,71,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveGridAccess().getGridKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveGrid__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveGrid__Group__2"
+    // InternalPerspectiveDsl.g:6143:1: rule__PerspectiveGrid__Group__2 : rule__PerspectiveGrid__Group__2__Impl ;
+    public final void rule__PerspectiveGrid__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6147:1: ( rule__PerspectiveGrid__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6148:2: rule__PerspectiveGrid__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveGrid__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveGrid__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveGrid__Group__2__Impl"
+    // InternalPerspectiveDsl.g:6154:1: rule__PerspectiveGrid__Group__2__Impl : ( ( rule__PerspectiveGrid__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveGrid__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6158:1: ( ( ( rule__PerspectiveGrid__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6159:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:6159:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6160:2: ( rule__PerspectiveGrid__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveGridAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:6161:2: ( rule__PerspectiveGrid__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6161:3: rule__PerspectiveGrid__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveGrid__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveGridAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveGrid__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveBean__Group__0"
+    // InternalPerspectiveDsl.g:6170:1: rule__PerspectiveBean__Group__0 : rule__PerspectiveBean__Group__0__Impl rule__PerspectiveBean__Group__1 ;
+    public final void rule__PerspectiveBean__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6174:1: ( rule__PerspectiveBean__Group__0__Impl rule__PerspectiveBean__Group__1 )
+            // InternalPerspectiveDsl.g:6175:2: rule__PerspectiveBean__Group__0__Impl rule__PerspectiveBean__Group__1
+            {
+            pushFollow(FOLLOW_28);
+            rule__PerspectiveBean__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBean__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBean__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveBean__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6182:1: rule__PerspectiveBean__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveBean__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6186:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6187:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6187:1: ( () )
+            // InternalPerspectiveDsl.g:6188:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6189:2: ()
+            // InternalPerspectiveDsl.g:6189:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBean__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveBean__Group__1"
+    // InternalPerspectiveDsl.g:6197:1: rule__PerspectiveBean__Group__1 : rule__PerspectiveBean__Group__1__Impl rule__PerspectiveBean__Group__2 ;
+    public final void rule__PerspectiveBean__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6201:1: ( rule__PerspectiveBean__Group__1__Impl rule__PerspectiveBean__Group__2 )
+            // InternalPerspectiveDsl.g:6202:2: rule__PerspectiveBean__Group__1__Impl rule__PerspectiveBean__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveBean__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBean__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBean__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveBean__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6209:1: rule__PerspectiveBean__Group__1__Impl : ( 'bean' ) ;
+    public final void rule__PerspectiveBean__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6213:1: ( ( 'bean' ) )
+            // InternalPerspectiveDsl.g:6214:1: ( 'bean' )
+            {
+            // InternalPerspectiveDsl.g:6214:1: ( 'bean' )
+            // InternalPerspectiveDsl.g:6215:2: 'bean'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1()); 
+            }
+            match(input,72,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBean__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveBean__Group__2"
+    // InternalPerspectiveDsl.g:6224:1: rule__PerspectiveBean__Group__2 : rule__PerspectiveBean__Group__2__Impl ;
+    public final void rule__PerspectiveBean__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6228:1: ( rule__PerspectiveBean__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6229:2: rule__PerspectiveBean__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBean__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBean__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveBean__Group__2__Impl"
+    // InternalPerspectiveDsl.g:6235:1: rule__PerspectiveBean__Group__2__Impl : ( ( rule__PerspectiveBean__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveBean__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6239:1: ( ( ( rule__PerspectiveBean__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6240:1: ( ( rule__PerspectiveBean__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:6240:1: ( ( rule__PerspectiveBean__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6241:2: ( rule__PerspectiveBean__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:6242:2: ( rule__PerspectiveBean__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6242:3: rule__PerspectiveBean__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBean__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBeanAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBean__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveChart__Group__0"
+    // InternalPerspectiveDsl.g:6251:1: rule__PerspectiveChart__Group__0 : rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1 ;
+    public final void rule__PerspectiveChart__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6255:1: ( rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1 )
+            // InternalPerspectiveDsl.g:6256:2: rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1
+            {
+            pushFollow(FOLLOW_29);
+            rule__PerspectiveChart__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveChart__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveChart__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveChart__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6263:1: rule__PerspectiveChart__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveChart__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6267:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6268:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6268:1: ( () )
+            // InternalPerspectiveDsl.g:6269:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6270:2: ()
+            // InternalPerspectiveDsl.g:6270:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveChart__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveChart__Group__1"
+    // InternalPerspectiveDsl.g:6278:1: rule__PerspectiveChart__Group__1 : rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2 ;
+    public final void rule__PerspectiveChart__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6282:1: ( rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2 )
+            // InternalPerspectiveDsl.g:6283:2: rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveChart__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveChart__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveChart__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveChart__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6290:1: rule__PerspectiveChart__Group__1__Impl : ( 'chart' ) ;
+    public final void rule__PerspectiveChart__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6294:1: ( ( 'chart' ) )
+            // InternalPerspectiveDsl.g:6295:1: ( 'chart' )
+            {
+            // InternalPerspectiveDsl.g:6295:1: ( 'chart' )
+            // InternalPerspectiveDsl.g:6296:2: 'chart'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveChartAccess().getChartKeyword_1()); 
+            }
+            match(input,73,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveChartAccess().getChartKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveChart__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveChart__Group__2"
+    // InternalPerspectiveDsl.g:6305:1: rule__PerspectiveChart__Group__2 : rule__PerspectiveChart__Group__2__Impl ;
+    public final void rule__PerspectiveChart__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6309:1: ( rule__PerspectiveChart__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6310:2: rule__PerspectiveChart__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveChart__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveChart__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveChart__Group__2__Impl"
+    // InternalPerspectiveDsl.g:6316:1: rule__PerspectiveChart__Group__2__Impl : ( ( rule__PerspectiveChart__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveChart__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6320:1: ( ( ( rule__PerspectiveChart__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6321:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:6321:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6322:2: ( rule__PerspectiveChart__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveChartAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:6323:2: ( rule__PerspectiveChart__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6323:3: rule__PerspectiveChart__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveChart__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveChartAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveChart__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveReport__Group__0"
+    // InternalPerspectiveDsl.g:6332:1: rule__PerspectiveReport__Group__0 : rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1 ;
+    public final void rule__PerspectiveReport__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6336:1: ( rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1 )
+            // InternalPerspectiveDsl.g:6337:2: rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1
+            {
+            pushFollow(FOLLOW_30);
+            rule__PerspectiveReport__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveReport__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveReport__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveReport__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6344:1: rule__PerspectiveReport__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveReport__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6348:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6349:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6349:1: ( () )
+            // InternalPerspectiveDsl.g:6350:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6351:2: ()
+            // InternalPerspectiveDsl.g:6351:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveReport__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveReport__Group__1"
+    // InternalPerspectiveDsl.g:6359:1: rule__PerspectiveReport__Group__1 : rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2 ;
+    public final void rule__PerspectiveReport__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6363:1: ( rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2 )
+            // InternalPerspectiveDsl.g:6364:2: rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveReport__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveReport__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveReport__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveReport__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6371:1: rule__PerspectiveReport__Group__1__Impl : ( 'report' ) ;
+    public final void rule__PerspectiveReport__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6375:1: ( ( 'report' ) )
+            // InternalPerspectiveDsl.g:6376:1: ( 'report' )
+            {
+            // InternalPerspectiveDsl.g:6376:1: ( 'report' )
+            // InternalPerspectiveDsl.g:6377:2: 'report'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveReportAccess().getReportKeyword_1()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveReportAccess().getReportKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveReport__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveReport__Group__2"
+    // InternalPerspectiveDsl.g:6386:1: rule__PerspectiveReport__Group__2 : rule__PerspectiveReport__Group__2__Impl ;
+    public final void rule__PerspectiveReport__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6390:1: ( rule__PerspectiveReport__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6391:2: rule__PerspectiveReport__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveReport__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveReport__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveReport__Group__2__Impl"
+    // InternalPerspectiveDsl.g:6397:1: rule__PerspectiveReport__Group__2__Impl : ( ( rule__PerspectiveReport__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveReport__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6401:1: ( ( ( rule__PerspectiveReport__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6402:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:6402:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6403:2: ( rule__PerspectiveReport__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveReportAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:6404:2: ( rule__PerspectiveReport__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6404:3: rule__PerspectiveReport__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveReport__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveReportAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveReport__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveOrganization__Group__0"
+    // InternalPerspectiveDsl.g:6413:1: rule__PerspectiveOrganization__Group__0 : rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1 ;
+    public final void rule__PerspectiveOrganization__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6417:1: ( rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1 )
+            // InternalPerspectiveDsl.g:6418:2: rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1
+            {
+            pushFollow(FOLLOW_31);
+            rule__PerspectiveOrganization__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveOrganization__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveOrganization__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveOrganization__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6425:1: rule__PerspectiveOrganization__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveOrganization__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6429:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6430:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6430:1: ( () )
+            // InternalPerspectiveDsl.g:6431:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6432:2: ()
+            // InternalPerspectiveDsl.g:6432:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveOrganization__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveOrganization__Group__1"
+    // InternalPerspectiveDsl.g:6440:1: rule__PerspectiveOrganization__Group__1 : rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2 ;
+    public final void rule__PerspectiveOrganization__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6444:1: ( rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2 )
+            // InternalPerspectiveDsl.g:6445:2: rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveOrganization__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveOrganization__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveOrganization__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveOrganization__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6452:1: rule__PerspectiveOrganization__Group__1__Impl : ( 'organigram' ) ;
+    public final void rule__PerspectiveOrganization__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6456:1: ( ( 'organigram' ) )
+            // InternalPerspectiveDsl.g:6457:1: ( 'organigram' )
+            {
+            // InternalPerspectiveDsl.g:6457:1: ( 'organigram' )
+            // InternalPerspectiveDsl.g:6458:2: 'organigram'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveOrganization__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveOrganization__Group__2"
+    // InternalPerspectiveDsl.g:6467:1: rule__PerspectiveOrganization__Group__2 : rule__PerspectiveOrganization__Group__2__Impl ;
+    public final void rule__PerspectiveOrganization__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6471:1: ( rule__PerspectiveOrganization__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6472:2: rule__PerspectiveOrganization__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveOrganization__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveOrganization__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveOrganization__Group__2__Impl"
+    // InternalPerspectiveDsl.g:6478:1: rule__PerspectiveOrganization__Group__2__Impl : ( ( rule__PerspectiveOrganization__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveOrganization__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6482:1: ( ( ( rule__PerspectiveOrganization__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6483:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:6483:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6484:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveOrganizationAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:6485:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6485:3: rule__PerspectiveOrganization__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveOrganization__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveOrganizationAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveOrganization__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveTopology__Group__0"
+    // InternalPerspectiveDsl.g:6494:1: rule__PerspectiveTopology__Group__0 : rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1 ;
+    public final void rule__PerspectiveTopology__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6498:1: ( rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1 )
+            // InternalPerspectiveDsl.g:6499:2: rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1
+            {
+            pushFollow(FOLLOW_32);
+            rule__PerspectiveTopology__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTopology__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTopology__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveTopology__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6506:1: rule__PerspectiveTopology__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveTopology__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6510:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6511:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6511:1: ( () )
+            // InternalPerspectiveDsl.g:6512:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6513:2: ()
+            // InternalPerspectiveDsl.g:6513:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTopology__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveTopology__Group__1"
+    // InternalPerspectiveDsl.g:6521:1: rule__PerspectiveTopology__Group__1 : rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2 ;
+    public final void rule__PerspectiveTopology__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6525:1: ( rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2 )
+            // InternalPerspectiveDsl.g:6526:2: rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveTopology__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTopology__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTopology__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveTopology__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6533:1: rule__PerspectiveTopology__Group__1__Impl : ( 'topology' ) ;
+    public final void rule__PerspectiveTopology__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6537:1: ( ( 'topology' ) )
+            // InternalPerspectiveDsl.g:6538:1: ( 'topology' )
+            {
+            // InternalPerspectiveDsl.g:6538:1: ( 'topology' )
+            // InternalPerspectiveDsl.g:6539:2: 'topology'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1()); 
+            }
+            match(input,76,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTopology__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveTopology__Group__2"
+    // InternalPerspectiveDsl.g:6548:1: rule__PerspectiveTopology__Group__2 : rule__PerspectiveTopology__Group__2__Impl ;
+    public final void rule__PerspectiveTopology__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6552:1: ( rule__PerspectiveTopology__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6553:2: rule__PerspectiveTopology__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTopology__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTopology__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveTopology__Group__2__Impl"
+    // InternalPerspectiveDsl.g:6559:1: rule__PerspectiveTopology__Group__2__Impl : ( ( rule__PerspectiveTopology__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveTopology__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6563:1: ( ( ( rule__PerspectiveTopology__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6564:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:6564:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6565:2: ( rule__PerspectiveTopology__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTopologyAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:6566:2: ( rule__PerspectiveTopology__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6566:3: rule__PerspectiveTopology__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveTopology__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTopologyAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTopology__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveDialog__Group__0"
+    // InternalPerspectiveDsl.g:6575:1: rule__PerspectiveDialog__Group__0 : rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1 ;
+    public final void rule__PerspectiveDialog__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6579:1: ( rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1 )
+            // InternalPerspectiveDsl.g:6580:2: rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1
+            {
+            pushFollow(FOLLOW_33);
+            rule__PerspectiveDialog__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDialog__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDialog__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveDialog__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6587:1: rule__PerspectiveDialog__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveDialog__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6591:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6592:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6592:1: ( () )
+            // InternalPerspectiveDsl.g:6593:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6594:2: ()
+            // InternalPerspectiveDsl.g:6594:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDialog__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveDialog__Group__1"
+    // InternalPerspectiveDsl.g:6602:1: rule__PerspectiveDialog__Group__1 : rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2 ;
+    public final void rule__PerspectiveDialog__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6606:1: ( rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2 )
+            // InternalPerspectiveDsl.g:6607:2: rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveDialog__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDialog__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDialog__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveDialog__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6614:1: rule__PerspectiveDialog__Group__1__Impl : ( 'dialog' ) ;
+    public final void rule__PerspectiveDialog__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6618:1: ( ( 'dialog' ) )
+            // InternalPerspectiveDsl.g:6619:1: ( 'dialog' )
+            {
+            // InternalPerspectiveDsl.g:6619:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:6620:2: 'dialog'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1()); 
+            }
+            match(input,77,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDialog__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveDialog__Group__2"
+    // InternalPerspectiveDsl.g:6629:1: rule__PerspectiveDialog__Group__2 : rule__PerspectiveDialog__Group__2__Impl ;
+    public final void rule__PerspectiveDialog__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6633:1: ( rule__PerspectiveDialog__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6634:2: rule__PerspectiveDialog__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDialog__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDialog__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveDialog__Group__2__Impl"
+    // InternalPerspectiveDsl.g:6640:1: rule__PerspectiveDialog__Group__2__Impl : ( ( rule__PerspectiveDialog__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveDialog__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6644:1: ( ( ( rule__PerspectiveDialog__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6645:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:6645:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6646:2: ( rule__PerspectiveDialog__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDialogAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:6647:2: ( rule__PerspectiveDialog__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6647:3: rule__PerspectiveDialog__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDialog__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDialogAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDialog__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveBPMN__Group__0"
+    // InternalPerspectiveDsl.g:6656:1: rule__PerspectiveBPMN__Group__0 : rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1 ;
+    public final void rule__PerspectiveBPMN__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6660:1: ( rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1 )
+            // InternalPerspectiveDsl.g:6661:2: rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1
+            {
+            pushFollow(FOLLOW_34);
+            rule__PerspectiveBPMN__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBPMN__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBPMN__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveBPMN__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6668:1: rule__PerspectiveBPMN__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveBPMN__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6672:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6673:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6673:1: ( () )
+            // InternalPerspectiveDsl.g:6674:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6675:2: ()
+            // InternalPerspectiveDsl.g:6675:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBPMN__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveBPMN__Group__1"
+    // InternalPerspectiveDsl.g:6683:1: rule__PerspectiveBPMN__Group__1 : rule__PerspectiveBPMN__Group__1__Impl ;
+    public final void rule__PerspectiveBPMN__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6687:1: ( rule__PerspectiveBPMN__Group__1__Impl )
+            // InternalPerspectiveDsl.g:6688:2: rule__PerspectiveBPMN__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBPMN__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBPMN__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveBPMN__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6694:1: rule__PerspectiveBPMN__Group__1__Impl : ( 'bpmn' ) ;
+    public final void rule__PerspectiveBPMN__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6698:1: ( ( 'bpmn' ) )
+            // InternalPerspectiveDsl.g:6699:1: ( 'bpmn' )
+            {
+            // InternalPerspectiveDsl.g:6699:1: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:6700:2: 'bpmn'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); 
+            }
+            match(input,78,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBPMN__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__0"
+    // InternalPerspectiveDsl.g:6710:1: rule__PerspectiveKanban__Group__0 : rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1 ;
+    public final void rule__PerspectiveKanban__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6714:1: ( rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1 )
+            // InternalPerspectiveDsl.g:6715:2: rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1
+            {
+            pushFollow(FOLLOW_24);
+            rule__PerspectiveKanban__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6722:1: rule__PerspectiveKanban__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveKanban__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6726:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6727:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6727:1: ( () )
+            // InternalPerspectiveDsl.g:6728:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getPerspectiveKanbanAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6729:2: ()
+            // InternalPerspectiveDsl.g:6729:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getPerspectiveKanbanAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__1"
+    // InternalPerspectiveDsl.g:6737:1: rule__PerspectiveKanban__Group__1 : rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2 ;
+    public final void rule__PerspectiveKanban__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6741:1: ( rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2 )
+            // InternalPerspectiveDsl.g:6742:2: rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2
+            {
+            pushFollow(FOLLOW_35);
+            rule__PerspectiveKanban__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6749:1: rule__PerspectiveKanban__Group__1__Impl : ( 'kanban' ) ;
+    public final void rule__PerspectiveKanban__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6753:1: ( ( 'kanban' ) )
+            // InternalPerspectiveDsl.g:6754:1: ( 'kanban' )
+            {
+            // InternalPerspectiveDsl.g:6754:1: ( 'kanban' )
+            // InternalPerspectiveDsl.g:6755:2: 'kanban'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1()); 
+            }
+            match(input,79,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__2"
+    // InternalPerspectiveDsl.g:6764:1: rule__PerspectiveKanban__Group__2 : rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3 ;
+    public final void rule__PerspectiveKanban__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6768:1: ( rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3 )
+            // InternalPerspectiveDsl.g:6769:2: rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveKanban__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__2__Impl"
+    // InternalPerspectiveDsl.g:6776:1: rule__PerspectiveKanban__Group__2__Impl : ( 'of' ) ;
+    public final void rule__PerspectiveKanban__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6780:1: ( ( 'of' ) )
+            // InternalPerspectiveDsl.g:6781:1: ( 'of' )
+            {
+            // InternalPerspectiveDsl.g:6781:1: ( 'of' )
+            // InternalPerspectiveDsl.g:6782:2: 'of'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2()); 
+            }
+            match(input,80,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__3"
+    // InternalPerspectiveDsl.g:6791:1: rule__PerspectiveKanban__Group__3 : rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4 ;
+    public final void rule__PerspectiveKanban__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6795:1: ( rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4 )
+            // InternalPerspectiveDsl.g:6796:2: rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4
+            {
+            pushFollow(FOLLOW_36);
+            rule__PerspectiveKanban__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__3"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__3__Impl"
+    // InternalPerspectiveDsl.g:6803:1: rule__PerspectiveKanban__Group__3__Impl : ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) ) ;
+    public final void rule__PerspectiveKanban__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6807:1: ( ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:6808:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
+            {
+            // InternalPerspectiveDsl.g:6808:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:6809:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefAssignment_3()); 
+            }
+            // InternalPerspectiveDsl.g:6810:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:6810:3: rule__PerspectiveKanban__DtoRefAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__DtoRefAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getDtoRefAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__4"
+    // InternalPerspectiveDsl.g:6818:1: rule__PerspectiveKanban__Group__4 : rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5 ;
+    public final void rule__PerspectiveKanban__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6822:1: ( rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5 )
+            // InternalPerspectiveDsl.g:6823:2: rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveKanban__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__4"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__4__Impl"
+    // InternalPerspectiveDsl.g:6830:1: rule__PerspectiveKanban__Group__4__Impl : ( 'card' ) ;
+    public final void rule__PerspectiveKanban__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6834:1: ( ( 'card' ) )
+            // InternalPerspectiveDsl.g:6835:1: ( 'card' )
+            {
+            // InternalPerspectiveDsl.g:6835:1: ( 'card' )
+            // InternalPerspectiveDsl.g:6836:2: 'card'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4()); 
+            }
+            match(input,81,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__5"
+    // InternalPerspectiveDsl.g:6845:1: rule__PerspectiveKanban__Group__5 : rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6 ;
+    public final void rule__PerspectiveKanban__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6849:1: ( rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6 )
+            // InternalPerspectiveDsl.g:6850:2: rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6
+            {
+            pushFollow(FOLLOW_33);
+            rule__PerspectiveKanban__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__5"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__5__Impl"
+    // InternalPerspectiveDsl.g:6857:1: rule__PerspectiveKanban__Group__5__Impl : ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) ) ;
+    public final void rule__PerspectiveKanban__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6861:1: ( ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:6862:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
+            {
+            // InternalPerspectiveDsl.g:6862:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
+            // InternalPerspectiveDsl.g:6863:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getCardRefAssignment_5()); 
+            }
+            // InternalPerspectiveDsl.g:6864:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
+            // InternalPerspectiveDsl.g:6864:3: rule__PerspectiveKanban__CardRefAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__CardRefAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getCardRefAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__5__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__6"
+    // InternalPerspectiveDsl.g:6872:1: rule__PerspectiveKanban__Group__6 : rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7 ;
+    public final void rule__PerspectiveKanban__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6876:1: ( rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7 )
+            // InternalPerspectiveDsl.g:6877:2: rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveKanban__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__Group__7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__6"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__6__Impl"
+    // InternalPerspectiveDsl.g:6884:1: rule__PerspectiveKanban__Group__6__Impl : ( 'dialog' ) ;
+    public final void rule__PerspectiveKanban__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6888:1: ( ( 'dialog' ) )
+            // InternalPerspectiveDsl.g:6889:1: ( 'dialog' )
+            {
+            // InternalPerspectiveDsl.g:6889:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:6890:2: 'dialog'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6()); 
+            }
+            match(input,77,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__6__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__7"
+    // InternalPerspectiveDsl.g:6899:1: rule__PerspectiveKanban__Group__7 : rule__PerspectiveKanban__Group__7__Impl ;
+    public final void rule__PerspectiveKanban__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6903:1: ( rule__PerspectiveKanban__Group__7__Impl )
+            // InternalPerspectiveDsl.g:6904:2: rule__PerspectiveKanban__Group__7__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__Group__7__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__7"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__Group__7__Impl"
+    // InternalPerspectiveDsl.g:6910:1: rule__PerspectiveKanban__Group__7__Impl : ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) ) ;
+    public final void rule__PerspectiveKanban__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6914:1: ( ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) ) )
+            // InternalPerspectiveDsl.g:6915:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
+            {
+            // InternalPerspectiveDsl.g:6915:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
+            // InternalPerspectiveDsl.g:6916:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefAssignment_7()); 
+            }
+            // InternalPerspectiveDsl.g:6917:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
+            // InternalPerspectiveDsl.g:6917:3: rule__PerspectiveKanban__DialogRefAssignment_7
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveKanban__DialogRefAssignment_7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getDialogRefAssignment_7()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__Group__7__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveWelcome__Group__0"
+    // InternalPerspectiveDsl.g:6926:1: rule__PerspectiveWelcome__Group__0 : rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1 ;
+    public final void rule__PerspectiveWelcome__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6930:1: ( rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1 )
+            // InternalPerspectiveDsl.g:6931:2: rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1
+            {
+            pushFollow(FOLLOW_37);
+            rule__PerspectiveWelcome__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveWelcome__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveWelcome__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveWelcome__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6938:1: rule__PerspectiveWelcome__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveWelcome__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6942:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6943:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6943:1: ( () )
+            // InternalPerspectiveDsl.g:6944:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveWelcomeAccess().getPerspectiveWelcomeAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6945:2: ()
+            // InternalPerspectiveDsl.g:6945:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveWelcomeAccess().getPerspectiveWelcomeAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveWelcome__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveWelcome__Group__1"
+    // InternalPerspectiveDsl.g:6953:1: rule__PerspectiveWelcome__Group__1 : rule__PerspectiveWelcome__Group__1__Impl ;
+    public final void rule__PerspectiveWelcome__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6957:1: ( rule__PerspectiveWelcome__Group__1__Impl )
+            // InternalPerspectiveDsl.g:6958:2: rule__PerspectiveWelcome__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveWelcome__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveWelcome__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveWelcome__Group__1__Impl"
+    // InternalPerspectiveDsl.g:6964:1: rule__PerspectiveWelcome__Group__1__Impl : ( 'welcome' ) ;
+    public final void rule__PerspectiveWelcome__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6968:1: ( ( 'welcome' ) )
+            // InternalPerspectiveDsl.g:6969:1: ( 'welcome' )
+            {
+            // InternalPerspectiveDsl.g:6969:1: ( 'welcome' )
+            // InternalPerspectiveDsl.g:6970:2: 'welcome'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1()); 
+            }
+            match(input,82,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveWelcome__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__0"
+    // InternalPerspectiveDsl.g:6980:1: rule__PerspectiveSearch__Group__0 : rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1 ;
+    public final void rule__PerspectiveSearch__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6984:1: ( rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1 )
+            // InternalPerspectiveDsl.g:6985:2: rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1
+            {
+            pushFollow(FOLLOW_38);
+            rule__PerspectiveSearch__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__0__Impl"
+    // InternalPerspectiveDsl.g:6992:1: rule__PerspectiveSearch__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveSearch__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:6996:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6997:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:6997:1: ( () )
+            // InternalPerspectiveDsl.g:6998:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getPerspectiveSearchAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:6999:2: ()
+            // InternalPerspectiveDsl.g:6999:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getPerspectiveSearchAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__1"
+    // InternalPerspectiveDsl.g:7007:1: rule__PerspectiveSearch__Group__1 : rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2 ;
+    public final void rule__PerspectiveSearch__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7011:1: ( rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2 )
+            // InternalPerspectiveDsl.g:7012:2: rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2
+            {
+            pushFollow(FOLLOW_39);
+            rule__PerspectiveSearch__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__1__Impl"
+    // InternalPerspectiveDsl.g:7019:1: rule__PerspectiveSearch__Group__1__Impl : ( 'search' ) ;
+    public final void rule__PerspectiveSearch__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7023:1: ( ( 'search' ) )
+            // InternalPerspectiveDsl.g:7024:1: ( 'search' )
+            {
+            // InternalPerspectiveDsl.g:7024:1: ( 'search' )
+            // InternalPerspectiveDsl.g:7025:2: 'search'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1()); 
+            }
+            match(input,83,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__2"
+    // InternalPerspectiveDsl.g:7034:1: rule__PerspectiveSearch__Group__2 : rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3 ;
+    public final void rule__PerspectiveSearch__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7038:1: ( rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3 )
+            // InternalPerspectiveDsl.g:7039:2: rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveSearch__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__2__Impl"
+    // InternalPerspectiveDsl.g:7046:1: rule__PerspectiveSearch__Group__2__Impl : ( 'in' ) ;
+    public final void rule__PerspectiveSearch__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7050:1: ( ( 'in' ) )
+            // InternalPerspectiveDsl.g:7051:1: ( 'in' )
+            {
+            // InternalPerspectiveDsl.g:7051:1: ( 'in' )
+            // InternalPerspectiveDsl.g:7052:2: 'in'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getInKeyword_2()); 
+            }
+            match(input,84,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getInKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__3"
+    // InternalPerspectiveDsl.g:7061:1: rule__PerspectiveSearch__Group__3 : rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4 ;
+    public final void rule__PerspectiveSearch__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7065:1: ( rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4 )
+            // InternalPerspectiveDsl.g:7066:2: rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4
+            {
+            pushFollow(FOLLOW_40);
+            rule__PerspectiveSearch__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__3"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__3__Impl"
+    // InternalPerspectiveDsl.g:7073:1: rule__PerspectiveSearch__Group__3__Impl : ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) ) ;
+    public final void rule__PerspectiveSearch__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7077:1: ( ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:7078:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
+            {
+            // InternalPerspectiveDsl.g:7078:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:7079:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getDtoRefAssignment_3()); 
+            }
+            // InternalPerspectiveDsl.g:7080:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:7080:3: rule__PerspectiveSearch__DtoRefAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__DtoRefAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getDtoRefAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__4"
+    // InternalPerspectiveDsl.g:7088:1: rule__PerspectiveSearch__Group__4 : rule__PerspectiveSearch__Group__4__Impl ;
+    public final void rule__PerspectiveSearch__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7092:1: ( rule__PerspectiveSearch__Group__4__Impl )
+            // InternalPerspectiveDsl.g:7093:2: rule__PerspectiveSearch__Group__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__4"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group__4__Impl"
+    // InternalPerspectiveDsl.g:7099:1: rule__PerspectiveSearch__Group__4__Impl : ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) ) ;
+    public final void rule__PerspectiveSearch__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7103:1: ( ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) ) )
+            // InternalPerspectiveDsl.g:7104:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
+            {
+            // InternalPerspectiveDsl.g:7104:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
+            // InternalPerspectiveDsl.g:7105:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4()); 
+            }
+            // InternalPerspectiveDsl.g:7106:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
+            // InternalPerspectiveDsl.g:7106:3: rule__PerspectiveSearch__UnorderedGroup_4
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__UnorderedGroup_4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group_4_0__0"
+    // InternalPerspectiveDsl.g:7115:1: rule__PerspectiveSearch__Group_4_0__0 : rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1 ;
+    public final void rule__PerspectiveSearch__Group_4_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7119:1: ( rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1 )
+            // InternalPerspectiveDsl.g:7120:2: rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1
+            {
+            pushFollow(FOLLOW_41);
+            rule__PerspectiveSearch__Group_4_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group_4_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group_4_0__0"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group_4_0__0__Impl"
+    // InternalPerspectiveDsl.g:7127:1: rule__PerspectiveSearch__Group_4_0__0__Impl : ( 'depth' ) ;
+    public final void rule__PerspectiveSearch__Group_4_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7131:1: ( ( 'depth' ) )
+            // InternalPerspectiveDsl.g:7132:1: ( 'depth' )
+            {
+            // InternalPerspectiveDsl.g:7132:1: ( 'depth' )
+            // InternalPerspectiveDsl.g:7133:2: 'depth'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0()); 
+            }
+            match(input,85,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group_4_0__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group_4_0__1"
+    // InternalPerspectiveDsl.g:7142:1: rule__PerspectiveSearch__Group_4_0__1 : rule__PerspectiveSearch__Group_4_0__1__Impl ;
+    public final void rule__PerspectiveSearch__Group_4_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7146:1: ( rule__PerspectiveSearch__Group_4_0__1__Impl )
+            // InternalPerspectiveDsl.g:7147:2: rule__PerspectiveSearch__Group_4_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group_4_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group_4_0__1"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group_4_0__1__Impl"
+    // InternalPerspectiveDsl.g:7153:1: rule__PerspectiveSearch__Group_4_0__1__Impl : ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) ) ;
+    public final void rule__PerspectiveSearch__Group_4_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7157:1: ( ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) ) )
+            // InternalPerspectiveDsl.g:7158:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:7158:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
+            // InternalPerspectiveDsl.g:7159:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getDepthAssignment_4_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:7160:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
+            // InternalPerspectiveDsl.g:7160:3: rule__PerspectiveSearch__DepthAssignment_4_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__DepthAssignment_4_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getDepthAssignment_4_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group_4_0__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group_4_1__0"
+    // InternalPerspectiveDsl.g:7169:1: rule__PerspectiveSearch__Group_4_1__0 : rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1 ;
+    public final void rule__PerspectiveSearch__Group_4_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7173:1: ( rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1 )
+            // InternalPerspectiveDsl.g:7174:2: rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1
+            {
+            pushFollow(FOLLOW_41);
+            rule__PerspectiveSearch__Group_4_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group_4_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group_4_1__0"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group_4_1__0__Impl"
+    // InternalPerspectiveDsl.g:7181:1: rule__PerspectiveSearch__Group_4_1__0__Impl : ( 'filterColumns' ) ;
+    public final void rule__PerspectiveSearch__Group_4_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7185:1: ( ( 'filterColumns' ) )
+            // InternalPerspectiveDsl.g:7186:1: ( 'filterColumns' )
+            {
+            // InternalPerspectiveDsl.g:7186:1: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:7187:2: 'filterColumns'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0()); 
+            }
+            match(input,86,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group_4_1__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group_4_1__1"
+    // InternalPerspectiveDsl.g:7196:1: rule__PerspectiveSearch__Group_4_1__1 : rule__PerspectiveSearch__Group_4_1__1__Impl ;
+    public final void rule__PerspectiveSearch__Group_4_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7200:1: ( rule__PerspectiveSearch__Group_4_1__1__Impl )
+            // InternalPerspectiveDsl.g:7201:2: rule__PerspectiveSearch__Group_4_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__Group_4_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group_4_1__1"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__Group_4_1__1__Impl"
+    // InternalPerspectiveDsl.g:7207:1: rule__PerspectiveSearch__Group_4_1__1__Impl : ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) ) ;
+    public final void rule__PerspectiveSearch__Group_4_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7211:1: ( ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) ) )
+            // InternalPerspectiveDsl.g:7212:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:7212:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
+            // InternalPerspectiveDsl.g:7213:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getFilterColsAssignment_4_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:7214:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
+            // InternalPerspectiveDsl.g:7214:3: rule__PerspectiveSearch__FilterColsAssignment_4_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__FilterColsAssignment_4_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getFilterColsAssignment_4_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__Group_4_1__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveDataInterchange__Group__0"
+    // InternalPerspectiveDsl.g:7223:1: rule__PerspectiveDataInterchange__Group__0 : rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1 ;
+    public final void rule__PerspectiveDataInterchange__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7227:1: ( rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1 )
+            // InternalPerspectiveDsl.g:7228:2: rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1
+            {
+            pushFollow(FOLLOW_42);
+            rule__PerspectiveDataInterchange__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDataInterchange__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDataInterchange__Group__0"
+
+
+    // $ANTLR start "rule__PerspectiveDataInterchange__Group__0__Impl"
+    // InternalPerspectiveDsl.g:7235:1: rule__PerspectiveDataInterchange__Group__0__Impl : ( () ) ;
+    public final void rule__PerspectiveDataInterchange__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7239:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7240:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:7240:1: ( () )
+            // InternalPerspectiveDsl.g:7241:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDataInterchangeAccess().getPerspectiveDataInterchangeAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:7242:2: ()
+            // InternalPerspectiveDsl.g:7242:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDataInterchangeAccess().getPerspectiveDataInterchangeAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDataInterchange__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveDataInterchange__Group__1"
+    // InternalPerspectiveDsl.g:7250:1: rule__PerspectiveDataInterchange__Group__1 : rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2 ;
+    public final void rule__PerspectiveDataInterchange__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7254:1: ( rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2 )
+            // InternalPerspectiveDsl.g:7255:2: rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__PerspectiveDataInterchange__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDataInterchange__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDataInterchange__Group__1"
+
+
+    // $ANTLR start "rule__PerspectiveDataInterchange__Group__1__Impl"
+    // InternalPerspectiveDsl.g:7262:1: rule__PerspectiveDataInterchange__Group__1__Impl : ( 'dataInterchange' ) ;
+    public final void rule__PerspectiveDataInterchange__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7266:1: ( ( 'dataInterchange' ) )
+            // InternalPerspectiveDsl.g:7267:1: ( 'dataInterchange' )
+            {
+            // InternalPerspectiveDsl.g:7267:1: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:7268:2: 'dataInterchange'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1()); 
+            }
+            match(input,87,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDataInterchange__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveDataInterchange__Group__2"
+    // InternalPerspectiveDsl.g:7277:1: rule__PerspectiveDataInterchange__Group__2 : rule__PerspectiveDataInterchange__Group__2__Impl ;
+    public final void rule__PerspectiveDataInterchange__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7281:1: ( rule__PerspectiveDataInterchange__Group__2__Impl )
+            // InternalPerspectiveDsl.g:7282:2: rule__PerspectiveDataInterchange__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDataInterchange__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDataInterchange__Group__2"
+
+
+    // $ANTLR start "rule__PerspectiveDataInterchange__Group__2__Impl"
+    // InternalPerspectiveDsl.g:7288:1: rule__PerspectiveDataInterchange__Group__2__Impl : ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) ) ;
+    public final void rule__PerspectiveDataInterchange__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7292:1: ( ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7293:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:7293:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7294:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:7295:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:7295:3: rule__PerspectiveDataInterchange__RefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveDataInterchange__RefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDataInterchangeAccess().getRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDataInterchange__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__0"
+    // InternalPerspectiveDsl.g:7304: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 {
+            // InternalPerspectiveDsl.g:7308:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
+            // InternalPerspectiveDsl.g:7309:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
+            {
+            pushFollow(FOLLOW_43);
+            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"
+    // InternalPerspectiveDsl.g:7316:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
+    public final void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7320:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7321:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:7321:1: ( () )
+            // InternalPerspectiveDsl.g:7322:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:7323:2: ()
+            // InternalPerspectiveDsl.g:7323: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"
+    // InternalPerspectiveDsl.g:7331: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 {
+            // InternalPerspectiveDsl.g:7335:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
+            // InternalPerspectiveDsl.g:7336:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalPerspectiveDsl.g:7343:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
+    public final void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7347:1: ( ( 'import' ) )
+            // InternalPerspectiveDsl.g:7348:1: ( 'import' )
+            {
+            // InternalPerspectiveDsl.g:7348:1: ( 'import' )
+            // InternalPerspectiveDsl.g:7349: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"
+    // InternalPerspectiveDsl.g:7358: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 {
+            // InternalPerspectiveDsl.g:7362:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
+            // InternalPerspectiveDsl.g:7363:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
+            {
+            pushFollow(FOLLOW_45);
+            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"
+    // InternalPerspectiveDsl.g:7370:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
+    public final void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7374:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
+            // InternalPerspectiveDsl.g:7375:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            {
+            // InternalPerspectiveDsl.g:7375:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:7376:2: ( rule__XImportDeclaration__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); 
+            }
+            // InternalPerspectiveDsl.g:7377:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:7377: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"
+    // InternalPerspectiveDsl.g:7385:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
+    public final void rule__XImportDeclaration__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7389:1: ( rule__XImportDeclaration__Group__3__Impl )
+            // InternalPerspectiveDsl.g:7390: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"
+    // InternalPerspectiveDsl.g:7396:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
+    public final void rule__XImportDeclaration__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7400:1: ( ( ( ';' )? ) )
+            // InternalPerspectiveDsl.g:7401:1: ( ( ';' )? )
+            {
+            // InternalPerspectiveDsl.g:7401:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:7402:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); 
+            }
+            // InternalPerspectiveDsl.g:7403:2: ( ';' )?
+            int alt58=2;
+            int LA58_0 = input.LA(1);
+
+            if ( (LA58_0==88) ) {
+                alt58=1;
+            }
+            switch (alt58) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7403:3: ';'
+                    {
+                    match(input,88,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"
+    // InternalPerspectiveDsl.g:7412: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 {
+            // InternalPerspectiveDsl.g:7416:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
+            // InternalPerspectiveDsl.g:7417:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalPerspectiveDsl.g:7424: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 {
+            // InternalPerspectiveDsl.g:7428:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
+            // InternalPerspectiveDsl.g:7429:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            {
+            // InternalPerspectiveDsl.g:7429:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:7430:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:7431:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:7431: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"
+    // InternalPerspectiveDsl.g:7439: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 {
+            // InternalPerspectiveDsl.g:7443:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
+            // InternalPerspectiveDsl.g:7444:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalPerspectiveDsl.g:7451: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 {
+            // InternalPerspectiveDsl.g:7455:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
+            // InternalPerspectiveDsl.g:7456:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            {
+            // InternalPerspectiveDsl.g:7456:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalPerspectiveDsl.g:7457:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:7458:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            int alt59=2;
+            int LA59_0 = input.LA(1);
+
+            if ( (LA59_0==48) ) {
+                alt59=1;
+            }
+            switch (alt59) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7458: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"
+    // InternalPerspectiveDsl.g:7466: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 {
+            // InternalPerspectiveDsl.g:7470:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
+            // InternalPerspectiveDsl.g:7471:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
+            {
+            pushFollow(FOLLOW_47);
+            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"
+    // InternalPerspectiveDsl.g:7478: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 {
+            // InternalPerspectiveDsl.g:7482:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
+            // InternalPerspectiveDsl.g:7483:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            {
+            // InternalPerspectiveDsl.g:7483:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalPerspectiveDsl.g:7484:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); 
+            }
+            // InternalPerspectiveDsl.g:7485:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalPerspectiveDsl.g:7485: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"
+    // InternalPerspectiveDsl.g:7493: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 {
+            // InternalPerspectiveDsl.g:7497:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
+            // InternalPerspectiveDsl.g:7498: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"
+    // InternalPerspectiveDsl.g:7504: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 {
+            // InternalPerspectiveDsl.g:7508:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
+            // InternalPerspectiveDsl.g:7509:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            {
+            // InternalPerspectiveDsl.g:7509:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalPerspectiveDsl.g:7510:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); 
+            }
+            // InternalPerspectiveDsl.g:7511:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalPerspectiveDsl.g:7511: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"
+    // InternalPerspectiveDsl.g:7520: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 {
+            // InternalPerspectiveDsl.g:7524:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
+            // InternalPerspectiveDsl.g:7525: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"
+    // InternalPerspectiveDsl.g:7532: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 {
+            // InternalPerspectiveDsl.g:7536:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
+            // InternalPerspectiveDsl.g:7537:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            {
+            // InternalPerspectiveDsl.g:7537:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalPerspectiveDsl.g:7538:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:7539:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalPerspectiveDsl.g:7539: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"
+    // InternalPerspectiveDsl.g:7547: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 {
+            // InternalPerspectiveDsl.g:7551:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
+            // InternalPerspectiveDsl.g:7552: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"
+    // InternalPerspectiveDsl.g:7558: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 {
+            // InternalPerspectiveDsl.g:7562:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
+            // InternalPerspectiveDsl.g:7563:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            {
+            // InternalPerspectiveDsl.g:7563:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalPerspectiveDsl.g:7564:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:7565:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalPerspectiveDsl.g:7565: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"
+    // InternalPerspectiveDsl.g:7574: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 {
+            // InternalPerspectiveDsl.g:7578:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
+            // InternalPerspectiveDsl.g:7579:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalPerspectiveDsl.g:7586:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
+    public final void rule__XAnnotation__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7590:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7591:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:7591:1: ( () )
+            // InternalPerspectiveDsl.g:7592:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:7593:2: ()
+            // InternalPerspectiveDsl.g:7593: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"
+    // InternalPerspectiveDsl.g:7601: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 {
+            // InternalPerspectiveDsl.g:7605:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
+            // InternalPerspectiveDsl.g:7606: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"
+    // InternalPerspectiveDsl.g:7613:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
+    public final void rule__XAnnotation__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7617:1: ( ( '@' ) )
+            // InternalPerspectiveDsl.g:7618:1: ( '@' )
+            {
+            // InternalPerspectiveDsl.g:7618:1: ( '@' )
+            // InternalPerspectiveDsl.g:7619:2: '@'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
+            }
+            match(input,89,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"
+    // InternalPerspectiveDsl.g:7628: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 {
+            // InternalPerspectiveDsl.g:7632:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
+            // InternalPerspectiveDsl.g:7633:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalPerspectiveDsl.g:7640:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
+    public final void rule__XAnnotation__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7644:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7645:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:7645:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7646:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:7647:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:7647: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"
+    // InternalPerspectiveDsl.g:7655:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
+    public final void rule__XAnnotation__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7659:1: ( rule__XAnnotation__Group__3__Impl )
+            // InternalPerspectiveDsl.g:7660: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"
+    // InternalPerspectiveDsl.g:7666: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 {
+            // InternalPerspectiveDsl.g:7670:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:7671:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:7671:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:7672:2: ( rule__XAnnotation__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:7673:2: ( rule__XAnnotation__Group_3__0 )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( (LA60_0==90) ) {
+                alt60=1;
+            }
+            switch (alt60) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7673: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"
+    // InternalPerspectiveDsl.g:7682: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 {
+            // InternalPerspectiveDsl.g:7686:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
+            // InternalPerspectiveDsl.g:7687:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalPerspectiveDsl.g:7694:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
+    public final void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7698:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:7699:1: ( ( '(' ) )
+            {
+            // InternalPerspectiveDsl.g:7699:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:7700:2: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:7701:2: ( '(' )
+            // InternalPerspectiveDsl.g:7701:3: '('
+            {
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:7709: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 {
+            // InternalPerspectiveDsl.g:7713:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
+            // InternalPerspectiveDsl.g:7714:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalPerspectiveDsl.g:7721: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 {
+            // InternalPerspectiveDsl.g:7725:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
+            // InternalPerspectiveDsl.g:7726:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            {
+            // InternalPerspectiveDsl.g:7726:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:7727:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:7728:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
+
+            if ( ((LA61_0>=RULE_ID && LA61_0<=RULE_DECIMAL)||LA61_0==27||(LA61_0>=34 && LA61_0<=35)||LA61_0==40||(LA61_0>=45 && LA61_0<=50)||LA61_0==54||(LA61_0>=89 && LA61_0<=90)||(LA61_0>=94 && LA61_0<=95)||LA61_0==98||LA61_0==100||(LA61_0>=104 && LA61_0<=112)||LA61_0==114||LA61_0==125) ) {
+                alt61=1;
+            }
+            switch (alt61) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7728: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"
+    // InternalPerspectiveDsl.g:7736: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 {
+            // InternalPerspectiveDsl.g:7740:1: ( rule__XAnnotation__Group_3__2__Impl )
+            // InternalPerspectiveDsl.g:7741: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"
+    // InternalPerspectiveDsl.g:7747:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
+    public final void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7751:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:7752:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:7752:1: ( ')' )
+            // InternalPerspectiveDsl.g:7753:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:7763: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 {
+            // InternalPerspectiveDsl.g:7767:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
+            // InternalPerspectiveDsl.g:7768:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:7775: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 {
+            // InternalPerspectiveDsl.g:7779:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
+            // InternalPerspectiveDsl.g:7780:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            {
+            // InternalPerspectiveDsl.g:7780:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalPerspectiveDsl.g:7781:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:7782:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalPerspectiveDsl.g:7782: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"
+    // InternalPerspectiveDsl.g:7790: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 {
+            // InternalPerspectiveDsl.g:7794:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:7795: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"
+    // InternalPerspectiveDsl.g:7801: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 {
+            // InternalPerspectiveDsl.g:7805:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
+            // InternalPerspectiveDsl.g:7806:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:7806:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalPerspectiveDsl.g:7807:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:7808:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            loop62:
+            do {
+                int alt62=2;
+                int LA62_0 = input.LA(1);
+
+                if ( (LA62_0==92) ) {
+                    alt62=1;
+                }
+
+
+                switch (alt62) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:7808:3: rule__XAnnotation__Group_3_1_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XAnnotation__Group_3_1_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop62;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:7817: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 {
+            // InternalPerspectiveDsl.g:7821:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
+            // InternalPerspectiveDsl.g:7822: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"
+    // InternalPerspectiveDsl.g:7829: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 {
+            // InternalPerspectiveDsl.g:7833:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:7834:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:7834:1: ( ',' )
+            // InternalPerspectiveDsl.g:7835:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:7844: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 {
+            // InternalPerspectiveDsl.g:7848:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:7849: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"
+    // InternalPerspectiveDsl.g:7855: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 {
+            // InternalPerspectiveDsl.g:7859:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:7860:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:7860:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalPerspectiveDsl.g:7861:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:7862:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalPerspectiveDsl.g:7862: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"
+    // InternalPerspectiveDsl.g:7871: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 {
+            // InternalPerspectiveDsl.g:7875:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
+            // InternalPerspectiveDsl.g:7876:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:7883: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 {
+            // InternalPerspectiveDsl.g:7887:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:7888:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:7888:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:7889:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); 
+            }
+            // InternalPerspectiveDsl.g:7890:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalPerspectiveDsl.g:7890: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"
+    // InternalPerspectiveDsl.g:7898:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
+    public final void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7902:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
+            // InternalPerspectiveDsl.g:7903: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"
+    // InternalPerspectiveDsl.g:7909:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
+    public final void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7913:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:7914:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:7914:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:7915:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:7916:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:7916: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"
+    // InternalPerspectiveDsl.g:7925: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 {
+            // InternalPerspectiveDsl.g:7929:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:7930: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"
+    // InternalPerspectiveDsl.g:7936: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 {
+            // InternalPerspectiveDsl.g:7940:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:7941:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:7941:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:7942:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:7943:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:7943: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"
+    // InternalPerspectiveDsl.g:7952: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 {
+            // InternalPerspectiveDsl.g:7956:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:7957:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalPerspectiveDsl.g:7964: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 {
+            // InternalPerspectiveDsl.g:7968:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:7969:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            {
+            // InternalPerspectiveDsl.g:7969:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalPerspectiveDsl.g:7970:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:7971:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalPerspectiveDsl.g:7971: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"
+    // InternalPerspectiveDsl.g:7979: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 {
+            // InternalPerspectiveDsl.g:7983:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:7984: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"
+    // InternalPerspectiveDsl.g:7990:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
+    public final void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:7994:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:7995:1: ( '=' )
+            {
+            // InternalPerspectiveDsl.g:7995:1: ( '=' )
+            // InternalPerspectiveDsl.g:7996: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"
+    // InternalPerspectiveDsl.g:8006: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 {
+            // InternalPerspectiveDsl.g:8010:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
+            // InternalPerspectiveDsl.g:8011:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalPerspectiveDsl.g:8018: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 {
+            // InternalPerspectiveDsl.g:8022:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8023:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:8023:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8024:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:8025:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8025: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"
+    // InternalPerspectiveDsl.g:8033: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 {
+            // InternalPerspectiveDsl.g:8037:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
+            // InternalPerspectiveDsl.g:8038:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalPerspectiveDsl.g:8045: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 {
+            // InternalPerspectiveDsl.g:8049:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:8050:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:8050:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:8051:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:8052:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            int alt63=2;
+            int LA63_0 = input.LA(1);
+
+            if ( ((LA63_0>=RULE_ID && LA63_0<=RULE_DECIMAL)||LA63_0==27||(LA63_0>=34 && LA63_0<=35)||LA63_0==40||(LA63_0>=45 && LA63_0<=50)||LA63_0==54||(LA63_0>=89 && LA63_0<=90)||(LA63_0>=94 && LA63_0<=95)||LA63_0==98||LA63_0==100||(LA63_0>=104 && LA63_0<=112)||LA63_0==114||LA63_0==125) ) {
+                alt63=1;
+            }
+            switch (alt63) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:8052: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"
+    // InternalPerspectiveDsl.g:8060: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 {
+            // InternalPerspectiveDsl.g:8064:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:8065: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"
+    // InternalPerspectiveDsl.g:8071:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:8075:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:8076:1: ( ']' )
+            {
+            // InternalPerspectiveDsl.g:8076:1: ( ']' )
+            // InternalPerspectiveDsl.g:8077:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+            match(input,93,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"
+    // InternalPerspectiveDsl.g:8087: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 {
+            // InternalPerspectiveDsl.g:8091:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:8092: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"
+    // InternalPerspectiveDsl.g:8098: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 {
+            // InternalPerspectiveDsl.g:8102:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8103:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:8103:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8104:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:8105:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:8105: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"
+    // InternalPerspectiveDsl.g:8114: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 {
+            // InternalPerspectiveDsl.g:8118:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
+            // InternalPerspectiveDsl.g:8119:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+            {
+            pushFollow(FOLLOW_56);
+            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"
+    // InternalPerspectiveDsl.g:8126: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 {
+            // InternalPerspectiveDsl.g:8130:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8131:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:8131:1: ( () )
+            // InternalPerspectiveDsl.g:8132:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:8133:2: ()
+            // InternalPerspectiveDsl.g:8133: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"
+    // InternalPerspectiveDsl.g:8141: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 {
+            // InternalPerspectiveDsl.g:8145:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
+            // InternalPerspectiveDsl.g:8146:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalPerspectiveDsl.g:8153: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 {
+            // InternalPerspectiveDsl.g:8157:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:8158:1: ( '#' )
+            {
+            // InternalPerspectiveDsl.g:8158:1: ( '#' )
+            // InternalPerspectiveDsl.g:8159:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+            match(input,94,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"
+    // InternalPerspectiveDsl.g:8168: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 {
+            // InternalPerspectiveDsl.g:8172:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:8173: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"
+    // InternalPerspectiveDsl.g:8179: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 {
+            // InternalPerspectiveDsl.g:8183:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:8184:1: ( '[' )
+            {
+            // InternalPerspectiveDsl.g:8184:1: ( '[' )
+            // InternalPerspectiveDsl.g:8185:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+            match(input,95,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"
+    // InternalPerspectiveDsl.g:8195: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 {
+            // InternalPerspectiveDsl.g:8199:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
+            // InternalPerspectiveDsl.g:8200:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:8207: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 {
+            // InternalPerspectiveDsl.g:8211:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:8212:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:8212:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:8213:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:8214:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:8214: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"
+    // InternalPerspectiveDsl.g:8222: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 {
+            // InternalPerspectiveDsl.g:8226:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:8227: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"
+    // InternalPerspectiveDsl.g:8233: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 {
+            // InternalPerspectiveDsl.g:8237:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:8238:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:8238:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8239:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8240:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            loop64:
+            do {
+                int alt64=2;
+                int LA64_0 = input.LA(1);
+
+                if ( (LA64_0==92) ) {
+                    alt64=1;
+                }
+
+
+                switch (alt64) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:8240:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop64;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:8249: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 {
+            // InternalPerspectiveDsl.g:8253:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
+            // InternalPerspectiveDsl.g:8254:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:8261: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 {
+            // InternalPerspectiveDsl.g:8265:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:8266:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:8266:1: ( ',' )
+            // InternalPerspectiveDsl.g:8267:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:8276: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 {
+            // InternalPerspectiveDsl.g:8280:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:8281: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"
+    // InternalPerspectiveDsl.g:8287: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 {
+            // InternalPerspectiveDsl.g:8291:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:8292:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:8292:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8293:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8294:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:8294: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"
+    // InternalPerspectiveDsl.g:8303: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 {
+            // InternalPerspectiveDsl.g:8307:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
+            // InternalPerspectiveDsl.g:8308:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:8315:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:8319:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:8320:1: ( ruleXAnnotationOrExpression )
+            {
+            // InternalPerspectiveDsl.g:8320:1: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:8321: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"
+    // InternalPerspectiveDsl.g:8330: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 {
+            // InternalPerspectiveDsl.g:8334:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:8335: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"
+    // InternalPerspectiveDsl.g:8341: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 {
+            // InternalPerspectiveDsl.g:8345:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:8346:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:8346:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:8347:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8348:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            int alt65=2;
+            int LA65_0 = input.LA(1);
+
+            if ( (LA65_0==92) ) {
+                alt65=1;
+            }
+            switch (alt65) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:8348: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"
+    // InternalPerspectiveDsl.g:8357: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 {
+            // InternalPerspectiveDsl.g:8361:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:8362:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:8369:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:8373:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8374:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:8374:1: ( () )
+            // InternalPerspectiveDsl.g:8375:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:8376:2: ()
+            // InternalPerspectiveDsl.g:8376: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"
+    // InternalPerspectiveDsl.g:8384: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 {
+            // InternalPerspectiveDsl.g:8388:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:8389: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"
+    // InternalPerspectiveDsl.g:8395: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 {
+            // InternalPerspectiveDsl.g:8399:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
+            // InternalPerspectiveDsl.g:8400:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            {
+            // InternalPerspectiveDsl.g:8400:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:8401:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:8401:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
+            // InternalPerspectiveDsl.g:8402:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8403:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalPerspectiveDsl.g:8403:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            {
+            pushFollow(FOLLOW_52);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:8406:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8407:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8408:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            loop66:
+            do {
+                int alt66=2;
+                int LA66_0 = input.LA(1);
+
+                if ( (LA66_0==92) ) {
+                    alt66=1;
+                }
+
+
+                switch (alt66) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:8408:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop66;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:8418: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 {
+            // InternalPerspectiveDsl.g:8422:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
+            // InternalPerspectiveDsl.g:8423:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:8430: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 {
+            // InternalPerspectiveDsl.g:8434:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:8435:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:8435:1: ( ',' )
+            // InternalPerspectiveDsl.g:8436:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:8445: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 {
+            // InternalPerspectiveDsl.g:8449:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:8450: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"
+    // InternalPerspectiveDsl.g:8456: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 {
+            // InternalPerspectiveDsl.g:8460:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:8461:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:8461:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8462:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8463:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:8463: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"
+    // InternalPerspectiveDsl.g:8472: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 {
+            // InternalPerspectiveDsl.g:8476:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
+            // InternalPerspectiveDsl.g:8477:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalPerspectiveDsl.g:8484: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 {
+            // InternalPerspectiveDsl.g:8488:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8489:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:8489:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8490:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:8491:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8491: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"
+    // InternalPerspectiveDsl.g:8499: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 {
+            // InternalPerspectiveDsl.g:8503:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
+            // InternalPerspectiveDsl.g:8504:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalPerspectiveDsl.g:8511: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 {
+            // InternalPerspectiveDsl.g:8515:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:8516:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:8516:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:8517:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:8518:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( ((LA67_0>=RULE_ID && LA67_0<=RULE_DECIMAL)||LA67_0==27||(LA67_0>=34 && LA67_0<=35)||LA67_0==40||(LA67_0>=45 && LA67_0<=50)||LA67_0==54||(LA67_0>=89 && LA67_0<=90)||(LA67_0>=94 && LA67_0<=95)||LA67_0==98||LA67_0==100||(LA67_0>=104 && LA67_0<=112)||LA67_0==114||LA67_0==125) ) {
+                alt67=1;
+            }
+            switch (alt67) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:8518: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"
+    // InternalPerspectiveDsl.g:8526: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 {
+            // InternalPerspectiveDsl.g:8530:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:8531: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"
+    // InternalPerspectiveDsl.g:8537:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
+    public final void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:8541:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:8542:1: ( ']' )
+            {
+            // InternalPerspectiveDsl.g:8542:1: ( ']' )
+            // InternalPerspectiveDsl.g:8543:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+            match(input,93,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"
+    // InternalPerspectiveDsl.g:8553: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 {
+            // InternalPerspectiveDsl.g:8557:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:8558: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"
+    // InternalPerspectiveDsl.g:8564: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 {
+            // InternalPerspectiveDsl.g:8568:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8569:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:8569:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8570:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:8571:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:8571: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"
+    // InternalPerspectiveDsl.g:8580: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 {
+            // InternalPerspectiveDsl.g:8584:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
+            // InternalPerspectiveDsl.g:8585:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
+            {
+            pushFollow(FOLLOW_56);
+            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"
+    // InternalPerspectiveDsl.g:8592: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 {
+            // InternalPerspectiveDsl.g:8596:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8597:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:8597:1: ( () )
+            // InternalPerspectiveDsl.g:8598:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:8599:2: ()
+            // InternalPerspectiveDsl.g:8599: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"
+    // InternalPerspectiveDsl.g:8607: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 {
+            // InternalPerspectiveDsl.g:8611:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
+            // InternalPerspectiveDsl.g:8612:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalPerspectiveDsl.g:8619: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 {
+            // InternalPerspectiveDsl.g:8623:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:8624:1: ( '#' )
+            {
+            // InternalPerspectiveDsl.g:8624:1: ( '#' )
+            // InternalPerspectiveDsl.g:8625:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+            match(input,94,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"
+    // InternalPerspectiveDsl.g:8634: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 {
+            // InternalPerspectiveDsl.g:8638:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:8639: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"
+    // InternalPerspectiveDsl.g:8645: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 {
+            // InternalPerspectiveDsl.g:8649:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:8650:1: ( '[' )
+            {
+            // InternalPerspectiveDsl.g:8650:1: ( '[' )
+            // InternalPerspectiveDsl.g:8651:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+            match(input,95,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"
+    // InternalPerspectiveDsl.g:8661: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 {
+            // InternalPerspectiveDsl.g:8665:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
+            // InternalPerspectiveDsl.g:8666:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:8673: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 {
+            // InternalPerspectiveDsl.g:8677:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:8678:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:8678:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:8679:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:8680:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:8680: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"
+    // InternalPerspectiveDsl.g:8688: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 {
+            // InternalPerspectiveDsl.g:8692:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:8693: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"
+    // InternalPerspectiveDsl.g:8699: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 {
+            // InternalPerspectiveDsl.g:8703:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:8704:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:8704:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8705:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8706:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            loop68:
+            do {
+                int alt68=2;
+                int LA68_0 = input.LA(1);
+
+                if ( (LA68_0==92) ) {
+                    alt68=1;
+                }
+
+
+                switch (alt68) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:8706:3: rule__XAnnotationElementValue__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XAnnotationElementValue__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop68;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:8715: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 {
+            // InternalPerspectiveDsl.g:8719:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
+            // InternalPerspectiveDsl.g:8720:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:8727: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 {
+            // InternalPerspectiveDsl.g:8731:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:8732:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:8732:1: ( ',' )
+            // InternalPerspectiveDsl.g:8733:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:8742: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 {
+            // InternalPerspectiveDsl.g:8746:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:8747: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"
+    // InternalPerspectiveDsl.g:8753: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 {
+            // InternalPerspectiveDsl.g:8757:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:8758:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:8758:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8759:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8760:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:8760: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"
+    // InternalPerspectiveDsl.g:8769: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 {
+            // InternalPerspectiveDsl.g:8773:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
+            // InternalPerspectiveDsl.g:8774:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
+            {
+            pushFollow(FOLLOW_58);
+            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"
+    // InternalPerspectiveDsl.g:8781:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
+    public final void rule__XAssignment__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:8785:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8786:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:8786:1: ( () )
+            // InternalPerspectiveDsl.g:8787:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:8788:2: ()
+            // InternalPerspectiveDsl.g:8788: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"
+    // InternalPerspectiveDsl.g:8796: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 {
+            // InternalPerspectiveDsl.g:8800:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
+            // InternalPerspectiveDsl.g:8801:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalPerspectiveDsl.g:8808: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 {
+            // InternalPerspectiveDsl.g:8812:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
+            // InternalPerspectiveDsl.g:8813:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:8813:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:8814:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:8815:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:8815: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"
+    // InternalPerspectiveDsl.g:8823: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 {
+            // InternalPerspectiveDsl.g:8827:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
+            // InternalPerspectiveDsl.g:8828:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:8835:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
+    public final void rule__XAssignment__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:8839:1: ( ( ruleOpSingleAssign ) )
+            // InternalPerspectiveDsl.g:8840:1: ( ruleOpSingleAssign )
+            {
+            // InternalPerspectiveDsl.g:8840:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:8841: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"
+    // InternalPerspectiveDsl.g:8850: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 {
+            // InternalPerspectiveDsl.g:8854:1: ( rule__XAssignment__Group_0__3__Impl )
+            // InternalPerspectiveDsl.g:8855: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"
+    // InternalPerspectiveDsl.g:8861: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 {
+            // InternalPerspectiveDsl.g:8865:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
+            // InternalPerspectiveDsl.g:8866:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            {
+            // InternalPerspectiveDsl.g:8866:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalPerspectiveDsl.g:8867:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); 
+            }
+            // InternalPerspectiveDsl.g:8868:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalPerspectiveDsl.g:8868: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"
+    // InternalPerspectiveDsl.g:8877: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 {
+            // InternalPerspectiveDsl.g:8881:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
+            // InternalPerspectiveDsl.g:8882:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalPerspectiveDsl.g:8889:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
+    public final void rule__XAssignment__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:8893:1: ( ( ruleXOrExpression ) )
+            // InternalPerspectiveDsl.g:8894:1: ( ruleXOrExpression )
+            {
+            // InternalPerspectiveDsl.g:8894:1: ( ruleXOrExpression )
+            // InternalPerspectiveDsl.g:8895: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"
+    // InternalPerspectiveDsl.g:8904: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 {
+            // InternalPerspectiveDsl.g:8908:1: ( rule__XAssignment__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:8909: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"
+    // InternalPerspectiveDsl.g:8915: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 {
+            // InternalPerspectiveDsl.g:8919:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:8920:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:8920:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:8921:2: ( rule__XAssignment__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8922:2: ( rule__XAssignment__Group_1_1__0 )?
+            int alt69=2;
+            alt69 = dfa69.predict(input);
+            switch (alt69) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:8922: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"
+    // InternalPerspectiveDsl.g:8931: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 {
+            // InternalPerspectiveDsl.g:8935:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:8936:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:8943: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 {
+            // InternalPerspectiveDsl.g:8947:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8948:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:8948:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:8949:2: ( rule__XAssignment__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:8950:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:8950: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"
+    // InternalPerspectiveDsl.g:8958: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 {
+            // InternalPerspectiveDsl.g:8962:1: ( rule__XAssignment__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:8963: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"
+    // InternalPerspectiveDsl.g:8969: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 {
+            // InternalPerspectiveDsl.g:8973:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:8974:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:8974:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:8975:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:8976:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:8976: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"
+    // InternalPerspectiveDsl.g:8985: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 {
+            // InternalPerspectiveDsl.g:8989:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:8990: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"
+    // InternalPerspectiveDsl.g:8996: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 {
+            // InternalPerspectiveDsl.g:9000:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9001:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:9001:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9002:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9003:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9003: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"
+    // InternalPerspectiveDsl.g:9012: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 {
+            // InternalPerspectiveDsl.g:9016:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
+            // InternalPerspectiveDsl.g:9017:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalPerspectiveDsl.g:9024: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 {
+            // InternalPerspectiveDsl.g:9028:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9029:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:9029:1: ( () )
+            // InternalPerspectiveDsl.g:9030:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9031:2: ()
+            // InternalPerspectiveDsl.g:9031: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"
+    // InternalPerspectiveDsl.g:9039: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 {
+            // InternalPerspectiveDsl.g:9043:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9044: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"
+    // InternalPerspectiveDsl.g:9050: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 {
+            // InternalPerspectiveDsl.g:9054:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9055:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:9055:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9056:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:9057:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9057: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"
+    // InternalPerspectiveDsl.g:9066: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 {
+            // InternalPerspectiveDsl.g:9070:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
+            // InternalPerspectiveDsl.g:9071:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
+            {
+            pushFollow(FOLLOW_60);
+            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"
+    // InternalPerspectiveDsl.g:9078:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
+    public final void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9082:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:9083:1: ( '<' )
+            {
+            // InternalPerspectiveDsl.g:9083:1: ( '<' )
+            // InternalPerspectiveDsl.g:9084: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"
+    // InternalPerspectiveDsl.g:9093: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 {
+            // InternalPerspectiveDsl.g:9097:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
+            // InternalPerspectiveDsl.g:9098:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalPerspectiveDsl.g:9105:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
+    public final void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9109:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:9110:1: ( '<' )
+            {
+            // InternalPerspectiveDsl.g:9110:1: ( '<' )
+            // InternalPerspectiveDsl.g:9111: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"
+    // InternalPerspectiveDsl.g:9120: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 {
+            // InternalPerspectiveDsl.g:9124:1: ( rule__OpMultiAssign__Group_5__2__Impl )
+            // InternalPerspectiveDsl.g:9125: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"
+    // InternalPerspectiveDsl.g:9131:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
+    public final void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9135:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:9136:1: ( '=' )
+            {
+            // InternalPerspectiveDsl.g:9136:1: ( '=' )
+            // InternalPerspectiveDsl.g:9137: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"
+    // InternalPerspectiveDsl.g:9147: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 {
+            // InternalPerspectiveDsl.g:9151:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
+            // InternalPerspectiveDsl.g:9152:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalPerspectiveDsl.g:9159:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
+    public final void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9163:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:9164:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:9164:1: ( '>' )
+            // InternalPerspectiveDsl.g:9165: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"
+    // InternalPerspectiveDsl.g:9174: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 {
+            // InternalPerspectiveDsl.g:9178:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
+            // InternalPerspectiveDsl.g:9179:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalPerspectiveDsl.g:9186:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
+    public final void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9190:1: ( ( ( '>' )? ) )
+            // InternalPerspectiveDsl.g:9191:1: ( ( '>' )? )
+            {
+            // InternalPerspectiveDsl.g:9191:1: ( ( '>' )? )
+            // InternalPerspectiveDsl.g:9192:2: ( '>' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+            }
+            // InternalPerspectiveDsl.g:9193:2: ( '>' )?
+            int alt70=2;
+            int LA70_0 = input.LA(1);
+
+            if ( (LA70_0==26) ) {
+                alt70=1;
+            }
+            switch (alt70) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:9193: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"
+    // InternalPerspectiveDsl.g:9201: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 {
+            // InternalPerspectiveDsl.g:9205:1: ( rule__OpMultiAssign__Group_6__2__Impl )
+            // InternalPerspectiveDsl.g:9206: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"
+    // InternalPerspectiveDsl.g:9212:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
+    public final void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9216:1: ( ( '>=' ) )
+            // InternalPerspectiveDsl.g:9217:1: ( '>=' )
+            {
+            // InternalPerspectiveDsl.g:9217:1: ( '>=' )
+            // InternalPerspectiveDsl.g:9218: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"
+    // InternalPerspectiveDsl.g:9228: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 {
+            // InternalPerspectiveDsl.g:9232:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
+            // InternalPerspectiveDsl.g:9233:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
+            {
+            pushFollow(FOLLOW_62);
+            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"
+    // InternalPerspectiveDsl.g:9240:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
+    public final void rule__XOrExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9244:1: ( ( ruleXAndExpression ) )
+            // InternalPerspectiveDsl.g:9245:1: ( ruleXAndExpression )
+            {
+            // InternalPerspectiveDsl.g:9245:1: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:9246: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"
+    // InternalPerspectiveDsl.g:9255:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
+    public final void rule__XOrExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9259:1: ( rule__XOrExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:9260: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"
+    // InternalPerspectiveDsl.g:9266: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 {
+            // InternalPerspectiveDsl.g:9270:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9271:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:9271:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:9272:2: ( rule__XOrExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:9273:2: ( rule__XOrExpression__Group_1__0 )*
+            loop71:
+            do {
+                int alt71=2;
+                int LA71_0 = input.LA(1);
+
+                if ( (LA71_0==14) ) {
+                    int LA71_2 = input.LA(2);
+
+                    if ( (synpred128_InternalPerspectiveDsl()) ) {
+                        alt71=1;
+                    }
+
+
+                }
+
+
+                switch (alt71) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:9273:3: rule__XOrExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_63);
+            	    rule__XOrExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop71;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:9282: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 {
+            // InternalPerspectiveDsl.g:9286:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:9287:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:9294: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 {
+            // InternalPerspectiveDsl.g:9298:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9299:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:9299:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9300:2: ( rule__XOrExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:9301:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:9301: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"
+    // InternalPerspectiveDsl.g:9309: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 {
+            // InternalPerspectiveDsl.g:9313:1: ( rule__XOrExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:9314: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"
+    // InternalPerspectiveDsl.g:9320: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 {
+            // InternalPerspectiveDsl.g:9324:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9325:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:9325:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:9326:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:9327:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:9327: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"
+    // InternalPerspectiveDsl.g:9336: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 {
+            // InternalPerspectiveDsl.g:9340:1: ( rule__XOrExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:9341: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"
+    // InternalPerspectiveDsl.g:9347: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 {
+            // InternalPerspectiveDsl.g:9351:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9352:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:9352:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9353:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9354:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9354: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"
+    // InternalPerspectiveDsl.g:9363: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 {
+            // InternalPerspectiveDsl.g:9367:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:9368:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_62);
+            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"
+    // InternalPerspectiveDsl.g:9375: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 {
+            // InternalPerspectiveDsl.g:9379:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9380:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:9380:1: ( () )
+            // InternalPerspectiveDsl.g:9381:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9382:2: ()
+            // InternalPerspectiveDsl.g:9382: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"
+    // InternalPerspectiveDsl.g:9390: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 {
+            // InternalPerspectiveDsl.g:9394:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9395: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"
+    // InternalPerspectiveDsl.g:9401: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 {
+            // InternalPerspectiveDsl.g:9405:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9406:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:9406:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9407:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:9408:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9408: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"
+    // InternalPerspectiveDsl.g:9417: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 {
+            // InternalPerspectiveDsl.g:9421:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
+            // InternalPerspectiveDsl.g:9422:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            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"
+    // InternalPerspectiveDsl.g:9429:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
+    public final void rule__XAndExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9433:1: ( ( ruleXEqualityExpression ) )
+            // InternalPerspectiveDsl.g:9434:1: ( ruleXEqualityExpression )
+            {
+            // InternalPerspectiveDsl.g:9434:1: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:9435: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"
+    // InternalPerspectiveDsl.g:9444:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
+    public final void rule__XAndExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9448:1: ( rule__XAndExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:9449: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"
+    // InternalPerspectiveDsl.g:9455: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 {
+            // InternalPerspectiveDsl.g:9459:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9460:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:9460:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:9461:2: ( rule__XAndExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:9462:2: ( rule__XAndExpression__Group_1__0 )*
+            loop72:
+            do {
+                int alt72=2;
+                int LA72_0 = input.LA(1);
+
+                if ( (LA72_0==15) ) {
+                    int LA72_2 = input.LA(2);
+
+                    if ( (synpred129_InternalPerspectiveDsl()) ) {
+                        alt72=1;
+                    }
+
+
+                }
+
+
+                switch (alt72) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:9462:3: rule__XAndExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_65);
+            	    rule__XAndExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop72;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:9471: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 {
+            // InternalPerspectiveDsl.g:9475:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:9476:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:9483: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 {
+            // InternalPerspectiveDsl.g:9487:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9488:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:9488:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9489:2: ( rule__XAndExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:9490:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:9490: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"
+    // InternalPerspectiveDsl.g:9498: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 {
+            // InternalPerspectiveDsl.g:9502:1: ( rule__XAndExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:9503: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"
+    // InternalPerspectiveDsl.g:9509: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 {
+            // InternalPerspectiveDsl.g:9513:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9514:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:9514:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:9515:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:9516:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:9516: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"
+    // InternalPerspectiveDsl.g:9525: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 {
+            // InternalPerspectiveDsl.g:9529:1: ( rule__XAndExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:9530: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"
+    // InternalPerspectiveDsl.g:9536: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 {
+            // InternalPerspectiveDsl.g:9540:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9541:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:9541:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9542:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9543:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9543: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"
+    // InternalPerspectiveDsl.g:9552: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 {
+            // InternalPerspectiveDsl.g:9556:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:9557:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_64);
+            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"
+    // InternalPerspectiveDsl.g:9564: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 {
+            // InternalPerspectiveDsl.g:9568:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9569:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:9569:1: ( () )
+            // InternalPerspectiveDsl.g:9570:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9571:2: ()
+            // InternalPerspectiveDsl.g:9571: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"
+    // InternalPerspectiveDsl.g:9579: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 {
+            // InternalPerspectiveDsl.g:9583:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9584: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"
+    // InternalPerspectiveDsl.g:9590: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 {
+            // InternalPerspectiveDsl.g:9594:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9595:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:9595:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9596:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:9597:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9597: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"
+    // InternalPerspectiveDsl.g:9606: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 {
+            // InternalPerspectiveDsl.g:9610:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
+            // InternalPerspectiveDsl.g:9611:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
+            {
+            pushFollow(FOLLOW_66);
+            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"
+    // InternalPerspectiveDsl.g:9618:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
+    public final void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9622:1: ( ( ruleXRelationalExpression ) )
+            // InternalPerspectiveDsl.g:9623:1: ( ruleXRelationalExpression )
+            {
+            // InternalPerspectiveDsl.g:9623:1: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:9624: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"
+    // InternalPerspectiveDsl.g:9633:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
+    public final void rule__XEqualityExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9637:1: ( rule__XEqualityExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:9638: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"
+    // InternalPerspectiveDsl.g:9644: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 {
+            // InternalPerspectiveDsl.g:9648:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9649:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:9649:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:9650:2: ( rule__XEqualityExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:9651:2: ( rule__XEqualityExpression__Group_1__0 )*
+            loop73:
+            do {
+                int alt73=2;
+                switch ( input.LA(1) ) {
+                case 21:
+                    {
+                    int LA73_2 = input.LA(2);
+
+                    if ( (synpred130_InternalPerspectiveDsl()) ) {
+                        alt73=1;
+                    }
+
+
+                    }
+                    break;
+                case 22:
+                    {
+                    int LA73_3 = input.LA(2);
+
+                    if ( (synpred130_InternalPerspectiveDsl()) ) {
+                        alt73=1;
+                    }
+
+
+                    }
+                    break;
+                case 23:
+                    {
+                    int LA73_4 = input.LA(2);
+
+                    if ( (synpred130_InternalPerspectiveDsl()) ) {
+                        alt73=1;
+                    }
+
+
+                    }
+                    break;
+                case 24:
+                    {
+                    int LA73_5 = input.LA(2);
+
+                    if ( (synpred130_InternalPerspectiveDsl()) ) {
+                        alt73=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt73) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:9651:3: rule__XEqualityExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_67);
+            	    rule__XEqualityExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop73;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:9660: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 {
+            // InternalPerspectiveDsl.g:9664:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:9665:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:9672: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 {
+            // InternalPerspectiveDsl.g:9676:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9677:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:9677:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9678:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:9679:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:9679: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"
+    // InternalPerspectiveDsl.g:9687: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 {
+            // InternalPerspectiveDsl.g:9691:1: ( rule__XEqualityExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:9692: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"
+    // InternalPerspectiveDsl.g:9698: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 {
+            // InternalPerspectiveDsl.g:9702:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9703:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:9703:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:9704:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:9705:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:9705: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"
+    // InternalPerspectiveDsl.g:9714: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 {
+            // InternalPerspectiveDsl.g:9718:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:9719: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"
+    // InternalPerspectiveDsl.g:9725: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 {
+            // InternalPerspectiveDsl.g:9729:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9730:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:9730:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9731:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9732:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9732: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"
+    // InternalPerspectiveDsl.g:9741: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 {
+            // InternalPerspectiveDsl.g:9745:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:9746:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_66);
+            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"
+    // InternalPerspectiveDsl.g:9753: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 {
+            // InternalPerspectiveDsl.g:9757:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9758:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:9758:1: ( () )
+            // InternalPerspectiveDsl.g:9759:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9760:2: ()
+            // InternalPerspectiveDsl.g:9760: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"
+    // InternalPerspectiveDsl.g:9768: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 {
+            // InternalPerspectiveDsl.g:9772:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9773: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"
+    // InternalPerspectiveDsl.g:9779: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 {
+            // InternalPerspectiveDsl.g:9783:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9784:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:9784:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9785:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:9786:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9786: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"
+    // InternalPerspectiveDsl.g:9795: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 {
+            // InternalPerspectiveDsl.g:9799:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
+            // InternalPerspectiveDsl.g:9800:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
+            {
+            pushFollow(FOLLOW_68);
+            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"
+    // InternalPerspectiveDsl.g:9807:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
+    public final void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9811:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalPerspectiveDsl.g:9812:1: ( ruleXOtherOperatorExpression )
+            {
+            // InternalPerspectiveDsl.g:9812:1: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:9813: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"
+    // InternalPerspectiveDsl.g:9822:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
+    public final void rule__XRelationalExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9826:1: ( rule__XRelationalExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:9827: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"
+    // InternalPerspectiveDsl.g:9833:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
+    public final void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:9837:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
+            // InternalPerspectiveDsl.g:9838:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            {
+            // InternalPerspectiveDsl.g:9838:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:9839:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); 
+            }
+            // InternalPerspectiveDsl.g:9840:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            loop74:
+            do {
+                int alt74=2;
+                switch ( input.LA(1) ) {
+                case 27:
+                    {
+                    int LA74_2 = input.LA(2);
+
+                    if ( (synpred131_InternalPerspectiveDsl()) ) {
+                        alt74=1;
+                    }
+
+
+                    }
+                    break;
+                case 26:
+                    {
+                    int LA74_3 = input.LA(2);
+
+                    if ( (synpred131_InternalPerspectiveDsl()) ) {
+                        alt74=1;
+                    }
+
+
+                    }
+                    break;
+                case 96:
+                    {
+                    int LA74_4 = input.LA(2);
+
+                    if ( (synpred131_InternalPerspectiveDsl()) ) {
+                        alt74=1;
+                    }
+
+
+                    }
+                    break;
+                case 25:
+                    {
+                    int LA74_5 = input.LA(2);
+
+                    if ( (synpred131_InternalPerspectiveDsl()) ) {
+                        alt74=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt74) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:9840:3: rule__XRelationalExpression__Alternatives_1
+            	    {
+            	    pushFollow(FOLLOW_69);
+            	    rule__XRelationalExpression__Alternatives_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop74;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:9849: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 {
+            // InternalPerspectiveDsl.g:9853:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:9854:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:9861: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 {
+            // InternalPerspectiveDsl.g:9865:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9866:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:9866:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9867:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9868:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9868: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"
+    // InternalPerspectiveDsl.g:9876: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 {
+            // InternalPerspectiveDsl.g:9880:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:9881: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"
+    // InternalPerspectiveDsl.g:9887: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 {
+            // InternalPerspectiveDsl.g:9891:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9892:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:9892:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:9893:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:9894:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:9894: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"
+    // InternalPerspectiveDsl.g:9903: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 {
+            // InternalPerspectiveDsl.g:9907:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:9908: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"
+    // InternalPerspectiveDsl.g:9914: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 {
+            // InternalPerspectiveDsl.g:9918:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9919:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:9919:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9920:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9921:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:9921: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"
+    // InternalPerspectiveDsl.g:9930: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 {
+            // InternalPerspectiveDsl.g:9934:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
+            // InternalPerspectiveDsl.g:9935:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
+            {
+            pushFollow(FOLLOW_71);
+            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"
+    // InternalPerspectiveDsl.g:9942: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 {
+            // InternalPerspectiveDsl.g:9946:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9947:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:9947:1: ( () )
+            // InternalPerspectiveDsl.g:9948:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:9949:2: ()
+            // InternalPerspectiveDsl.g:9949: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"
+    // InternalPerspectiveDsl.g:9957: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 {
+            // InternalPerspectiveDsl.g:9961:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9962: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"
+    // InternalPerspectiveDsl.g:9968: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 {
+            // InternalPerspectiveDsl.g:9972:1: ( ( 'instanceof' ) )
+            // InternalPerspectiveDsl.g:9973:1: ( 'instanceof' )
+            {
+            // InternalPerspectiveDsl.g:9973:1: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:9974:2: 'instanceof'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
+            }
+            match(input,96,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"
+    // InternalPerspectiveDsl.g:9984: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 {
+            // InternalPerspectiveDsl.g:9988:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:9989:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:9996: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 {
+            // InternalPerspectiveDsl.g:10000:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10001:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10001:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10002:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:10003:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:10003: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"
+    // InternalPerspectiveDsl.g:10011: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 {
+            // InternalPerspectiveDsl.g:10015:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:10016: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"
+    // InternalPerspectiveDsl.g:10022: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 {
+            // InternalPerspectiveDsl.g:10026:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10027:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:10027:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:10028:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:10029:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:10029: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"
+    // InternalPerspectiveDsl.g:10038: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 {
+            // InternalPerspectiveDsl.g:10042:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10043: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"
+    // InternalPerspectiveDsl.g:10049: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 {
+            // InternalPerspectiveDsl.g:10053:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10054:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10054:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10055:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:10056:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10056: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"
+    // InternalPerspectiveDsl.g:10065: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 {
+            // InternalPerspectiveDsl.g:10069:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10070:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_68);
+            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"
+    // InternalPerspectiveDsl.g:10077: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 {
+            // InternalPerspectiveDsl.g:10081:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10082:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:10082:1: ( () )
+            // InternalPerspectiveDsl.g:10083:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:10084:2: ()
+            // InternalPerspectiveDsl.g:10084: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"
+    // InternalPerspectiveDsl.g:10092: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 {
+            // InternalPerspectiveDsl.g:10096:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10097: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"
+    // InternalPerspectiveDsl.g:10103: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 {
+            // InternalPerspectiveDsl.g:10107:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10108:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:10108:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10109:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:10110:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10110: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"
+    // InternalPerspectiveDsl.g:10119: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 {
+            // InternalPerspectiveDsl.g:10123:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
+            // InternalPerspectiveDsl.g:10124:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalPerspectiveDsl.g:10131:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
+    public final void rule__OpCompare__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10135:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:10136:1: ( '<' )
+            {
+            // InternalPerspectiveDsl.g:10136:1: ( '<' )
+            // InternalPerspectiveDsl.g:10137: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"
+    // InternalPerspectiveDsl.g:10146: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 {
+            // InternalPerspectiveDsl.g:10150:1: ( rule__OpCompare__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10151: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"
+    // InternalPerspectiveDsl.g:10157:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
+    public final void rule__OpCompare__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10161:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:10162:1: ( '=' )
+            {
+            // InternalPerspectiveDsl.g:10162:1: ( '=' )
+            // InternalPerspectiveDsl.g:10163: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"
+    // InternalPerspectiveDsl.g:10173: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 {
+            // InternalPerspectiveDsl.g:10177:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10178:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
+            {
+            pushFollow(FOLLOW_72);
+            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"
+    // InternalPerspectiveDsl.g:10185:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
+    public final void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10189:1: ( ( ruleXAdditiveExpression ) )
+            // InternalPerspectiveDsl.g:10190:1: ( ruleXAdditiveExpression )
+            {
+            // InternalPerspectiveDsl.g:10190:1: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:10191: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"
+    // InternalPerspectiveDsl.g:10200:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
+    public final void rule__XOtherOperatorExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10204:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10205: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"
+    // InternalPerspectiveDsl.g:10211: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 {
+            // InternalPerspectiveDsl.g:10215:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:10216:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:10216:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10217:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:10218:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            loop75:
+            do {
+                int alt75=2;
+                alt75 = dfa75.predict(input);
+                switch (alt75) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:10218:3: rule__XOtherOperatorExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_73);
+            	    rule__XOtherOperatorExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop75;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:10227: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 {
+            // InternalPerspectiveDsl.g:10231:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:10232:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:10239: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 {
+            // InternalPerspectiveDsl.g:10243:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10244:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10244:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10245:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:10246:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10246: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"
+    // InternalPerspectiveDsl.g:10254: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 {
+            // InternalPerspectiveDsl.g:10258:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10259: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"
+    // InternalPerspectiveDsl.g:10265: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 {
+            // InternalPerspectiveDsl.g:10269:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10270:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:10270:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10271:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:10272:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10272: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"
+    // InternalPerspectiveDsl.g:10281: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 {
+            // InternalPerspectiveDsl.g:10285:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10286: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"
+    // InternalPerspectiveDsl.g:10292: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 {
+            // InternalPerspectiveDsl.g:10296:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10297:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10297:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10298:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:10299:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10299: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"
+    // InternalPerspectiveDsl.g:10308: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 {
+            // InternalPerspectiveDsl.g:10312:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10313:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_72);
+            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"
+    // InternalPerspectiveDsl.g:10320: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 {
+            // InternalPerspectiveDsl.g:10324:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10325:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:10325:1: ( () )
+            // InternalPerspectiveDsl.g:10326:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:10327:2: ()
+            // InternalPerspectiveDsl.g:10327: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"
+    // InternalPerspectiveDsl.g:10335: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 {
+            // InternalPerspectiveDsl.g:10339:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10340: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"
+    // InternalPerspectiveDsl.g:10346: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 {
+            // InternalPerspectiveDsl.g:10350:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10351:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:10351:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10352:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:10353:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10353: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"
+    // InternalPerspectiveDsl.g:10362: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 {
+            // InternalPerspectiveDsl.g:10366:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
+            // InternalPerspectiveDsl.g:10367:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
+            {
+            pushFollow(FOLLOW_74);
+            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"
+    // InternalPerspectiveDsl.g:10374:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10378:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:10379:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:10379:1: ( '>' )
+            // InternalPerspectiveDsl.g:10380: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"
+    // InternalPerspectiveDsl.g:10389: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 {
+            // InternalPerspectiveDsl.g:10393:1: ( rule__OpOther__Group_2__1__Impl )
+            // InternalPerspectiveDsl.g:10394: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"
+    // InternalPerspectiveDsl.g:10400:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
+    public final void rule__OpOther__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10404:1: ( ( '..' ) )
+            // InternalPerspectiveDsl.g:10405:1: ( '..' )
+            {
+            // InternalPerspectiveDsl.g:10405:1: ( '..' )
+            // InternalPerspectiveDsl.g:10406: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"
+    // InternalPerspectiveDsl.g:10416: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 {
+            // InternalPerspectiveDsl.g:10420:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
+            // InternalPerspectiveDsl.g:10421:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
+            {
+            pushFollow(FOLLOW_75);
+            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"
+    // InternalPerspectiveDsl.g:10428:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10432:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:10433:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:10433:1: ( '>' )
+            // InternalPerspectiveDsl.g:10434: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"
+    // InternalPerspectiveDsl.g:10443: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 {
+            // InternalPerspectiveDsl.g:10447:1: ( rule__OpOther__Group_5__1__Impl )
+            // InternalPerspectiveDsl.g:10448: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"
+    // InternalPerspectiveDsl.g:10454: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 {
+            // InternalPerspectiveDsl.g:10458:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
+            // InternalPerspectiveDsl.g:10459:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            {
+            // InternalPerspectiveDsl.g:10459:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalPerspectiveDsl.g:10460:2: ( rule__OpOther__Alternatives_5_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); 
+            }
+            // InternalPerspectiveDsl.g:10461:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalPerspectiveDsl.g:10461: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"
+    // InternalPerspectiveDsl.g:10470: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 {
+            // InternalPerspectiveDsl.g:10474:1: ( rule__OpOther__Group_5_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10475: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"
+    // InternalPerspectiveDsl.g:10481: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 {
+            // InternalPerspectiveDsl.g:10485:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10486:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10486:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10487:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:10488:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10488: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"
+    // InternalPerspectiveDsl.g:10497: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 {
+            // InternalPerspectiveDsl.g:10501:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10502:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
+            {
+            pushFollow(FOLLOW_75);
+            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"
+    // InternalPerspectiveDsl.g:10509: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 {
+            // InternalPerspectiveDsl.g:10513:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:10514:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:10514:1: ( '>' )
+            // InternalPerspectiveDsl.g:10515: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"
+    // InternalPerspectiveDsl.g:10524: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 {
+            // InternalPerspectiveDsl.g:10528:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10529: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"
+    // InternalPerspectiveDsl.g:10535: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 {
+            // InternalPerspectiveDsl.g:10539:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:10540:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:10540:1: ( '>' )
+            // InternalPerspectiveDsl.g:10541: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"
+    // InternalPerspectiveDsl.g:10551: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 {
+            // InternalPerspectiveDsl.g:10555:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
+            // InternalPerspectiveDsl.g:10556:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
+            {
+            pushFollow(FOLLOW_76);
+            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"
+    // InternalPerspectiveDsl.g:10563:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
+    public final void rule__OpOther__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10567:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:10568:1: ( '<' )
+            {
+            // InternalPerspectiveDsl.g:10568:1: ( '<' )
+            // InternalPerspectiveDsl.g:10569: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"
+    // InternalPerspectiveDsl.g:10578: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 {
+            // InternalPerspectiveDsl.g:10582:1: ( rule__OpOther__Group_6__1__Impl )
+            // InternalPerspectiveDsl.g:10583: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"
+    // InternalPerspectiveDsl.g:10589: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 {
+            // InternalPerspectiveDsl.g:10593:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
+            // InternalPerspectiveDsl.g:10594:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            {
+            // InternalPerspectiveDsl.g:10594:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalPerspectiveDsl.g:10595:2: ( rule__OpOther__Alternatives_6_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); 
+            }
+            // InternalPerspectiveDsl.g:10596:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalPerspectiveDsl.g:10596: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"
+    // InternalPerspectiveDsl.g:10605: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 {
+            // InternalPerspectiveDsl.g:10609:1: ( rule__OpOther__Group_6_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10610: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"
+    // InternalPerspectiveDsl.g:10616: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 {
+            // InternalPerspectiveDsl.g:10620:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10621:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10621:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10622:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:10623:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10623: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"
+    // InternalPerspectiveDsl.g:10632: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 {
+            // InternalPerspectiveDsl.g:10636:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10637:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
+            {
+            pushFollow(FOLLOW_60);
+            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"
+    // InternalPerspectiveDsl.g:10644: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 {
+            // InternalPerspectiveDsl.g:10648:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:10649:1: ( '<' )
+            {
+            // InternalPerspectiveDsl.g:10649:1: ( '<' )
+            // InternalPerspectiveDsl.g:10650: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"
+    // InternalPerspectiveDsl.g:10659: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 {
+            // InternalPerspectiveDsl.g:10663:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10664: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"
+    // InternalPerspectiveDsl.g:10670: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 {
+            // InternalPerspectiveDsl.g:10674:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:10675:1: ( '<' )
+            {
+            // InternalPerspectiveDsl.g:10675:1: ( '<' )
+            // InternalPerspectiveDsl.g:10676: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"
+    // InternalPerspectiveDsl.g:10686: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 {
+            // InternalPerspectiveDsl.g:10690:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10691:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
+            {
+            pushFollow(FOLLOW_77);
+            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"
+    // InternalPerspectiveDsl.g:10698:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
+    public final void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10702:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalPerspectiveDsl.g:10703:1: ( ruleXMultiplicativeExpression )
+            {
+            // InternalPerspectiveDsl.g:10703:1: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:10704: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"
+    // InternalPerspectiveDsl.g:10713:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
+    public final void rule__XAdditiveExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10717:1: ( rule__XAdditiveExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10718: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"
+    // InternalPerspectiveDsl.g:10724: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 {
+            // InternalPerspectiveDsl.g:10728:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:10729:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:10729:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10730:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:10731:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            loop76:
+            do {
+                int alt76=2;
+                int LA76_0 = input.LA(1);
+
+                if ( (LA76_0==35) ) {
+                    int LA76_2 = input.LA(2);
+
+                    if ( (synpred133_InternalPerspectiveDsl()) ) {
+                        alt76=1;
+                    }
+
+
+                }
+                else if ( (LA76_0==34) ) {
+                    int LA76_3 = input.LA(2);
+
+                    if ( (synpred133_InternalPerspectiveDsl()) ) {
+                        alt76=1;
+                    }
+
+
+                }
+
+
+                switch (alt76) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:10731:3: rule__XAdditiveExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_78);
+            	    rule__XAdditiveExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop76;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:10740: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 {
+            // InternalPerspectiveDsl.g:10744:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:10745:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:10752: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 {
+            // InternalPerspectiveDsl.g:10756:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10757:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10757:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10758:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:10759:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10759: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"
+    // InternalPerspectiveDsl.g:10767: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 {
+            // InternalPerspectiveDsl.g:10771:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10772: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"
+    // InternalPerspectiveDsl.g:10778: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 {
+            // InternalPerspectiveDsl.g:10782:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10783:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:10783:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10784:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:10785:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10785: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"
+    // InternalPerspectiveDsl.g:10794: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 {
+            // InternalPerspectiveDsl.g:10798:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10799: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"
+    // InternalPerspectiveDsl.g:10805: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 {
+            // InternalPerspectiveDsl.g:10809:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10810:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10810:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10811:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:10812:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10812: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"
+    // InternalPerspectiveDsl.g:10821: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 {
+            // InternalPerspectiveDsl.g:10825:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10826:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_77);
+            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"
+    // InternalPerspectiveDsl.g:10833: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 {
+            // InternalPerspectiveDsl.g:10837:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10838:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:10838:1: ( () )
+            // InternalPerspectiveDsl.g:10839:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:10840:2: ()
+            // InternalPerspectiveDsl.g:10840: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"
+    // InternalPerspectiveDsl.g:10848: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 {
+            // InternalPerspectiveDsl.g:10852:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10853: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"
+    // InternalPerspectiveDsl.g:10859: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 {
+            // InternalPerspectiveDsl.g:10863:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10864:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:10864:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10865:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:10866:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10866: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"
+    // InternalPerspectiveDsl.g:10875: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 {
+            // InternalPerspectiveDsl.g:10879:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10880:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
+            {
+            pushFollow(FOLLOW_79);
+            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"
+    // InternalPerspectiveDsl.g:10887:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
+    public final void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10891:1: ( ( ruleXUnaryOperation ) )
+            // InternalPerspectiveDsl.g:10892:1: ( ruleXUnaryOperation )
+            {
+            // InternalPerspectiveDsl.g:10892:1: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:10893: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"
+    // InternalPerspectiveDsl.g:10902:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
+    public final void rule__XMultiplicativeExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:10906:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10907: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"
+    // InternalPerspectiveDsl.g:10913: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 {
+            // InternalPerspectiveDsl.g:10917:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:10918:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:10918:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10919:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:10920:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            loop77:
+            do {
+                int alt77=2;
+                switch ( input.LA(1) ) {
+                case 36:
+                    {
+                    int LA77_2 = input.LA(2);
+
+                    if ( (synpred134_InternalPerspectiveDsl()) ) {
+                        alt77=1;
+                    }
+
+
+                    }
+                    break;
+                case 37:
+                    {
+                    int LA77_3 = input.LA(2);
+
+                    if ( (synpred134_InternalPerspectiveDsl()) ) {
+                        alt77=1;
+                    }
+
+
+                    }
+                    break;
+                case 38:
+                    {
+                    int LA77_4 = input.LA(2);
+
+                    if ( (synpred134_InternalPerspectiveDsl()) ) {
+                        alt77=1;
+                    }
+
+
+                    }
+                    break;
+                case 39:
+                    {
+                    int LA77_5 = input.LA(2);
+
+                    if ( (synpred134_InternalPerspectiveDsl()) ) {
+                        alt77=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt77) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:10920:3: rule__XMultiplicativeExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_80);
+            	    rule__XMultiplicativeExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop77;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:10929: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 {
+            // InternalPerspectiveDsl.g:10933:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:10934:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:10941: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 {
+            // InternalPerspectiveDsl.g:10945:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10946:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10946:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10947:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:10948:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10948: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"
+    // InternalPerspectiveDsl.g:10956: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 {
+            // InternalPerspectiveDsl.g:10960:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10961: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"
+    // InternalPerspectiveDsl.g:10967: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 {
+            // InternalPerspectiveDsl.g:10971:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10972:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:10972:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10973:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:10974:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10974: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"
+    // InternalPerspectiveDsl.g:10983: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 {
+            // InternalPerspectiveDsl.g:10987:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10988: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"
+    // InternalPerspectiveDsl.g:10994: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 {
+            // InternalPerspectiveDsl.g:10998:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10999:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:10999:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11000:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11001:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11001: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"
+    // InternalPerspectiveDsl.g:11010: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 {
+            // InternalPerspectiveDsl.g:11014:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11015:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_79);
+            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"
+    // InternalPerspectiveDsl.g:11022: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 {
+            // InternalPerspectiveDsl.g:11026:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11027:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:11027:1: ( () )
+            // InternalPerspectiveDsl.g:11028:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11029:2: ()
+            // InternalPerspectiveDsl.g:11029: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"
+    // InternalPerspectiveDsl.g:11037: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 {
+            // InternalPerspectiveDsl.g:11041:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11042: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"
+    // InternalPerspectiveDsl.g:11048: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 {
+            // InternalPerspectiveDsl.g:11052:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11053:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:11053:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11054:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:11055:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11055: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"
+    // InternalPerspectiveDsl.g:11064: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 {
+            // InternalPerspectiveDsl.g:11068:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
+            // InternalPerspectiveDsl.g:11069:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
+            {
+            pushFollow(FOLLOW_81);
+            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"
+    // InternalPerspectiveDsl.g:11076:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
+    public final void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:11080:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11081:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:11081:1: ( () )
+            // InternalPerspectiveDsl.g:11082:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11083:2: ()
+            // InternalPerspectiveDsl.g:11083: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"
+    // InternalPerspectiveDsl.g:11091: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 {
+            // InternalPerspectiveDsl.g:11095:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
+            // InternalPerspectiveDsl.g:11096:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:11103: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 {
+            // InternalPerspectiveDsl.g:11107:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11108:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:11108:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:11109:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:11110:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:11110: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"
+    // InternalPerspectiveDsl.g:11118: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 {
+            // InternalPerspectiveDsl.g:11122:1: ( rule__XUnaryOperation__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:11123: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"
+    // InternalPerspectiveDsl.g:11129: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 {
+            // InternalPerspectiveDsl.g:11133:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
+            // InternalPerspectiveDsl.g:11134:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            {
+            // InternalPerspectiveDsl.g:11134:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalPerspectiveDsl.g:11135:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); 
+            }
+            // InternalPerspectiveDsl.g:11136:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalPerspectiveDsl.g:11136: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"
+    // InternalPerspectiveDsl.g:11145: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 {
+            // InternalPerspectiveDsl.g:11149:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
+            // InternalPerspectiveDsl.g:11150:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
+            {
+            pushFollow(FOLLOW_82);
+            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"
+    // InternalPerspectiveDsl.g:11157:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
+    public final void rule__XCastedExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:11161:1: ( ( ruleXPostfixOperation ) )
+            // InternalPerspectiveDsl.g:11162:1: ( ruleXPostfixOperation )
+            {
+            // InternalPerspectiveDsl.g:11162:1: ( ruleXPostfixOperation )
+            // InternalPerspectiveDsl.g:11163: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"
+    // InternalPerspectiveDsl.g:11172:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
+    public final void rule__XCastedExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:11176:1: ( rule__XCastedExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11177: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"
+    // InternalPerspectiveDsl.g:11183: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 {
+            // InternalPerspectiveDsl.g:11187:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:11188:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:11188:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11189:2: ( rule__XCastedExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:11190:2: ( rule__XCastedExpression__Group_1__0 )*
+            loop78:
+            do {
+                int alt78=2;
+                int LA78_0 = input.LA(1);
+
+                if ( (LA78_0==97) ) {
+                    int LA78_2 = input.LA(2);
+
+                    if ( (synpred135_InternalPerspectiveDsl()) ) {
+                        alt78=1;
+                    }
+
+
+                }
+
+
+                switch (alt78) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:11190:3: rule__XCastedExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_83);
+            	    rule__XCastedExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop78;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:11199: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 {
+            // InternalPerspectiveDsl.g:11203:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:11204:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:11211: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 {
+            // InternalPerspectiveDsl.g:11215:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11216:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:11216:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11217:2: ( rule__XCastedExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:11218:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11218: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"
+    // InternalPerspectiveDsl.g:11226: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 {
+            // InternalPerspectiveDsl.g:11230:1: ( rule__XCastedExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:11231: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"
+    // InternalPerspectiveDsl.g:11237: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 {
+            // InternalPerspectiveDsl.g:11241:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:11242:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:11242:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11243:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:11244:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11244: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"
+    // InternalPerspectiveDsl.g:11253: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 {
+            // InternalPerspectiveDsl.g:11257:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11258: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"
+    // InternalPerspectiveDsl.g:11264: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 {
+            // InternalPerspectiveDsl.g:11268:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11269:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:11269:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11270:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11271:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11271: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"
+    // InternalPerspectiveDsl.g:11280: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 {
+            // InternalPerspectiveDsl.g:11284:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11285:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_82);
+            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"
+    // InternalPerspectiveDsl.g:11292: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 {
+            // InternalPerspectiveDsl.g:11296:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11297:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:11297:1: ( () )
+            // InternalPerspectiveDsl.g:11298:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11299:2: ()
+            // InternalPerspectiveDsl.g:11299: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"
+    // InternalPerspectiveDsl.g:11307: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 {
+            // InternalPerspectiveDsl.g:11311:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11312: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"
+    // InternalPerspectiveDsl.g:11318: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 {
+            // InternalPerspectiveDsl.g:11322:1: ( ( 'as' ) )
+            // InternalPerspectiveDsl.g:11323:1: ( 'as' )
+            {
+            // InternalPerspectiveDsl.g:11323:1: ( 'as' )
+            // InternalPerspectiveDsl.g:11324:2: 'as'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
+            }
+            match(input,97,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"
+    // InternalPerspectiveDsl.g:11334: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 {
+            // InternalPerspectiveDsl.g:11338:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
+            // InternalPerspectiveDsl.g:11339:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
+            {
+            pushFollow(FOLLOW_84);
+            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"
+    // InternalPerspectiveDsl.g:11346:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
+    public final void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:11350:1: ( ( ruleXMemberFeatureCall ) )
+            // InternalPerspectiveDsl.g:11351:1: ( ruleXMemberFeatureCall )
+            {
+            // InternalPerspectiveDsl.g:11351:1: ( ruleXMemberFeatureCall )
+            // InternalPerspectiveDsl.g:11352: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"
+    // InternalPerspectiveDsl.g:11361:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
+    public final void rule__XPostfixOperation__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:11365:1: ( rule__XPostfixOperation__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11366: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"
+    // InternalPerspectiveDsl.g:11372: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 {
+            // InternalPerspectiveDsl.g:11376:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:11377:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:11377:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:11378:2: ( rule__XPostfixOperation__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:11379:2: ( rule__XPostfixOperation__Group_1__0 )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
+
+            if ( (LA79_0==41) ) {
+                int LA79_1 = input.LA(2);
+
+                if ( (synpred136_InternalPerspectiveDsl()) ) {
+                    alt79=1;
+                }
+            }
+            else if ( (LA79_0==42) ) {
+                int LA79_2 = input.LA(2);
+
+                if ( (synpred136_InternalPerspectiveDsl()) ) {
+                    alt79=1;
+                }
+            }
+            switch (alt79) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:11379: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"
+    // InternalPerspectiveDsl.g:11388: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 {
+            // InternalPerspectiveDsl.g:11392:1: ( rule__XPostfixOperation__Group_1__0__Impl )
+            // InternalPerspectiveDsl.g:11393: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"
+    // InternalPerspectiveDsl.g:11399: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 {
+            // InternalPerspectiveDsl.g:11403:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11404:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:11404:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11405:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:11406:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11406: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"
+    // InternalPerspectiveDsl.g:11415: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 {
+            // InternalPerspectiveDsl.g:11419:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:11420:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
+            {
+            pushFollow(FOLLOW_84);
+            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"
+    // InternalPerspectiveDsl.g:11427:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
+    public final void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:11431:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11432:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:11432:1: ( () )
+            // InternalPerspectiveDsl.g:11433:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11434:2: ()
+            // InternalPerspectiveDsl.g:11434: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"
+    // InternalPerspectiveDsl.g:11442: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 {
+            // InternalPerspectiveDsl.g:11446:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:11447: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"
+    // InternalPerspectiveDsl.g:11453: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 {
+            // InternalPerspectiveDsl.g:11457:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11458:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:11458:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:11459:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:11460:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:11460: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"
+    // InternalPerspectiveDsl.g:11469: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 {
+            // InternalPerspectiveDsl.g:11473:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
+            // InternalPerspectiveDsl.g:11474:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalPerspectiveDsl.g:11481:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
+    public final void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:11485:1: ( ( ruleXPrimaryExpression ) )
+            // InternalPerspectiveDsl.g:11486:1: ( ruleXPrimaryExpression )
+            {
+            // InternalPerspectiveDsl.g:11486:1: ( ruleXPrimaryExpression )
+            // InternalPerspectiveDsl.g:11487: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"
+    // InternalPerspectiveDsl.g:11496:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
+    public final void rule__XMemberFeatureCall__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:11500:1: ( rule__XMemberFeatureCall__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11501: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"
+    // InternalPerspectiveDsl.g:11507:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
+    public final void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:11511:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
+            // InternalPerspectiveDsl.g:11512:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            {
+            // InternalPerspectiveDsl.g:11512:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:11513:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); 
+            }
+            // InternalPerspectiveDsl.g:11514:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            loop80:
+            do {
+                int alt80=2;
+                switch ( input.LA(1) ) {
+                case 43:
+                    {
+                    int LA80_2 = input.LA(2);
+
+                    if ( (synpred137_InternalPerspectiveDsl()) ) {
+                        alt80=1;
+                    }
+
+
+                    }
+                    break;
+                case 121:
+                    {
+                    int LA80_3 = input.LA(2);
+
+                    if ( (synpred137_InternalPerspectiveDsl()) ) {
+                        alt80=1;
+                    }
+
+
+                    }
+                    break;
+                case 122:
+                    {
+                    int LA80_4 = input.LA(2);
+
+                    if ( (synpred137_InternalPerspectiveDsl()) ) {
+                        alt80=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt80) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:11514:3: rule__XMemberFeatureCall__Alternatives_1
+            	    {
+            	    pushFollow(FOLLOW_86);
+            	    rule__XMemberFeatureCall__Alternatives_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop80;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:11523: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 {
+            // InternalPerspectiveDsl.g:11527:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:11528:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:11535: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 {
+            // InternalPerspectiveDsl.g:11539:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11540:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:11540:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11541:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11542:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11542: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"
+    // InternalPerspectiveDsl.g:11550: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 {
+            // InternalPerspectiveDsl.g:11554:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:11555: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"
+    // InternalPerspectiveDsl.g:11561: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 {
+            // InternalPerspectiveDsl.g:11565:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11566:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:11566:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:11567:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:11568:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:11568: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"
+    // InternalPerspectiveDsl.g:11577: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 {
+            // InternalPerspectiveDsl.g:11581:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:11582: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"
+    // InternalPerspectiveDsl.g:11588: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 {
+            // InternalPerspectiveDsl.g:11592:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11593:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:11593:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11594:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11595:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:11595: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"
+    // InternalPerspectiveDsl.g:11604: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 {
+            // InternalPerspectiveDsl.g:11608:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
+            // InternalPerspectiveDsl.g:11609:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
+            {
+            pushFollow(FOLLOW_87);
+            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"
+    // InternalPerspectiveDsl.g:11616: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 {
+            // InternalPerspectiveDsl.g:11620:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11621:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:11621:1: ( () )
+            // InternalPerspectiveDsl.g:11622:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11623:2: ()
+            // InternalPerspectiveDsl.g:11623: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"
+    // InternalPerspectiveDsl.g:11631: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 {
+            // InternalPerspectiveDsl.g:11635:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
+            // InternalPerspectiveDsl.g:11636:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
+            {
+            pushFollow(FOLLOW_58);
+            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"
+    // InternalPerspectiveDsl.g:11643: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 {
+            // InternalPerspectiveDsl.g:11647:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11648:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:11648:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11649:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:11650:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalPerspectiveDsl.g:11650: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"
+    // InternalPerspectiveDsl.g:11658: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 {
+            // InternalPerspectiveDsl.g:11662:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
+            // InternalPerspectiveDsl.g:11663:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalPerspectiveDsl.g:11670: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 {
+            // InternalPerspectiveDsl.g:11674:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
+            // InternalPerspectiveDsl.g:11675:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            {
+            // InternalPerspectiveDsl.g:11675:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalPerspectiveDsl.g:11676:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); 
+            }
+            // InternalPerspectiveDsl.g:11677:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalPerspectiveDsl.g:11677: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"
+    // InternalPerspectiveDsl.g:11685: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 {
+            // InternalPerspectiveDsl.g:11689:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
+            // InternalPerspectiveDsl.g:11690: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"
+    // InternalPerspectiveDsl.g:11696: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 {
+            // InternalPerspectiveDsl.g:11700:1: ( ( ruleOpSingleAssign ) )
+            // InternalPerspectiveDsl.g:11701:1: ( ruleOpSingleAssign )
+            {
+            // InternalPerspectiveDsl.g:11701:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:11702: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"
+    // InternalPerspectiveDsl.g:11712: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 {
+            // InternalPerspectiveDsl.g:11716:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:11717:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
+            {
+            pushFollow(FOLLOW_88);
+            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"
+    // InternalPerspectiveDsl.g:11724: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 {
+            // InternalPerspectiveDsl.g:11728:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11729:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:11729:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11730:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:11731:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:11731: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"
+    // InternalPerspectiveDsl.g:11739: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 {
+            // InternalPerspectiveDsl.g:11743:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
+            // InternalPerspectiveDsl.g:11744:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
+            {
+            pushFollow(FOLLOW_88);
+            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"
+    // InternalPerspectiveDsl.g:11751: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 {
+            // InternalPerspectiveDsl.g:11755:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:11756:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:11756:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalPerspectiveDsl.g:11757:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:11758:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            int alt81=2;
+            int LA81_0 = input.LA(1);
+
+            if ( (LA81_0==27) ) {
+                alt81=1;
+            }
+            switch (alt81) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:11758: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"
+    // InternalPerspectiveDsl.g:11766: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 {
+            // InternalPerspectiveDsl.g:11770:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
+            // InternalPerspectiveDsl.g:11771:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
+            {
+            pushFollow(FOLLOW_89);
+            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"
+    // InternalPerspectiveDsl.g:11778: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 {
+            // InternalPerspectiveDsl.g:11782:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
+            // InternalPerspectiveDsl.g:11783:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            {
+            // InternalPerspectiveDsl.g:11783:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalPerspectiveDsl.g:11784:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); 
+            }
+            // InternalPerspectiveDsl.g:11785:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalPerspectiveDsl.g:11785: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"
+    // InternalPerspectiveDsl.g:11793: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 {
+            // InternalPerspectiveDsl.g:11797:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
+            // InternalPerspectiveDsl.g:11798:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
+            {
+            pushFollow(FOLLOW_89);
+            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"
+    // InternalPerspectiveDsl.g:11805: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 {
+            // InternalPerspectiveDsl.g:11809:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
+            // InternalPerspectiveDsl.g:11810:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:11810:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalPerspectiveDsl.g:11811:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); 
+            }
+            // InternalPerspectiveDsl.g:11812:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            int alt82=2;
+            alt82 = dfa82.predict(input);
+            switch (alt82) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:11812: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"
+    // InternalPerspectiveDsl.g:11820: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 {
+            // InternalPerspectiveDsl.g:11824:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
+            // InternalPerspectiveDsl.g:11825: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"
+    // InternalPerspectiveDsl.g:11831: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 {
+            // InternalPerspectiveDsl.g:11835:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
+            // InternalPerspectiveDsl.g:11836:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            {
+            // InternalPerspectiveDsl.g:11836:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalPerspectiveDsl.g:11837:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); 
+            }
+            // InternalPerspectiveDsl.g:11838:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            int alt83=2;
+            alt83 = dfa83.predict(input);
+            switch (alt83) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:11838: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"
+    // InternalPerspectiveDsl.g:11847: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 {
+            // InternalPerspectiveDsl.g:11851:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11852: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"
+    // InternalPerspectiveDsl.g:11858: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 {
+            // InternalPerspectiveDsl.g:11862:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11863:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:11863:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11864:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11865:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11865: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"
+    // InternalPerspectiveDsl.g:11874: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 {
+            // InternalPerspectiveDsl.g:11878:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11879:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalPerspectiveDsl.g:11886: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 {
+            // InternalPerspectiveDsl.g:11890:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11891:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:11891:1: ( () )
+            // InternalPerspectiveDsl.g:11892:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:11893:2: ()
+            // InternalPerspectiveDsl.g:11893: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"
+    // InternalPerspectiveDsl.g:11901: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 {
+            // InternalPerspectiveDsl.g:11905:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11906: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"
+    // InternalPerspectiveDsl.g:11912: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 {
+            // InternalPerspectiveDsl.g:11916:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11917:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:11917:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11918:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:11919:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11919: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"
+    // InternalPerspectiveDsl.g:11928: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 {
+            // InternalPerspectiveDsl.g:11932:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
+            // InternalPerspectiveDsl.g:11933:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:11940: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 {
+            // InternalPerspectiveDsl.g:11944:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:11945:1: ( '<' )
+            {
+            // InternalPerspectiveDsl.g:11945:1: ( '<' )
+            // InternalPerspectiveDsl.g:11946: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"
+    // InternalPerspectiveDsl.g:11955: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 {
+            // InternalPerspectiveDsl.g:11959:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
+            // InternalPerspectiveDsl.g:11960:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:11967: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 {
+            // InternalPerspectiveDsl.g:11971:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:11972:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:11972:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:11973:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:11974:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:11974: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"
+    // InternalPerspectiveDsl.g:11982: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 {
+            // InternalPerspectiveDsl.g:11986:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
+            // InternalPerspectiveDsl.g:11987:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:11994: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 {
+            // InternalPerspectiveDsl.g:11998:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
+            // InternalPerspectiveDsl.g:11999:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            {
+            // InternalPerspectiveDsl.g:11999:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalPerspectiveDsl.g:12000:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); 
+            }
+            // InternalPerspectiveDsl.g:12001:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            loop84:
+            do {
+                int alt84=2;
+                int LA84_0 = input.LA(1);
+
+                if ( (LA84_0==92) ) {
+                    alt84=1;
+                }
+
+
+                switch (alt84) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:12001:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XMemberFeatureCall__Group_1_1_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop84;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:12009: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 {
+            // InternalPerspectiveDsl.g:12013:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
+            // InternalPerspectiveDsl.g:12014: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"
+    // InternalPerspectiveDsl.g:12020: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 {
+            // InternalPerspectiveDsl.g:12024:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:12025:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:12025:1: ( '>' )
+            // InternalPerspectiveDsl.g:12026: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"
+    // InternalPerspectiveDsl.g:12036: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 {
+            // InternalPerspectiveDsl.g:12040:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
+            // InternalPerspectiveDsl.g:12041:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:12048: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 {
+            // InternalPerspectiveDsl.g:12052:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:12053:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:12053:1: ( ',' )
+            // InternalPerspectiveDsl.g:12054:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:12063: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 {
+            // InternalPerspectiveDsl.g:12067:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
+            // InternalPerspectiveDsl.g:12068: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"
+    // InternalPerspectiveDsl.g:12074: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 {
+            // InternalPerspectiveDsl.g:12078:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
+            // InternalPerspectiveDsl.g:12079:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:12079:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalPerspectiveDsl.g:12080:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:12081:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalPerspectiveDsl.g:12081: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"
+    // InternalPerspectiveDsl.g:12090: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 {
+            // InternalPerspectiveDsl.g:12094:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
+            // InternalPerspectiveDsl.g:12095:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
+            {
+            pushFollow(FOLLOW_92);
+            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"
+    // InternalPerspectiveDsl.g:12102: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 {
+            // InternalPerspectiveDsl.g:12106:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
+            // InternalPerspectiveDsl.g:12107:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            {
+            // InternalPerspectiveDsl.g:12107:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalPerspectiveDsl.g:12108:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:12109:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalPerspectiveDsl.g:12109: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"
+    // InternalPerspectiveDsl.g:12117: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 {
+            // InternalPerspectiveDsl.g:12121:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
+            // InternalPerspectiveDsl.g:12122:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
+            {
+            pushFollow(FOLLOW_92);
+            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"
+    // InternalPerspectiveDsl.g:12129: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 {
+            // InternalPerspectiveDsl.g:12133:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
+            // InternalPerspectiveDsl.g:12134:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            {
+            // InternalPerspectiveDsl.g:12134:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalPerspectiveDsl.g:12135:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:12136:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            int alt85=2;
+            int LA85_0 = input.LA(1);
+
+            if ( ((LA85_0>=RULE_ID && LA85_0<=RULE_DECIMAL)||LA85_0==27||LA85_0==31||(LA85_0>=34 && LA85_0<=35)||LA85_0==40||(LA85_0>=45 && LA85_0<=50)||LA85_0==54||LA85_0==90||(LA85_0>=94 && LA85_0<=95)||LA85_0==98||LA85_0==100||(LA85_0>=104 && LA85_0<=112)||LA85_0==114||LA85_0==123||LA85_0==125) ) {
+                alt85=1;
+            }
+            switch (alt85) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:12136: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"
+    // InternalPerspectiveDsl.g:12144: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 {
+            // InternalPerspectiveDsl.g:12148:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
+            // InternalPerspectiveDsl.g:12149: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"
+    // InternalPerspectiveDsl.g:12155: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 {
+            // InternalPerspectiveDsl.g:12159:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:12160:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:12160:1: ( ')' )
+            // InternalPerspectiveDsl.g:12161:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:12171: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 {
+            // InternalPerspectiveDsl.g:12175:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
+            // InternalPerspectiveDsl.g:12176:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:12183: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 {
+            // InternalPerspectiveDsl.g:12187:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
+            // InternalPerspectiveDsl.g:12188:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:12188:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:12189:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:12190:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalPerspectiveDsl.g:12190: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"
+    // InternalPerspectiveDsl.g:12198: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 {
+            // InternalPerspectiveDsl.g:12202:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:12203: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"
+    // InternalPerspectiveDsl.g:12209: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 {
+            // InternalPerspectiveDsl.g:12213:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:12214:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:12214:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:12215: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()); 
+            }
+            // InternalPerspectiveDsl.g:12216:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            loop86:
+            do {
+                int alt86=2;
+                int LA86_0 = input.LA(1);
+
+                if ( (LA86_0==92) ) {
+                    alt86=1;
+                }
+
+
+                switch (alt86) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:12216:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop86;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:12225: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 {
+            // InternalPerspectiveDsl.g:12229:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
+            // InternalPerspectiveDsl.g:12230:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:12237: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 {
+            // InternalPerspectiveDsl.g:12241:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:12242:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:12242:1: ( ',' )
+            // InternalPerspectiveDsl.g:12243:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:12252: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 {
+            // InternalPerspectiveDsl.g:12256:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:12257: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"
+    // InternalPerspectiveDsl.g:12263: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 {
+            // InternalPerspectiveDsl.g:12267:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:12268:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:12268:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:12269: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()); 
+            }
+            // InternalPerspectiveDsl.g:12270:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:12270: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"
+    // InternalPerspectiveDsl.g:12279: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 {
+            // InternalPerspectiveDsl.g:12283:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:12284:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
+            {
+            pushFollow(FOLLOW_56);
+            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"
+    // InternalPerspectiveDsl.g:12291:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XSetLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12295:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12296:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:12296:1: ( () )
+            // InternalPerspectiveDsl.g:12297:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:12298:2: ()
+            // InternalPerspectiveDsl.g:12298: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"
+    // InternalPerspectiveDsl.g:12306: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 {
+            // InternalPerspectiveDsl.g:12310:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
+            // InternalPerspectiveDsl.g:12311: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"
+    // InternalPerspectiveDsl.g:12318:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
+    public final void rule__XSetLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12322:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:12323:1: ( '#' )
+            {
+            // InternalPerspectiveDsl.g:12323:1: ( '#' )
+            // InternalPerspectiveDsl.g:12324:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
+            }
+            match(input,94,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"
+    // InternalPerspectiveDsl.g:12333: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 {
+            // InternalPerspectiveDsl.g:12337:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
+            // InternalPerspectiveDsl.g:12338:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalPerspectiveDsl.g:12345:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
+    public final void rule__XSetLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12349:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:12350:1: ( '{' )
+            {
+            // InternalPerspectiveDsl.g:12350:1: ( '{' )
+            // InternalPerspectiveDsl.g:12351:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+            match(input,54,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"
+    // InternalPerspectiveDsl.g:12360: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 {
+            // InternalPerspectiveDsl.g:12364:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
+            // InternalPerspectiveDsl.g:12365:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalPerspectiveDsl.g:12372: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 {
+            // InternalPerspectiveDsl.g:12376:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:12377:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:12377:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:12378:2: ( rule__XSetLiteral__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:12379:2: ( rule__XSetLiteral__Group_3__0 )?
+            int alt87=2;
+            int LA87_0 = input.LA(1);
+
+            if ( ((LA87_0>=RULE_ID && LA87_0<=RULE_DECIMAL)||LA87_0==27||(LA87_0>=34 && LA87_0<=35)||LA87_0==40||(LA87_0>=45 && LA87_0<=50)||LA87_0==54||LA87_0==90||(LA87_0>=94 && LA87_0<=95)||LA87_0==98||LA87_0==100||(LA87_0>=104 && LA87_0<=112)||LA87_0==114||LA87_0==125) ) {
+                alt87=1;
+            }
+            switch (alt87) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:12379: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"
+    // InternalPerspectiveDsl.g:12387:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
+    public final void rule__XSetLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12391:1: ( rule__XSetLiteral__Group__4__Impl )
+            // InternalPerspectiveDsl.g:12392: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"
+    // InternalPerspectiveDsl.g:12398:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
+    public final void rule__XSetLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12402:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:12403:1: ( '}' )
+            {
+            // InternalPerspectiveDsl.g:12403:1: ( '}' )
+            // InternalPerspectiveDsl.g:12404:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
+            }
+            match(input,55,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"
+    // InternalPerspectiveDsl.g:12414: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 {
+            // InternalPerspectiveDsl.g:12418:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
+            // InternalPerspectiveDsl.g:12419:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:12426: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 {
+            // InternalPerspectiveDsl.g:12430:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:12431:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            {
+            // InternalPerspectiveDsl.g:12431:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:12432:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:12433:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:12433: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"
+    // InternalPerspectiveDsl.g:12441: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 {
+            // InternalPerspectiveDsl.g:12445:1: ( rule__XSetLiteral__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:12446: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"
+    // InternalPerspectiveDsl.g:12452: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 {
+            // InternalPerspectiveDsl.g:12456:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
+            // InternalPerspectiveDsl.g:12457:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:12457:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:12458:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:12459:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            loop88:
+            do {
+                int alt88=2;
+                int LA88_0 = input.LA(1);
+
+                if ( (LA88_0==92) ) {
+                    alt88=1;
+                }
+
+
+                switch (alt88) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:12459:3: rule__XSetLiteral__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XSetLiteral__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop88;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:12468: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 {
+            // InternalPerspectiveDsl.g:12472:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:12473:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:12480:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12484:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:12485:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:12485:1: ( ',' )
+            // InternalPerspectiveDsl.g:12486:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:12495: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 {
+            // InternalPerspectiveDsl.g:12499:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:12500: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"
+    // InternalPerspectiveDsl.g:12506: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 {
+            // InternalPerspectiveDsl.g:12510:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:12511:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:12511:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:12512:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:12513:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:12513: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"
+    // InternalPerspectiveDsl.g:12522: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 {
+            // InternalPerspectiveDsl.g:12526:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:12527:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
+            {
+            pushFollow(FOLLOW_56);
+            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"
+    // InternalPerspectiveDsl.g:12534:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XListLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12538:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12539:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:12539:1: ( () )
+            // InternalPerspectiveDsl.g:12540:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:12541:2: ()
+            // InternalPerspectiveDsl.g:12541: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"
+    // InternalPerspectiveDsl.g:12549: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 {
+            // InternalPerspectiveDsl.g:12553:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
+            // InternalPerspectiveDsl.g:12554:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalPerspectiveDsl.g:12561:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
+    public final void rule__XListLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12565:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:12566:1: ( '#' )
+            {
+            // InternalPerspectiveDsl.g:12566:1: ( '#' )
+            // InternalPerspectiveDsl.g:12567:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
+            }
+            match(input,94,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"
+    // InternalPerspectiveDsl.g:12576: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 {
+            // InternalPerspectiveDsl.g:12580:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
+            // InternalPerspectiveDsl.g:12581:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalPerspectiveDsl.g:12588:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
+    public final void rule__XListLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12592:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:12593:1: ( '[' )
+            {
+            // InternalPerspectiveDsl.g:12593:1: ( '[' )
+            // InternalPerspectiveDsl.g:12594:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
+            }
+            match(input,95,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"
+    // InternalPerspectiveDsl.g:12603: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 {
+            // InternalPerspectiveDsl.g:12607:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
+            // InternalPerspectiveDsl.g:12608:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalPerspectiveDsl.g:12615: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 {
+            // InternalPerspectiveDsl.g:12619:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:12620:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:12620:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:12621:2: ( rule__XListLiteral__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:12622:2: ( rule__XListLiteral__Group_3__0 )?
+            int alt89=2;
+            int LA89_0 = input.LA(1);
+
+            if ( ((LA89_0>=RULE_ID && LA89_0<=RULE_DECIMAL)||LA89_0==27||(LA89_0>=34 && LA89_0<=35)||LA89_0==40||(LA89_0>=45 && LA89_0<=50)||LA89_0==54||LA89_0==90||(LA89_0>=94 && LA89_0<=95)||LA89_0==98||LA89_0==100||(LA89_0>=104 && LA89_0<=112)||LA89_0==114||LA89_0==125) ) {
+                alt89=1;
+            }
+            switch (alt89) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:12622: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"
+    // InternalPerspectiveDsl.g:12630:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
+    public final void rule__XListLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12634:1: ( rule__XListLiteral__Group__4__Impl )
+            // InternalPerspectiveDsl.g:12635: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"
+    // InternalPerspectiveDsl.g:12641:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
+    public final void rule__XListLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12645:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:12646:1: ( ']' )
+            {
+            // InternalPerspectiveDsl.g:12646:1: ( ']' )
+            // InternalPerspectiveDsl.g:12647:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
+            }
+            match(input,93,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"
+    // InternalPerspectiveDsl.g:12657: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 {
+            // InternalPerspectiveDsl.g:12661:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
+            // InternalPerspectiveDsl.g:12662:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:12669: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 {
+            // InternalPerspectiveDsl.g:12673:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:12674:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            {
+            // InternalPerspectiveDsl.g:12674:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:12675:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:12676:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:12676: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"
+    // InternalPerspectiveDsl.g:12684: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 {
+            // InternalPerspectiveDsl.g:12688:1: ( rule__XListLiteral__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:12689: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"
+    // InternalPerspectiveDsl.g:12695: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 {
+            // InternalPerspectiveDsl.g:12699:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
+            // InternalPerspectiveDsl.g:12700:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:12700:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:12701:2: ( rule__XListLiteral__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:12702:2: ( rule__XListLiteral__Group_3_1__0 )*
+            loop90:
+            do {
+                int alt90=2;
+                int LA90_0 = input.LA(1);
+
+                if ( (LA90_0==92) ) {
+                    alt90=1;
+                }
+
+
+                switch (alt90) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:12702:3: rule__XListLiteral__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XListLiteral__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop90;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:12711: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 {
+            // InternalPerspectiveDsl.g:12715:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:12716:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:12723:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12727:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:12728:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:12728:1: ( ',' )
+            // InternalPerspectiveDsl.g:12729:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:12738: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 {
+            // InternalPerspectiveDsl.g:12742:1: ( rule__XListLiteral__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:12743: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"
+    // InternalPerspectiveDsl.g:12749: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 {
+            // InternalPerspectiveDsl.g:12753:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:12754:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:12754:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:12755:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:12756:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:12756: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"
+    // InternalPerspectiveDsl.g:12765: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 {
+            // InternalPerspectiveDsl.g:12769:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
+            // InternalPerspectiveDsl.g:12770:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
+            {
+            pushFollow(FOLLOW_94);
+            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"
+    // InternalPerspectiveDsl.g:12777: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 {
+            // InternalPerspectiveDsl.g:12781:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12782:1: ( ( rule__XClosure__Group_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:12782:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:12783:2: ( rule__XClosure__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_0()); 
+            }
+            // InternalPerspectiveDsl.g:12784:2: ( rule__XClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:12784: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"
+    // InternalPerspectiveDsl.g:12792: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 {
+            // InternalPerspectiveDsl.g:12796:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
+            // InternalPerspectiveDsl.g:12797:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
+            {
+            pushFollow(FOLLOW_94);
+            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"
+    // InternalPerspectiveDsl.g:12804: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 {
+            // InternalPerspectiveDsl.g:12808:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:12809:1: ( ( rule__XClosure__Group_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:12809:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:12810:2: ( rule__XClosure__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:12811:2: ( rule__XClosure__Group_1__0 )?
+            int alt91=2;
+            alt91 = dfa91.predict(input);
+            switch (alt91) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:12811: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"
+    // InternalPerspectiveDsl.g:12819: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 {
+            // InternalPerspectiveDsl.g:12823:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
+            // InternalPerspectiveDsl.g:12824:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
+            {
+            pushFollow(FOLLOW_95);
+            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"
+    // InternalPerspectiveDsl.g:12831:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
+    public final void rule__XClosure__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12835:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:12836:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:12836:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:12837:2: ( rule__XClosure__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:12838:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:12838: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"
+    // InternalPerspectiveDsl.g:12846:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
+    public final void rule__XClosure__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12850:1: ( rule__XClosure__Group__3__Impl )
+            // InternalPerspectiveDsl.g:12851: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"
+    // InternalPerspectiveDsl.g:12857:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
+    public final void rule__XClosure__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12861:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:12862:1: ( ']' )
+            {
+            // InternalPerspectiveDsl.g:12862:1: ( ']' )
+            // InternalPerspectiveDsl.g:12863:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
+            }
+            match(input,93,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"
+    // InternalPerspectiveDsl.g:12873: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 {
+            // InternalPerspectiveDsl.g:12877:1: ( rule__XClosure__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:12878: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"
+    // InternalPerspectiveDsl.g:12884: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 {
+            // InternalPerspectiveDsl.g:12888:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12889:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:12889:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:12890:2: ( rule__XClosure__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:12891:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:12891: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"
+    // InternalPerspectiveDsl.g:12900: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 {
+            // InternalPerspectiveDsl.g:12904:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:12905:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalPerspectiveDsl.g:12912:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12916:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12917:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:12917:1: ( () )
+            // InternalPerspectiveDsl.g:12918:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:12919:2: ()
+            // InternalPerspectiveDsl.g:12919: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"
+    // InternalPerspectiveDsl.g:12927: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 {
+            // InternalPerspectiveDsl.g:12931:1: ( rule__XClosure__Group_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:12932: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"
+    // InternalPerspectiveDsl.g:12938:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
+    public final void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:12942:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:12943:1: ( '[' )
+            {
+            // InternalPerspectiveDsl.g:12943:1: ( '[' )
+            // InternalPerspectiveDsl.g:12944:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
+            }
+            match(input,95,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"
+    // InternalPerspectiveDsl.g:12954: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 {
+            // InternalPerspectiveDsl.g:12958:1: ( rule__XClosure__Group_1__0__Impl )
+            // InternalPerspectiveDsl.g:12959: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"
+    // InternalPerspectiveDsl.g:12965: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 {
+            // InternalPerspectiveDsl.g:12969:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12970:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:12970:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:12971:2: ( rule__XClosure__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:12972:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:12972: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"
+    // InternalPerspectiveDsl.g:12981: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 {
+            // InternalPerspectiveDsl.g:12985:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:12986:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
+            {
+            pushFollow(FOLLOW_96);
+            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"
+    // InternalPerspectiveDsl.g:12993: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 {
+            // InternalPerspectiveDsl.g:12997:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
+            // InternalPerspectiveDsl.g:12998:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            {
+            // InternalPerspectiveDsl.g:12998:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalPerspectiveDsl.g:12999:2: ( rule__XClosure__Group_1_0_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:13000:2: ( rule__XClosure__Group_1_0_0__0 )?
+            int alt92=2;
+            int LA92_0 = input.LA(1);
+
+            if ( (LA92_0==RULE_ID||LA92_0==31||LA92_0==90) ) {
+                alt92=1;
+            }
+            switch (alt92) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:13000: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"
+    // InternalPerspectiveDsl.g:13008: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 {
+            // InternalPerspectiveDsl.g:13012:1: ( rule__XClosure__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:13013: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"
+    // InternalPerspectiveDsl.g:13019: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 {
+            // InternalPerspectiveDsl.g:13023:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:13024:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:13024:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:13025:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:13026:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:13026: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"
+    // InternalPerspectiveDsl.g:13035: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 {
+            // InternalPerspectiveDsl.g:13039:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:13040:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:13047: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 {
+            // InternalPerspectiveDsl.g:13051:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:13052:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            {
+            // InternalPerspectiveDsl.g:13052:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:13053:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:13054:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalPerspectiveDsl.g:13054: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"
+    // InternalPerspectiveDsl.g:13062: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 {
+            // InternalPerspectiveDsl.g:13066:1: ( rule__XClosure__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:13067: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"
+    // InternalPerspectiveDsl.g:13073: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 {
+            // InternalPerspectiveDsl.g:13077:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13078:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:13078:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalPerspectiveDsl.g:13079:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:13080:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            loop93:
+            do {
+                int alt93=2;
+                int LA93_0 = input.LA(1);
+
+                if ( (LA93_0==92) ) {
+                    alt93=1;
+                }
+
+
+                switch (alt93) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:13080:3: rule__XClosure__Group_1_0_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XClosure__Group_1_0_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop93;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:13089: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 {
+            // InternalPerspectiveDsl.g:13093:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
+            // InternalPerspectiveDsl.g:13094:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:13101: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 {
+            // InternalPerspectiveDsl.g:13105:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:13106:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:13106:1: ( ',' )
+            // InternalPerspectiveDsl.g:13107:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:13116: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 {
+            // InternalPerspectiveDsl.g:13120:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:13121: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"
+    // InternalPerspectiveDsl.g:13127: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 {
+            // InternalPerspectiveDsl.g:13131:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:13132:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:13132:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalPerspectiveDsl.g:13133:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:13134:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalPerspectiveDsl.g:13134: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"
+    // InternalPerspectiveDsl.g:13143: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 {
+            // InternalPerspectiveDsl.g:13147:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
+            // InternalPerspectiveDsl.g:13148:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
+            {
+            pushFollow(FOLLOW_94);
+            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"
+    // InternalPerspectiveDsl.g:13155:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
+    public final void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13159:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13160:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:13160:1: ( () )
+            // InternalPerspectiveDsl.g:13161:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:13162:2: ()
+            // InternalPerspectiveDsl.g:13162: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"
+    // InternalPerspectiveDsl.g:13170:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
+    public final void rule__XExpressionInClosure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13174:1: ( rule__XExpressionInClosure__Group__1__Impl )
+            // InternalPerspectiveDsl.g:13175: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"
+    // InternalPerspectiveDsl.g:13181: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 {
+            // InternalPerspectiveDsl.g:13185:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13186:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:13186:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:13187:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:13188:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            loop94:
+            do {
+                int alt94=2;
+                int LA94_0 = input.LA(1);
+
+                if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_DECIMAL)||LA94_0==27||(LA94_0>=34 && LA94_0<=35)||LA94_0==40||(LA94_0>=44 && LA94_0<=50)||LA94_0==54||LA94_0==90||(LA94_0>=94 && LA94_0<=95)||LA94_0==98||LA94_0==100||(LA94_0>=104 && LA94_0<=112)||LA94_0==114||(LA94_0>=124 && LA94_0<=125)) ) {
+                    alt94=1;
+                }
+
+
+                switch (alt94) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:13188:3: rule__XExpressionInClosure__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_97);
+            	    rule__XExpressionInClosure__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop94;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:13197: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 {
+            // InternalPerspectiveDsl.g:13201:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
+            // InternalPerspectiveDsl.g:13202:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
+            {
+            pushFollow(FOLLOW_45);
+            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"
+    // InternalPerspectiveDsl.g:13209: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 {
+            // InternalPerspectiveDsl.g:13213:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
+            // InternalPerspectiveDsl.g:13214:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:13214:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalPerspectiveDsl.g:13215:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:13216:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalPerspectiveDsl.g:13216: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"
+    // InternalPerspectiveDsl.g:13224: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 {
+            // InternalPerspectiveDsl.g:13228:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:13229: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"
+    // InternalPerspectiveDsl.g:13235:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
+    public final void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13239:1: ( ( ( ';' )? ) )
+            // InternalPerspectiveDsl.g:13240:1: ( ( ';' )? )
+            {
+            // InternalPerspectiveDsl.g:13240:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:13241:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:13242:2: ( ';' )?
+            int alt95=2;
+            int LA95_0 = input.LA(1);
+
+            if ( (LA95_0==88) ) {
+                alt95=1;
+            }
+            switch (alt95) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:13242:3: ';'
+                    {
+                    match(input,88,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"
+    // InternalPerspectiveDsl.g:13251: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 {
+            // InternalPerspectiveDsl.g:13255:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
+            // InternalPerspectiveDsl.g:13256:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:13263: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 {
+            // InternalPerspectiveDsl.g:13267:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:13268:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:13268:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:13269:2: ( rule__XShortClosure__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0()); 
+            }
+            // InternalPerspectiveDsl.g:13270:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:13270: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"
+    // InternalPerspectiveDsl.g:13278:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
+    public final void rule__XShortClosure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13282:1: ( rule__XShortClosure__Group__1__Impl )
+            // InternalPerspectiveDsl.g:13283: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"
+    // InternalPerspectiveDsl.g:13289:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
+    public final void rule__XShortClosure__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13293:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:13294:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:13294:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:13295:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:13296:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:13296: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"
+    // InternalPerspectiveDsl.g:13305: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 {
+            // InternalPerspectiveDsl.g:13309:1: ( rule__XShortClosure__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:13310: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"
+    // InternalPerspectiveDsl.g:13316: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 {
+            // InternalPerspectiveDsl.g:13320:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:13321:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:13321:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:13322:2: ( rule__XShortClosure__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:13323:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:13323: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"
+    // InternalPerspectiveDsl.g:13332: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 {
+            // InternalPerspectiveDsl.g:13336:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:13337:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
+            {
+            pushFollow(FOLLOW_96);
+            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"
+    // InternalPerspectiveDsl.g:13344:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13348:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13349:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:13349:1: ( () )
+            // InternalPerspectiveDsl.g:13350:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:13351:2: ()
+            // InternalPerspectiveDsl.g:13351: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"
+    // InternalPerspectiveDsl.g:13359: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 {
+            // InternalPerspectiveDsl.g:13363:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
+            // InternalPerspectiveDsl.g:13364:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
+            {
+            pushFollow(FOLLOW_96);
+            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"
+    // InternalPerspectiveDsl.g:13371: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 {
+            // InternalPerspectiveDsl.g:13375:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:13376:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:13376:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalPerspectiveDsl.g:13377:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:13378:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            int alt96=2;
+            int LA96_0 = input.LA(1);
+
+            if ( (LA96_0==RULE_ID||LA96_0==31||LA96_0==90) ) {
+                alt96=1;
+            }
+            switch (alt96) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:13378: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"
+    // InternalPerspectiveDsl.g:13386: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 {
+            // InternalPerspectiveDsl.g:13390:1: ( rule__XShortClosure__Group_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:13391: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"
+    // InternalPerspectiveDsl.g:13397: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 {
+            // InternalPerspectiveDsl.g:13401:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
+            // InternalPerspectiveDsl.g:13402:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            {
+            // InternalPerspectiveDsl.g:13402:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalPerspectiveDsl.g:13403:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); 
+            }
+            // InternalPerspectiveDsl.g:13404:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalPerspectiveDsl.g:13404: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"
+    // InternalPerspectiveDsl.g:13413: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 {
+            // InternalPerspectiveDsl.g:13417:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
+            // InternalPerspectiveDsl.g:13418:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:13425: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 {
+            // InternalPerspectiveDsl.g:13429:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:13430:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:13430:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalPerspectiveDsl.g:13431:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:13432:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalPerspectiveDsl.g:13432: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"
+    // InternalPerspectiveDsl.g:13440: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 {
+            // InternalPerspectiveDsl.g:13444:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:13445: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"
+    // InternalPerspectiveDsl.g:13451: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 {
+            // InternalPerspectiveDsl.g:13455:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13456:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:13456:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:13457:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:13458:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            loop97:
+            do {
+                int alt97=2;
+                int LA97_0 = input.LA(1);
+
+                if ( (LA97_0==92) ) {
+                    alt97=1;
+                }
+
+
+                switch (alt97) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:13458:3: rule__XShortClosure__Group_0_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XShortClosure__Group_0_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop97;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:13467: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 {
+            // InternalPerspectiveDsl.g:13471:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
+            // InternalPerspectiveDsl.g:13472:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:13479: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 {
+            // InternalPerspectiveDsl.g:13483:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:13484:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:13484:1: ( ',' )
+            // InternalPerspectiveDsl.g:13485:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:13494: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 {
+            // InternalPerspectiveDsl.g:13498:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:13499: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"
+    // InternalPerspectiveDsl.g:13505: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 {
+            // InternalPerspectiveDsl.g:13509:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:13510:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:13510:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:13511:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:13512:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalPerspectiveDsl.g:13512: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"
+    // InternalPerspectiveDsl.g:13521: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 {
+            // InternalPerspectiveDsl.g:13525:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
+            // InternalPerspectiveDsl.g:13526:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:13533:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
+    public final void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13537:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:13538:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:13538:1: ( '(' )
+            // InternalPerspectiveDsl.g:13539:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:13548: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 {
+            // InternalPerspectiveDsl.g:13552:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
+            // InternalPerspectiveDsl.g:13553:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalPerspectiveDsl.g:13560:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
+    public final void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13564:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:13565:1: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:13565:1: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:13566: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"
+    // InternalPerspectiveDsl.g:13575:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
+    public final void rule__XParenthesizedExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13579:1: ( rule__XParenthesizedExpression__Group__2__Impl )
+            // InternalPerspectiveDsl.g:13580: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"
+    // InternalPerspectiveDsl.g:13586:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13590:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:13591:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:13591:1: ( ')' )
+            // InternalPerspectiveDsl.g:13592:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:13602: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 {
+            // InternalPerspectiveDsl.g:13606:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
+            // InternalPerspectiveDsl.g:13607:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalPerspectiveDsl.g:13614:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XIfExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13618:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13619:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:13619:1: ( () )
+            // InternalPerspectiveDsl.g:13620:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:13621:2: ()
+            // InternalPerspectiveDsl.g:13621: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"
+    // InternalPerspectiveDsl.g:13629: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 {
+            // InternalPerspectiveDsl.g:13633:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
+            // InternalPerspectiveDsl.g:13634:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalPerspectiveDsl.g:13641:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
+    public final void rule__XIfExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13645:1: ( ( 'if' ) )
+            // InternalPerspectiveDsl.g:13646:1: ( 'if' )
+            {
+            // InternalPerspectiveDsl.g:13646:1: ( 'if' )
+            // InternalPerspectiveDsl.g:13647:2: 'if'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
+            }
+            match(input,98,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"
+    // InternalPerspectiveDsl.g:13656: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 {
+            // InternalPerspectiveDsl.g:13660:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
+            // InternalPerspectiveDsl.g:13661:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:13668:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XIfExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13672:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:13673:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:13673:1: ( '(' )
+            // InternalPerspectiveDsl.g:13674:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:13683: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 {
+            // InternalPerspectiveDsl.g:13687:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
+            // InternalPerspectiveDsl.g:13688:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalPerspectiveDsl.g:13695:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
+    public final void rule__XIfExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13699:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:13700:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            {
+            // InternalPerspectiveDsl.g:13700:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalPerspectiveDsl.g:13701:2: ( rule__XIfExpression__IfAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); 
+            }
+            // InternalPerspectiveDsl.g:13702:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalPerspectiveDsl.g:13702: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"
+    // InternalPerspectiveDsl.g:13710: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 {
+            // InternalPerspectiveDsl.g:13714:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
+            // InternalPerspectiveDsl.g:13715:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:13722:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
+    public final void rule__XIfExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13726:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:13727:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:13727:1: ( ')' )
+            // InternalPerspectiveDsl.g:13728:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:13737: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 {
+            // InternalPerspectiveDsl.g:13741:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
+            // InternalPerspectiveDsl.g:13742:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalPerspectiveDsl.g:13749:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
+    public final void rule__XIfExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13753:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:13754:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            {
+            // InternalPerspectiveDsl.g:13754:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalPerspectiveDsl.g:13755:2: ( rule__XIfExpression__ThenAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); 
+            }
+            // InternalPerspectiveDsl.g:13756:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalPerspectiveDsl.g:13756: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"
+    // InternalPerspectiveDsl.g:13764:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
+    public final void rule__XIfExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13768:1: ( rule__XIfExpression__Group__6__Impl )
+            // InternalPerspectiveDsl.g:13769: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"
+    // InternalPerspectiveDsl.g:13775: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 {
+            // InternalPerspectiveDsl.g:13779:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
+            // InternalPerspectiveDsl.g:13780:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            {
+            // InternalPerspectiveDsl.g:13780:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalPerspectiveDsl.g:13781:2: ( rule__XIfExpression__Group_6__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup_6()); 
+            }
+            // InternalPerspectiveDsl.g:13782:2: ( rule__XIfExpression__Group_6__0 )?
+            int alt98=2;
+            int LA98_0 = input.LA(1);
+
+            if ( (LA98_0==99) ) {
+                int LA98_1 = input.LA(2);
+
+                if ( (synpred155_InternalPerspectiveDsl()) ) {
+                    alt98=1;
+                }
+            }
+            switch (alt98) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:13782: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"
+    // InternalPerspectiveDsl.g:13791: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 {
+            // InternalPerspectiveDsl.g:13795:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
+            // InternalPerspectiveDsl.g:13796:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:13803:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
+    public final void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13807:1: ( ( ( 'else' ) ) )
+            // InternalPerspectiveDsl.g:13808:1: ( ( 'else' ) )
+            {
+            // InternalPerspectiveDsl.g:13808:1: ( ( 'else' ) )
+            // InternalPerspectiveDsl.g:13809:2: ( 'else' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); 
+            }
+            // InternalPerspectiveDsl.g:13810:2: ( 'else' )
+            // InternalPerspectiveDsl.g:13810:3: 'else'
+            {
+            match(input,99,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"
+    // InternalPerspectiveDsl.g:13818: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 {
+            // InternalPerspectiveDsl.g:13822:1: ( rule__XIfExpression__Group_6__1__Impl )
+            // InternalPerspectiveDsl.g:13823: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"
+    // InternalPerspectiveDsl.g:13829: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 {
+            // InternalPerspectiveDsl.g:13833:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
+            // InternalPerspectiveDsl.g:13834:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            {
+            // InternalPerspectiveDsl.g:13834:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalPerspectiveDsl.g:13835:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); 
+            }
+            // InternalPerspectiveDsl.g:13836:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalPerspectiveDsl.g:13836: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"
+    // InternalPerspectiveDsl.g:13845: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 {
+            // InternalPerspectiveDsl.g:13849:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
+            // InternalPerspectiveDsl.g:13850:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
+            {
+            pushFollow(FOLLOW_101);
+            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"
+    // InternalPerspectiveDsl.g:13857:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13861:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13862:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:13862:1: ( () )
+            // InternalPerspectiveDsl.g:13863:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:13864:2: ()
+            // InternalPerspectiveDsl.g:13864: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"
+    // InternalPerspectiveDsl.g:13872: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 {
+            // InternalPerspectiveDsl.g:13876:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
+            // InternalPerspectiveDsl.g:13877:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
+            {
+            pushFollow(FOLLOW_102);
+            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"
+    // InternalPerspectiveDsl.g:13884:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
+    public final void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13888:1: ( ( 'switch' ) )
+            // InternalPerspectiveDsl.g:13889:1: ( 'switch' )
+            {
+            // InternalPerspectiveDsl.g:13889:1: ( 'switch' )
+            // InternalPerspectiveDsl.g:13890:2: 'switch'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
+            }
+            match(input,100,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"
+    // InternalPerspectiveDsl.g:13899: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 {
+            // InternalPerspectiveDsl.g:13903:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
+            // InternalPerspectiveDsl.g:13904: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"
+    // InternalPerspectiveDsl.g:13911:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
+    public final void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13915:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
+            // InternalPerspectiveDsl.g:13916:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            {
+            // InternalPerspectiveDsl.g:13916:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:13917:2: ( rule__XSwitchExpression__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); 
+            }
+            // InternalPerspectiveDsl.g:13918:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalPerspectiveDsl.g:13918: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"
+    // InternalPerspectiveDsl.g:13926: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 {
+            // InternalPerspectiveDsl.g:13930:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
+            // InternalPerspectiveDsl.g:13931:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
+            {
+            pushFollow(FOLLOW_103);
+            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"
+    // InternalPerspectiveDsl.g:13938:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
+    public final void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13942:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:13943:1: ( '{' )
+            {
+            // InternalPerspectiveDsl.g:13943:1: ( '{' )
+            // InternalPerspectiveDsl.g:13944:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
+            }
+            match(input,54,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"
+    // InternalPerspectiveDsl.g:13953: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 {
+            // InternalPerspectiveDsl.g:13957:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
+            // InternalPerspectiveDsl.g:13958:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
+            {
+            pushFollow(FOLLOW_103);
+            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"
+    // InternalPerspectiveDsl.g:13965:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
+    public final void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:13969:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
+            // InternalPerspectiveDsl.g:13970:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            {
+            // InternalPerspectiveDsl.g:13970:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalPerspectiveDsl.g:13971:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); 
+            }
+            // InternalPerspectiveDsl.g:13972:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            loop99:
+            do {
+                int alt99=2;
+                int LA99_0 = input.LA(1);
+
+                if ( (LA99_0==RULE_ID||LA99_0==31||LA99_0==90||LA99_0==92||LA99_0==101||LA99_0==103) ) {
+                    alt99=1;
+                }
+
+
+                switch (alt99) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:13972:3: rule__XSwitchExpression__CasesAssignment_4
+            	    {
+            	    pushFollow(FOLLOW_104);
+            	    rule__XSwitchExpression__CasesAssignment_4();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop99;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:13980: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 {
+            // InternalPerspectiveDsl.g:13984:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
+            // InternalPerspectiveDsl.g:13985:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
+            {
+            pushFollow(FOLLOW_103);
+            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"
+    // InternalPerspectiveDsl.g:13992: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 {
+            // InternalPerspectiveDsl.g:13996:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
+            // InternalPerspectiveDsl.g:13997:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            {
+            // InternalPerspectiveDsl.g:13997:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalPerspectiveDsl.g:13998:2: ( rule__XSwitchExpression__Group_5__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); 
+            }
+            // InternalPerspectiveDsl.g:13999:2: ( rule__XSwitchExpression__Group_5__0 )?
+            int alt100=2;
+            int LA100_0 = input.LA(1);
+
+            if ( (LA100_0==102) ) {
+                alt100=1;
+            }
+            switch (alt100) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:13999: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"
+    // InternalPerspectiveDsl.g:14007:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
+    public final void rule__XSwitchExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14011:1: ( rule__XSwitchExpression__Group__6__Impl )
+            // InternalPerspectiveDsl.g:14012: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"
+    // InternalPerspectiveDsl.g:14018:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
+    public final void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14022:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:14023:1: ( '}' )
+            {
+            // InternalPerspectiveDsl.g:14023:1: ( '}' )
+            // InternalPerspectiveDsl.g:14024:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
+            }
+            match(input,55,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"
+    // InternalPerspectiveDsl.g:14034: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 {
+            // InternalPerspectiveDsl.g:14038:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
+            // InternalPerspectiveDsl.g:14039:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:14046: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 {
+            // InternalPerspectiveDsl.g:14050:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14051:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:14051:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14052:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:14053:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:14053: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"
+    // InternalPerspectiveDsl.g:14061: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 {
+            // InternalPerspectiveDsl.g:14065:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
+            // InternalPerspectiveDsl.g:14066:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalPerspectiveDsl.g:14073: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 {
+            // InternalPerspectiveDsl.g:14077:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
+            // InternalPerspectiveDsl.g:14078:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:14078:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalPerspectiveDsl.g:14079:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:14080:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalPerspectiveDsl.g:14080: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"
+    // InternalPerspectiveDsl.g:14088: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 {
+            // InternalPerspectiveDsl.g:14092:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
+            // InternalPerspectiveDsl.g:14093: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"
+    // InternalPerspectiveDsl.g:14099:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
+    public final void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14103:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:14104:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:14104:1: ( ')' )
+            // InternalPerspectiveDsl.g:14105:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:14115: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 {
+            // InternalPerspectiveDsl.g:14119:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:14120: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"
+    // InternalPerspectiveDsl.g:14126: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 {
+            // InternalPerspectiveDsl.g:14130:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14131:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:14131:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14132:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:14133:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalPerspectiveDsl.g:14133: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"
+    // InternalPerspectiveDsl.g:14142: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 {
+            // InternalPerspectiveDsl.g:14146:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
+            // InternalPerspectiveDsl.g:14147:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:14154: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 {
+            // InternalPerspectiveDsl.g:14158:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:14159:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:14159:1: ( '(' )
+            // InternalPerspectiveDsl.g:14160:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:14169: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 {
+            // InternalPerspectiveDsl.g:14173:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
+            // InternalPerspectiveDsl.g:14174:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
+            {
+            pushFollow(FOLLOW_105);
+            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"
+    // InternalPerspectiveDsl.g:14181: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 {
+            // InternalPerspectiveDsl.g:14185:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:14186:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:14186:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:14187:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:14188:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalPerspectiveDsl.g:14188: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"
+    // InternalPerspectiveDsl.g:14196: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 {
+            // InternalPerspectiveDsl.g:14200:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:14201: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"
+    // InternalPerspectiveDsl.g:14207: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 {
+            // InternalPerspectiveDsl.g:14211:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14212:1: ( ':' )
+            {
+            // InternalPerspectiveDsl.g:14212:1: ( ':' )
+            // InternalPerspectiveDsl.g:14213:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
+            }
+            match(input,101,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"
+    // InternalPerspectiveDsl.g:14223: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 {
+            // InternalPerspectiveDsl.g:14227:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
+            // InternalPerspectiveDsl.g:14228:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
+            {
+            pushFollow(FOLLOW_102);
+            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"
+    // InternalPerspectiveDsl.g:14235: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 {
+            // InternalPerspectiveDsl.g:14239:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
+            // InternalPerspectiveDsl.g:14240:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            {
+            // InternalPerspectiveDsl.g:14240:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalPerspectiveDsl.g:14241:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:14242:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            int alt101=2;
+            alt101 = dfa101.predict(input);
+            switch (alt101) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:14242: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"
+    // InternalPerspectiveDsl.g:14250: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 {
+            // InternalPerspectiveDsl.g:14254:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
+            // InternalPerspectiveDsl.g:14255: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"
+    // InternalPerspectiveDsl.g:14261: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 {
+            // InternalPerspectiveDsl.g:14265:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
+            // InternalPerspectiveDsl.g:14266:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:14266:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalPerspectiveDsl.g:14267:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:14268:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalPerspectiveDsl.g:14268: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"
+    // InternalPerspectiveDsl.g:14277: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 {
+            // InternalPerspectiveDsl.g:14281:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:14282: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"
+    // InternalPerspectiveDsl.g:14288: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 {
+            // InternalPerspectiveDsl.g:14292:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14293:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:14293:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14294:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:14295:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalPerspectiveDsl.g:14295: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"
+    // InternalPerspectiveDsl.g:14304: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 {
+            // InternalPerspectiveDsl.g:14308:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
+            // InternalPerspectiveDsl.g:14309:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
+            {
+            pushFollow(FOLLOW_105);
+            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"
+    // InternalPerspectiveDsl.g:14316: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 {
+            // InternalPerspectiveDsl.g:14320:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:14321:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            {
+            // InternalPerspectiveDsl.g:14321:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:14322:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:14323:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalPerspectiveDsl.g:14323: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"
+    // InternalPerspectiveDsl.g:14331: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 {
+            // InternalPerspectiveDsl.g:14335:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:14336: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"
+    // InternalPerspectiveDsl.g:14342: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 {
+            // InternalPerspectiveDsl.g:14346:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14347:1: ( ':' )
+            {
+            // InternalPerspectiveDsl.g:14347:1: ( ':' )
+            // InternalPerspectiveDsl.g:14348:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
+            }
+            match(input,101,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"
+    // InternalPerspectiveDsl.g:14358: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 {
+            // InternalPerspectiveDsl.g:14362:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
+            // InternalPerspectiveDsl.g:14363:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
+            {
+            pushFollow(FOLLOW_105);
+            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"
+    // InternalPerspectiveDsl.g:14370:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
+    public final void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14374:1: ( ( 'default' ) )
+            // InternalPerspectiveDsl.g:14375:1: ( 'default' )
+            {
+            // InternalPerspectiveDsl.g:14375:1: ( 'default' )
+            // InternalPerspectiveDsl.g:14376:2: 'default'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
+            }
+            match(input,102,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"
+    // InternalPerspectiveDsl.g:14385: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 {
+            // InternalPerspectiveDsl.g:14389:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
+            // InternalPerspectiveDsl.g:14390:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:14397:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
+    public final void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14401:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14402:1: ( ':' )
+            {
+            // InternalPerspectiveDsl.g:14402:1: ( ':' )
+            // InternalPerspectiveDsl.g:14403:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
+            }
+            match(input,101,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"
+    // InternalPerspectiveDsl.g:14412: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 {
+            // InternalPerspectiveDsl.g:14416:1: ( rule__XSwitchExpression__Group_5__2__Impl )
+            // InternalPerspectiveDsl.g:14417: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"
+    // InternalPerspectiveDsl.g:14423: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 {
+            // InternalPerspectiveDsl.g:14427:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
+            // InternalPerspectiveDsl.g:14428:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            {
+            // InternalPerspectiveDsl.g:14428:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalPerspectiveDsl.g:14429:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); 
+            }
+            // InternalPerspectiveDsl.g:14430:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalPerspectiveDsl.g:14430: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"
+    // InternalPerspectiveDsl.g:14439: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 {
+            // InternalPerspectiveDsl.g:14443:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
+            // InternalPerspectiveDsl.g:14444:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalPerspectiveDsl.g:14451:1: rule__XCasePart__Group__0__Impl : ( () ) ;
+    public final void rule__XCasePart__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14455:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:14456:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:14456:1: ( () )
+            // InternalPerspectiveDsl.g:14457:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:14458:2: ()
+            // InternalPerspectiveDsl.g:14458: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"
+    // InternalPerspectiveDsl.g:14466: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 {
+            // InternalPerspectiveDsl.g:14470:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
+            // InternalPerspectiveDsl.g:14471:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalPerspectiveDsl.g:14478:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
+    public final void rule__XCasePart__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14482:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
+            // InternalPerspectiveDsl.g:14483:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            {
+            // InternalPerspectiveDsl.g:14483:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalPerspectiveDsl.g:14484:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:14485:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            int alt102=2;
+            int LA102_0 = input.LA(1);
+
+            if ( (LA102_0==RULE_ID||LA102_0==31||LA102_0==90) ) {
+                alt102=1;
+            }
+            switch (alt102) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:14485: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"
+    // InternalPerspectiveDsl.g:14493: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 {
+            // InternalPerspectiveDsl.g:14497:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
+            // InternalPerspectiveDsl.g:14498:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalPerspectiveDsl.g:14505: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 {
+            // InternalPerspectiveDsl.g:14509:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
+            // InternalPerspectiveDsl.g:14510:1: ( ( rule__XCasePart__Group_2__0 )? )
+            {
+            // InternalPerspectiveDsl.g:14510:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalPerspectiveDsl.g:14511:2: ( rule__XCasePart__Group_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup_2()); 
+            }
+            // InternalPerspectiveDsl.g:14512:2: ( rule__XCasePart__Group_2__0 )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
+
+            if ( (LA103_0==103) ) {
+                alt103=1;
+            }
+            switch (alt103) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:14512: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"
+    // InternalPerspectiveDsl.g:14520:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
+    public final void rule__XCasePart__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14524:1: ( rule__XCasePart__Group__3__Impl )
+            // InternalPerspectiveDsl.g:14525: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"
+    // InternalPerspectiveDsl.g:14531:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
+    public final void rule__XCasePart__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14535:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
+            // InternalPerspectiveDsl.g:14536:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            {
+            // InternalPerspectiveDsl.g:14536:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:14537:2: ( rule__XCasePart__Alternatives_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getAlternatives_3()); 
+            }
+            // InternalPerspectiveDsl.g:14538:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalPerspectiveDsl.g:14538: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"
+    // InternalPerspectiveDsl.g:14547: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 {
+            // InternalPerspectiveDsl.g:14551:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
+            // InternalPerspectiveDsl.g:14552:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:14559:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
+    public final void rule__XCasePart__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14563:1: ( ( 'case' ) )
+            // InternalPerspectiveDsl.g:14564:1: ( 'case' )
+            {
+            // InternalPerspectiveDsl.g:14564:1: ( 'case' )
+            // InternalPerspectiveDsl.g:14565:2: 'case'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
+            }
+            match(input,103,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"
+    // InternalPerspectiveDsl.g:14574: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 {
+            // InternalPerspectiveDsl.g:14578:1: ( rule__XCasePart__Group_2__1__Impl )
+            // InternalPerspectiveDsl.g:14579: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"
+    // InternalPerspectiveDsl.g:14585: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 {
+            // InternalPerspectiveDsl.g:14589:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
+            // InternalPerspectiveDsl.g:14590:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:14590:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalPerspectiveDsl.g:14591:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:14592:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalPerspectiveDsl.g:14592: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"
+    // InternalPerspectiveDsl.g:14601: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 {
+            // InternalPerspectiveDsl.g:14605:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:14606:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:14613:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
+    public final void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14617:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14618:1: ( ':' )
+            {
+            // InternalPerspectiveDsl.g:14618:1: ( ':' )
+            // InternalPerspectiveDsl.g:14619:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
+            }
+            match(input,101,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"
+    // InternalPerspectiveDsl.g:14628: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 {
+            // InternalPerspectiveDsl.g:14632:1: ( rule__XCasePart__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:14633: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"
+    // InternalPerspectiveDsl.g:14639: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 {
+            // InternalPerspectiveDsl.g:14643:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:14644:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:14644:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:14645:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:14646:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:14646: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"
+    // InternalPerspectiveDsl.g:14655: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 {
+            // InternalPerspectiveDsl.g:14659:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
+            // InternalPerspectiveDsl.g:14660:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:14667: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 {
+            // InternalPerspectiveDsl.g:14671:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14672:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:14672:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:14673:2: ( rule__XForLoopExpression__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); 
+            }
+            // InternalPerspectiveDsl.g:14674:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:14674: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"
+    // InternalPerspectiveDsl.g:14682: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 {
+            // InternalPerspectiveDsl.g:14686:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
+            // InternalPerspectiveDsl.g:14687:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalPerspectiveDsl.g:14694:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
+    public final void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14698:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:14699:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:14699:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:14700:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:14701:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:14701: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"
+    // InternalPerspectiveDsl.g:14709: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 {
+            // InternalPerspectiveDsl.g:14713:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
+            // InternalPerspectiveDsl.g:14714:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:14721:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14725:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:14726:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:14726:1: ( ')' )
+            // InternalPerspectiveDsl.g:14727:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:14736:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
+    public final void rule__XForLoopExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14740:1: ( rule__XForLoopExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:14741: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"
+    // InternalPerspectiveDsl.g:14747:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
+    public final void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14751:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:14752:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            {
+            // InternalPerspectiveDsl.g:14752:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:14753:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); 
+            }
+            // InternalPerspectiveDsl.g:14754:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:14754: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"
+    // InternalPerspectiveDsl.g:14763: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 {
+            // InternalPerspectiveDsl.g:14767:1: ( rule__XForLoopExpression__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:14768: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"
+    // InternalPerspectiveDsl.g:14774: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 {
+            // InternalPerspectiveDsl.g:14778:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14779:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:14779:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14780:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:14781:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:14781: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"
+    // InternalPerspectiveDsl.g:14790: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 {
+            // InternalPerspectiveDsl.g:14794:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:14795:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
+            {
+            pushFollow(FOLLOW_107);
+            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"
+    // InternalPerspectiveDsl.g:14802:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14806:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:14807:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:14807:1: ( () )
+            // InternalPerspectiveDsl.g:14808:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:14809:2: ()
+            // InternalPerspectiveDsl.g:14809: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"
+    // InternalPerspectiveDsl.g:14817: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 {
+            // InternalPerspectiveDsl.g:14821:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
+            // InternalPerspectiveDsl.g:14822:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalPerspectiveDsl.g:14829: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 {
+            // InternalPerspectiveDsl.g:14833:1: ( ( 'for' ) )
+            // InternalPerspectiveDsl.g:14834:1: ( 'for' )
+            {
+            // InternalPerspectiveDsl.g:14834:1: ( 'for' )
+            // InternalPerspectiveDsl.g:14835:2: 'for'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
+            }
+            match(input,104,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"
+    // InternalPerspectiveDsl.g:14844: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 {
+            // InternalPerspectiveDsl.g:14848:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
+            // InternalPerspectiveDsl.g:14849:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:14856:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
+    public final void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14860:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:14861:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:14861:1: ( '(' )
+            // InternalPerspectiveDsl.g:14862:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:14871: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 {
+            // InternalPerspectiveDsl.g:14875:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
+            // InternalPerspectiveDsl.g:14876:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
+            {
+            pushFollow(FOLLOW_105);
+            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"
+    // InternalPerspectiveDsl.g:14883: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 {
+            // InternalPerspectiveDsl.g:14887:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
+            // InternalPerspectiveDsl.g:14888:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            {
+            // InternalPerspectiveDsl.g:14888:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalPerspectiveDsl.g:14889:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); 
+            }
+            // InternalPerspectiveDsl.g:14890:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalPerspectiveDsl.g:14890: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"
+    // InternalPerspectiveDsl.g:14898: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 {
+            // InternalPerspectiveDsl.g:14902:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
+            // InternalPerspectiveDsl.g:14903: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"
+    // InternalPerspectiveDsl.g:14909:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
+    public final void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14913:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14914:1: ( ':' )
+            {
+            // InternalPerspectiveDsl.g:14914:1: ( ':' )
+            // InternalPerspectiveDsl.g:14915:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
+            }
+            match(input,101,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"
+    // InternalPerspectiveDsl.g:14925: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 {
+            // InternalPerspectiveDsl.g:14929:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
+            // InternalPerspectiveDsl.g:14930:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
+            {
+            pushFollow(FOLLOW_107);
+            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"
+    // InternalPerspectiveDsl.g:14937:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14941:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:14942:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:14942:1: ( () )
+            // InternalPerspectiveDsl.g:14943:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:14944:2: ()
+            // InternalPerspectiveDsl.g:14944: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"
+    // InternalPerspectiveDsl.g:14952: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 {
+            // InternalPerspectiveDsl.g:14956:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
+            // InternalPerspectiveDsl.g:14957:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalPerspectiveDsl.g:14964:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
+    public final void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14968:1: ( ( 'for' ) )
+            // InternalPerspectiveDsl.g:14969:1: ( 'for' )
+            {
+            // InternalPerspectiveDsl.g:14969:1: ( 'for' )
+            // InternalPerspectiveDsl.g:14970:2: 'for'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
+            }
+            match(input,104,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"
+    // InternalPerspectiveDsl.g:14979: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 {
+            // InternalPerspectiveDsl.g:14983:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
+            // InternalPerspectiveDsl.g:14984:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
+            {
+            pushFollow(FOLLOW_108);
+            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"
+    // InternalPerspectiveDsl.g:14991:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:14995:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:14996:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:14996:1: ( '(' )
+            // InternalPerspectiveDsl.g:14997:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:15006: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 {
+            // InternalPerspectiveDsl.g:15010:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
+            // InternalPerspectiveDsl.g:15011:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
+            {
+            pushFollow(FOLLOW_108);
+            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"
+    // InternalPerspectiveDsl.g:15018: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 {
+            // InternalPerspectiveDsl.g:15022:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:15023:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:15023:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:15024:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:15025:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            int alt104=2;
+            int LA104_0 = input.LA(1);
+
+            if ( ((LA104_0>=RULE_ID && LA104_0<=RULE_DECIMAL)||LA104_0==27||(LA104_0>=34 && LA104_0<=35)||LA104_0==40||(LA104_0>=44 && LA104_0<=50)||LA104_0==54||LA104_0==90||(LA104_0>=94 && LA104_0<=95)||LA104_0==98||LA104_0==100||(LA104_0>=104 && LA104_0<=112)||LA104_0==114||(LA104_0>=124 && LA104_0<=125)) ) {
+                alt104=1;
+            }
+            switch (alt104) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:15025: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"
+    // InternalPerspectiveDsl.g:15033: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 {
+            // InternalPerspectiveDsl.g:15037:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
+            // InternalPerspectiveDsl.g:15038:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
+            {
+            pushFollow(FOLLOW_109);
+            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"
+    // InternalPerspectiveDsl.g:15045:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
+    public final void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15049:1: ( ( ';' ) )
+            // InternalPerspectiveDsl.g:15050:1: ( ';' )
+            {
+            // InternalPerspectiveDsl.g:15050:1: ( ';' )
+            // InternalPerspectiveDsl.g:15051:2: ';'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
+            }
+            match(input,88,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"
+    // InternalPerspectiveDsl.g:15060: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 {
+            // InternalPerspectiveDsl.g:15064:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
+            // InternalPerspectiveDsl.g:15065:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
+            {
+            pushFollow(FOLLOW_109);
+            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"
+    // InternalPerspectiveDsl.g:15072:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
+    public final void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15076:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
+            // InternalPerspectiveDsl.g:15077:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            {
+            // InternalPerspectiveDsl.g:15077:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalPerspectiveDsl.g:15078:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); 
+            }
+            // InternalPerspectiveDsl.g:15079:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            int alt105=2;
+            int LA105_0 = input.LA(1);
+
+            if ( ((LA105_0>=RULE_ID && LA105_0<=RULE_DECIMAL)||LA105_0==27||(LA105_0>=34 && LA105_0<=35)||LA105_0==40||(LA105_0>=45 && LA105_0<=50)||LA105_0==54||LA105_0==90||(LA105_0>=94 && LA105_0<=95)||LA105_0==98||LA105_0==100||(LA105_0>=104 && LA105_0<=112)||LA105_0==114||LA105_0==125) ) {
+                alt105=1;
+            }
+            switch (alt105) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:15079: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"
+    // InternalPerspectiveDsl.g:15087: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 {
+            // InternalPerspectiveDsl.g:15091:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
+            // InternalPerspectiveDsl.g:15092:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalPerspectiveDsl.g:15099:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
+    public final void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15103:1: ( ( ';' ) )
+            // InternalPerspectiveDsl.g:15104:1: ( ';' )
+            {
+            // InternalPerspectiveDsl.g:15104:1: ( ';' )
+            // InternalPerspectiveDsl.g:15105:2: ';'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
+            }
+            match(input,88,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"
+    // InternalPerspectiveDsl.g:15114: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 {
+            // InternalPerspectiveDsl.g:15118:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
+            // InternalPerspectiveDsl.g:15119:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalPerspectiveDsl.g:15126: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 {
+            // InternalPerspectiveDsl.g:15130:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
+            // InternalPerspectiveDsl.g:15131:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            {
+            // InternalPerspectiveDsl.g:15131:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalPerspectiveDsl.g:15132:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); 
+            }
+            // InternalPerspectiveDsl.g:15133:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            int alt106=2;
+            int LA106_0 = input.LA(1);
+
+            if ( ((LA106_0>=RULE_ID && LA106_0<=RULE_DECIMAL)||LA106_0==27||(LA106_0>=34 && LA106_0<=35)||LA106_0==40||(LA106_0>=45 && LA106_0<=50)||LA106_0==54||LA106_0==90||(LA106_0>=94 && LA106_0<=95)||LA106_0==98||LA106_0==100||(LA106_0>=104 && LA106_0<=112)||LA106_0==114||LA106_0==125) ) {
+                alt106=1;
+            }
+            switch (alt106) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:15133: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"
+    // InternalPerspectiveDsl.g:15141: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 {
+            // InternalPerspectiveDsl.g:15145:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
+            // InternalPerspectiveDsl.g:15146:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:15153:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
+    public final void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15157:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:15158:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:15158:1: ( ')' )
+            // InternalPerspectiveDsl.g:15159:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:15168:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
+    public final void rule__XBasicForLoopExpression__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15172:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
+            // InternalPerspectiveDsl.g:15173: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"
+    // InternalPerspectiveDsl.g:15179:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
+    public final void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15183:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
+            // InternalPerspectiveDsl.g:15184:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            {
+            // InternalPerspectiveDsl.g:15184:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalPerspectiveDsl.g:15185:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); 
+            }
+            // InternalPerspectiveDsl.g:15186:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalPerspectiveDsl.g:15186: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"
+    // InternalPerspectiveDsl.g:15195: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 {
+            // InternalPerspectiveDsl.g:15199:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
+            // InternalPerspectiveDsl.g:15200:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:15207: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 {
+            // InternalPerspectiveDsl.g:15211:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:15212:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            {
+            // InternalPerspectiveDsl.g:15212:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:15213:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:15214:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:15214: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"
+    // InternalPerspectiveDsl.g:15222: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 {
+            // InternalPerspectiveDsl.g:15226:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:15227: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"
+    // InternalPerspectiveDsl.g:15233: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 {
+            // InternalPerspectiveDsl.g:15237:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
+            // InternalPerspectiveDsl.g:15238:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:15238:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:15239:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:15240:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            loop107:
+            do {
+                int alt107=2;
+                int LA107_0 = input.LA(1);
+
+                if ( (LA107_0==92) ) {
+                    alt107=1;
+                }
+
+
+                switch (alt107) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:15240:3: rule__XBasicForLoopExpression__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XBasicForLoopExpression__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop107;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:15249: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 {
+            // InternalPerspectiveDsl.g:15253:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:15254:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
+            {
+            pushFollow(FOLLOW_110);
+            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"
+    // InternalPerspectiveDsl.g:15261:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15265:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:15266:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:15266:1: ( ',' )
+            // InternalPerspectiveDsl.g:15267:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:15276: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 {
+            // InternalPerspectiveDsl.g:15280:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:15281: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"
+    // InternalPerspectiveDsl.g:15287: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 {
+            // InternalPerspectiveDsl.g:15291:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:15292:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:15292:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:15293:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:15294:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:15294: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"
+    // InternalPerspectiveDsl.g:15303: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 {
+            // InternalPerspectiveDsl.g:15307:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
+            // InternalPerspectiveDsl.g:15308:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:15315: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 {
+            // InternalPerspectiveDsl.g:15319:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
+            // InternalPerspectiveDsl.g:15320:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            {
+            // InternalPerspectiveDsl.g:15320:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalPerspectiveDsl.g:15321:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); 
+            }
+            // InternalPerspectiveDsl.g:15322:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalPerspectiveDsl.g:15322: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"
+    // InternalPerspectiveDsl.g:15330: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 {
+            // InternalPerspectiveDsl.g:15334:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
+            // InternalPerspectiveDsl.g:15335: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"
+    // InternalPerspectiveDsl.g:15341: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 {
+            // InternalPerspectiveDsl.g:15345:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
+            // InternalPerspectiveDsl.g:15346:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:15346:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalPerspectiveDsl.g:15347:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); 
+            }
+            // InternalPerspectiveDsl.g:15348:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            loop108:
+            do {
+                int alt108=2;
+                int LA108_0 = input.LA(1);
+
+                if ( (LA108_0==92) ) {
+                    alt108=1;
+                }
+
+
+                switch (alt108) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:15348:3: rule__XBasicForLoopExpression__Group_7_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XBasicForLoopExpression__Group_7_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop108;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:15357: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 {
+            // InternalPerspectiveDsl.g:15361:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
+            // InternalPerspectiveDsl.g:15362:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:15369:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
+    public final void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15373:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:15374:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:15374:1: ( ',' )
+            // InternalPerspectiveDsl.g:15375:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:15384: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 {
+            // InternalPerspectiveDsl.g:15388:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
+            // InternalPerspectiveDsl.g:15389: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"
+    // InternalPerspectiveDsl.g:15395: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 {
+            // InternalPerspectiveDsl.g:15399:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
+            // InternalPerspectiveDsl.g:15400:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:15400:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalPerspectiveDsl.g:15401:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:15402:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalPerspectiveDsl.g:15402: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"
+    // InternalPerspectiveDsl.g:15411: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 {
+            // InternalPerspectiveDsl.g:15415:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
+            // InternalPerspectiveDsl.g:15416:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
+            {
+            pushFollow(FOLLOW_111);
+            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"
+    // InternalPerspectiveDsl.g:15423:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XWhileExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15427:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15428:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:15428:1: ( () )
+            // InternalPerspectiveDsl.g:15429:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:15430:2: ()
+            // InternalPerspectiveDsl.g:15430: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"
+    // InternalPerspectiveDsl.g:15438: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 {
+            // InternalPerspectiveDsl.g:15442:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
+            // InternalPerspectiveDsl.g:15443:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalPerspectiveDsl.g:15450:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
+    public final void rule__XWhileExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15454:1: ( ( 'while' ) )
+            // InternalPerspectiveDsl.g:15455:1: ( 'while' )
+            {
+            // InternalPerspectiveDsl.g:15455:1: ( 'while' )
+            // InternalPerspectiveDsl.g:15456:2: 'while'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
+            }
+            match(input,105,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"
+    // InternalPerspectiveDsl.g:15465: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 {
+            // InternalPerspectiveDsl.g:15469:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
+            // InternalPerspectiveDsl.g:15470:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:15477:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XWhileExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15481:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:15482:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:15482:1: ( '(' )
+            // InternalPerspectiveDsl.g:15483:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:15492: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 {
+            // InternalPerspectiveDsl.g:15496:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
+            // InternalPerspectiveDsl.g:15497:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalPerspectiveDsl.g:15504:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
+    public final void rule__XWhileExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15508:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:15509:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            {
+            // InternalPerspectiveDsl.g:15509:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalPerspectiveDsl.g:15510:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); 
+            }
+            // InternalPerspectiveDsl.g:15511:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalPerspectiveDsl.g:15511: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"
+    // InternalPerspectiveDsl.g:15519: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 {
+            // InternalPerspectiveDsl.g:15523:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
+            // InternalPerspectiveDsl.g:15524:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:15531:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
+    public final void rule__XWhileExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15535:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:15536:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:15536:1: ( ')' )
+            // InternalPerspectiveDsl.g:15537:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:15546:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
+    public final void rule__XWhileExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15550:1: ( rule__XWhileExpression__Group__5__Impl )
+            // InternalPerspectiveDsl.g:15551: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"
+    // InternalPerspectiveDsl.g:15557:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
+    public final void rule__XWhileExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15561:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:15562:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            {
+            // InternalPerspectiveDsl.g:15562:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalPerspectiveDsl.g:15563:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); 
+            }
+            // InternalPerspectiveDsl.g:15564:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalPerspectiveDsl.g:15564: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"
+    // InternalPerspectiveDsl.g:15573: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 {
+            // InternalPerspectiveDsl.g:15577:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
+            // InternalPerspectiveDsl.g:15578:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
+            {
+            pushFollow(FOLLOW_112);
+            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"
+    // InternalPerspectiveDsl.g:15585:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15589:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15590:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:15590:1: ( () )
+            // InternalPerspectiveDsl.g:15591:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:15592:2: ()
+            // InternalPerspectiveDsl.g:15592: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"
+    // InternalPerspectiveDsl.g:15600: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 {
+            // InternalPerspectiveDsl.g:15604:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
+            // InternalPerspectiveDsl.g:15605:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:15612:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
+    public final void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15616:1: ( ( 'do' ) )
+            // InternalPerspectiveDsl.g:15617:1: ( 'do' )
+            {
+            // InternalPerspectiveDsl.g:15617:1: ( 'do' )
+            // InternalPerspectiveDsl.g:15618:2: 'do'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
+            }
+            match(input,106,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"
+    // InternalPerspectiveDsl.g:15627: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 {
+            // InternalPerspectiveDsl.g:15631:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
+            // InternalPerspectiveDsl.g:15632:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
+            {
+            pushFollow(FOLLOW_111);
+            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"
+    // InternalPerspectiveDsl.g:15639:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
+    public final void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15643:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:15644:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:15644:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalPerspectiveDsl.g:15645:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:15646:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalPerspectiveDsl.g:15646: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"
+    // InternalPerspectiveDsl.g:15654: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 {
+            // InternalPerspectiveDsl.g:15658:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
+            // InternalPerspectiveDsl.g:15659:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalPerspectiveDsl.g:15666:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
+    public final void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15670:1: ( ( 'while' ) )
+            // InternalPerspectiveDsl.g:15671:1: ( 'while' )
+            {
+            // InternalPerspectiveDsl.g:15671:1: ( 'while' )
+            // InternalPerspectiveDsl.g:15672:2: 'while'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
+            }
+            match(input,105,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"
+    // InternalPerspectiveDsl.g:15681: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 {
+            // InternalPerspectiveDsl.g:15685:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
+            // InternalPerspectiveDsl.g:15686:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:15693:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
+    public final void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15697:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:15698:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:15698:1: ( '(' )
+            // InternalPerspectiveDsl.g:15699:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:15708: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 {
+            // InternalPerspectiveDsl.g:15712:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
+            // InternalPerspectiveDsl.g:15713:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalPerspectiveDsl.g:15720:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
+    public final void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15724:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:15725:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            {
+            // InternalPerspectiveDsl.g:15725:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalPerspectiveDsl.g:15726:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); 
+            }
+            // InternalPerspectiveDsl.g:15727:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalPerspectiveDsl.g:15727: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"
+    // InternalPerspectiveDsl.g:15735:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
+    public final void rule__XDoWhileExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15739:1: ( rule__XDoWhileExpression__Group__6__Impl )
+            // InternalPerspectiveDsl.g:15740: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"
+    // InternalPerspectiveDsl.g:15746:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
+    public final void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15750:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:15751:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:15751:1: ( ')' )
+            // InternalPerspectiveDsl.g:15752:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:15762: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 {
+            // InternalPerspectiveDsl.g:15766:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
+            // InternalPerspectiveDsl.g:15767: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"
+    // InternalPerspectiveDsl.g:15774:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XBlockExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15778:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15779:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:15779:1: ( () )
+            // InternalPerspectiveDsl.g:15780:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:15781:2: ()
+            // InternalPerspectiveDsl.g:15781: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"
+    // InternalPerspectiveDsl.g:15789: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 {
+            // InternalPerspectiveDsl.g:15793:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
+            // InternalPerspectiveDsl.g:15794:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
+            {
+            pushFollow(FOLLOW_113);
+            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"
+    // InternalPerspectiveDsl.g:15801:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__XBlockExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15805:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:15806:1: ( '{' )
+            {
+            // InternalPerspectiveDsl.g:15806:1: ( '{' )
+            // InternalPerspectiveDsl.g:15807:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            }
+            match(input,54,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"
+    // InternalPerspectiveDsl.g:15816: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 {
+            // InternalPerspectiveDsl.g:15820:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
+            // InternalPerspectiveDsl.g:15821:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
+            {
+            pushFollow(FOLLOW_113);
+            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"
+    // InternalPerspectiveDsl.g:15828: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 {
+            // InternalPerspectiveDsl.g:15832:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
+            // InternalPerspectiveDsl.g:15833:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            {
+            // InternalPerspectiveDsl.g:15833:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalPerspectiveDsl.g:15834:2: ( rule__XBlockExpression__Group_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup_2()); 
+            }
+            // InternalPerspectiveDsl.g:15835:2: ( rule__XBlockExpression__Group_2__0 )*
+            loop109:
+            do {
+                int alt109=2;
+                int LA109_0 = input.LA(1);
+
+                if ( ((LA109_0>=RULE_ID && LA109_0<=RULE_DECIMAL)||LA109_0==27||(LA109_0>=34 && LA109_0<=35)||LA109_0==40||(LA109_0>=44 && LA109_0<=50)||LA109_0==54||LA109_0==90||(LA109_0>=94 && LA109_0<=95)||LA109_0==98||LA109_0==100||(LA109_0>=104 && LA109_0<=112)||LA109_0==114||(LA109_0>=124 && LA109_0<=125)) ) {
+                    alt109=1;
+                }
+
+
+                switch (alt109) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:15835:3: rule__XBlockExpression__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_97);
+            	    rule__XBlockExpression__Group_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop109;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:15843:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
+    public final void rule__XBlockExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15847:1: ( rule__XBlockExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:15848: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"
+    // InternalPerspectiveDsl.g:15854:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
+    public final void rule__XBlockExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15858:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:15859:1: ( '}' )
+            {
+            // InternalPerspectiveDsl.g:15859:1: ( '}' )
+            // InternalPerspectiveDsl.g:15860:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
+            }
+            match(input,55,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"
+    // InternalPerspectiveDsl.g:15870: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 {
+            // InternalPerspectiveDsl.g:15874:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
+            // InternalPerspectiveDsl.g:15875:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
+            {
+            pushFollow(FOLLOW_45);
+            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"
+    // InternalPerspectiveDsl.g:15882: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 {
+            // InternalPerspectiveDsl.g:15886:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
+            // InternalPerspectiveDsl.g:15887:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            {
+            // InternalPerspectiveDsl.g:15887:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalPerspectiveDsl.g:15888:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:15889:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalPerspectiveDsl.g:15889: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"
+    // InternalPerspectiveDsl.g:15897: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 {
+            // InternalPerspectiveDsl.g:15901:1: ( rule__XBlockExpression__Group_2__1__Impl )
+            // InternalPerspectiveDsl.g:15902: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"
+    // InternalPerspectiveDsl.g:15908:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
+    public final void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15912:1: ( ( ( ';' )? ) )
+            // InternalPerspectiveDsl.g:15913:1: ( ( ';' )? )
+            {
+            // InternalPerspectiveDsl.g:15913:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:15914:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:15915:2: ( ';' )?
+            int alt110=2;
+            int LA110_0 = input.LA(1);
+
+            if ( (LA110_0==88) ) {
+                alt110=1;
+            }
+            switch (alt110) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:15915:3: ';'
+                    {
+                    match(input,88,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"
+    // InternalPerspectiveDsl.g:15924: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 {
+            // InternalPerspectiveDsl.g:15928:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
+            // InternalPerspectiveDsl.g:15929:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
+            {
+            pushFollow(FOLLOW_114);
+            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"
+    // InternalPerspectiveDsl.g:15936:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
+    public final void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15940:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15941:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:15941:1: ( () )
+            // InternalPerspectiveDsl.g:15942:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:15943:2: ()
+            // InternalPerspectiveDsl.g:15943: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"
+    // InternalPerspectiveDsl.g:15951: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 {
+            // InternalPerspectiveDsl.g:15955:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
+            // InternalPerspectiveDsl.g:15956:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:15963:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
+    public final void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15967:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
+            // InternalPerspectiveDsl.g:15968:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            {
+            // InternalPerspectiveDsl.g:15968:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:15969:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); 
+            }
+            // InternalPerspectiveDsl.g:15970:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalPerspectiveDsl.g:15970: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"
+    // InternalPerspectiveDsl.g:15978: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 {
+            // InternalPerspectiveDsl.g:15982:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
+            // InternalPerspectiveDsl.g:15983:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalPerspectiveDsl.g:15990:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
+    public final void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:15994:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
+            // InternalPerspectiveDsl.g:15995:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            {
+            // InternalPerspectiveDsl.g:15995:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:15996:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); 
+            }
+            // InternalPerspectiveDsl.g:15997:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:15997: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"
+    // InternalPerspectiveDsl.g:16005:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
+    public final void rule__XVariableDeclaration__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16009:1: ( rule__XVariableDeclaration__Group__3__Impl )
+            // InternalPerspectiveDsl.g:16010: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"
+    // InternalPerspectiveDsl.g:16016: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 {
+            // InternalPerspectiveDsl.g:16020:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:16021:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:16021:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16022:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:16023:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            int alt111=2;
+            int LA111_0 = input.LA(1);
+
+            if ( (LA111_0==13) ) {
+                alt111=1;
+            }
+            switch (alt111) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:16023: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"
+    // InternalPerspectiveDsl.g:16032: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 {
+            // InternalPerspectiveDsl.g:16036:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
+            // InternalPerspectiveDsl.g:16037: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"
+    // InternalPerspectiveDsl.g:16043: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 {
+            // InternalPerspectiveDsl.g:16047:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:16048:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:16048:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:16049:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:16050:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:16050: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"
+    // InternalPerspectiveDsl.g:16059: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 {
+            // InternalPerspectiveDsl.g:16063:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
+            // InternalPerspectiveDsl.g:16064: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"
+    // InternalPerspectiveDsl.g:16071: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 {
+            // InternalPerspectiveDsl.g:16075:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:16076:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            {
+            // InternalPerspectiveDsl.g:16076:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalPerspectiveDsl.g:16077:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:16078:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalPerspectiveDsl.g:16078: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"
+    // InternalPerspectiveDsl.g:16086: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 {
+            // InternalPerspectiveDsl.g:16090:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:16091: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"
+    // InternalPerspectiveDsl.g:16097: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 {
+            // InternalPerspectiveDsl.g:16101:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:16102:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            {
+            // InternalPerspectiveDsl.g:16102:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalPerspectiveDsl.g:16103:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:16104:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalPerspectiveDsl.g:16104: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"
+    // InternalPerspectiveDsl.g:16113: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 {
+            // InternalPerspectiveDsl.g:16117:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
+            // InternalPerspectiveDsl.g:16118:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:16125:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
+    public final void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16129:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:16130:1: ( '=' )
+            {
+            // InternalPerspectiveDsl.g:16130:1: ( '=' )
+            // InternalPerspectiveDsl.g:16131: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"
+    // InternalPerspectiveDsl.g:16140: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 {
+            // InternalPerspectiveDsl.g:16144:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:16145: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"
+    // InternalPerspectiveDsl.g:16151: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 {
+            // InternalPerspectiveDsl.g:16155:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:16156:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            {
+            // InternalPerspectiveDsl.g:16156:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:16157:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:16158:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalPerspectiveDsl.g:16158: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"
+    // InternalPerspectiveDsl.g:16167: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 {
+            // InternalPerspectiveDsl.g:16171:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
+            // InternalPerspectiveDsl.g:16172:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:16179:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
+    public final void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16183:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
+            // InternalPerspectiveDsl.g:16184:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            {
+            // InternalPerspectiveDsl.g:16184:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalPerspectiveDsl.g:16185:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+            // InternalPerspectiveDsl.g:16186:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            int alt112=2;
+            int LA112_0 = input.LA(1);
+
+            if ( (LA112_0==RULE_ID) ) {
+                int LA112_1 = input.LA(2);
+
+                if ( (LA112_1==RULE_ID||LA112_1==27||LA112_1==43||LA112_1==95) ) {
+                    alt112=1;
+                }
+            }
+            else if ( (LA112_0==31||LA112_0==90) ) {
+                alt112=1;
+            }
+            switch (alt112) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:16186: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"
+    // InternalPerspectiveDsl.g:16194:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
+    public final void rule__JvmFormalParameter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16198:1: ( rule__JvmFormalParameter__Group__1__Impl )
+            // InternalPerspectiveDsl.g:16199: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"
+    // InternalPerspectiveDsl.g:16205:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
+    public final void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16209:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:16210:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:16210:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:16211:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:16212:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:16212: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"
+    // InternalPerspectiveDsl.g:16221: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 {
+            // InternalPerspectiveDsl.g:16225:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
+            // InternalPerspectiveDsl.g:16226: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"
+    // InternalPerspectiveDsl.g:16233:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
+    public final void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16237:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
+            // InternalPerspectiveDsl.g:16238:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            {
+            // InternalPerspectiveDsl.g:16238:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:16239:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+            // InternalPerspectiveDsl.g:16240:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalPerspectiveDsl.g:16240: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"
+    // InternalPerspectiveDsl.g:16248:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
+    public final void rule__FullJvmFormalParameter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16252:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
+            // InternalPerspectiveDsl.g:16253: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"
+    // InternalPerspectiveDsl.g:16259:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
+    public final void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16263:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:16264:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:16264:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:16265:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:16266:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:16266: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"
+    // InternalPerspectiveDsl.g:16275: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 {
+            // InternalPerspectiveDsl.g:16279:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
+            // InternalPerspectiveDsl.g:16280:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
+            {
+            pushFollow(FOLLOW_88);
+            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"
+    // InternalPerspectiveDsl.g:16287:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
+    public final void rule__XFeatureCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16291:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:16292:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:16292:1: ( () )
+            // InternalPerspectiveDsl.g:16293:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:16294:2: ()
+            // InternalPerspectiveDsl.g:16294: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"
+    // InternalPerspectiveDsl.g:16302: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 {
+            // InternalPerspectiveDsl.g:16306:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
+            // InternalPerspectiveDsl.g:16307:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
+            {
+            pushFollow(FOLLOW_88);
+            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"
+    // InternalPerspectiveDsl.g:16314: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 {
+            // InternalPerspectiveDsl.g:16318:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:16319:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:16319:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:16320:2: ( rule__XFeatureCall__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:16321:2: ( rule__XFeatureCall__Group_1__0 )?
+            int alt113=2;
+            int LA113_0 = input.LA(1);
+
+            if ( (LA113_0==27) ) {
+                alt113=1;
+            }
+            switch (alt113) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:16321: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"
+    // InternalPerspectiveDsl.g:16329: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 {
+            // InternalPerspectiveDsl.g:16333:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
+            // InternalPerspectiveDsl.g:16334:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
+            {
+            pushFollow(FOLLOW_89);
+            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"
+    // InternalPerspectiveDsl.g:16341:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
+    public final void rule__XFeatureCall__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16345:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:16346:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:16346:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalPerspectiveDsl.g:16347:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:16348:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalPerspectiveDsl.g:16348: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"
+    // InternalPerspectiveDsl.g:16356: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 {
+            // InternalPerspectiveDsl.g:16360:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
+            // InternalPerspectiveDsl.g:16361:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
+            {
+            pushFollow(FOLLOW_89);
+            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"
+    // InternalPerspectiveDsl.g:16368: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 {
+            // InternalPerspectiveDsl.g:16372:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:16373:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:16373:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16374:2: ( rule__XFeatureCall__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:16375:2: ( rule__XFeatureCall__Group_3__0 )?
+            int alt114=2;
+            alt114 = dfa114.predict(input);
+            switch (alt114) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:16375: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"
+    // InternalPerspectiveDsl.g:16383:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
+    public final void rule__XFeatureCall__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16387:1: ( rule__XFeatureCall__Group__4__Impl )
+            // InternalPerspectiveDsl.g:16388: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"
+    // InternalPerspectiveDsl.g:16394:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
+    public final void rule__XFeatureCall__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16398:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
+            // InternalPerspectiveDsl.g:16399:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            {
+            // InternalPerspectiveDsl.g:16399:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalPerspectiveDsl.g:16400:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); 
+            }
+            // InternalPerspectiveDsl.g:16401:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            int alt115=2;
+            alt115 = dfa115.predict(input);
+            switch (alt115) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:16401: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"
+    // InternalPerspectiveDsl.g:16410: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 {
+            // InternalPerspectiveDsl.g:16414:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
+            // InternalPerspectiveDsl.g:16415:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:16422:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
+    public final void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16426:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:16427:1: ( '<' )
+            {
+            // InternalPerspectiveDsl.g:16427:1: ( '<' )
+            // InternalPerspectiveDsl.g:16428: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"
+    // InternalPerspectiveDsl.g:16437: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 {
+            // InternalPerspectiveDsl.g:16441:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
+            // InternalPerspectiveDsl.g:16442:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:16449: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 {
+            // InternalPerspectiveDsl.g:16453:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:16454:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:16454:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:16455:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:16456:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:16456: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"
+    // InternalPerspectiveDsl.g:16464: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 {
+            // InternalPerspectiveDsl.g:16468:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
+            // InternalPerspectiveDsl.g:16469:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:16476: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 {
+            // InternalPerspectiveDsl.g:16480:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
+            // InternalPerspectiveDsl.g:16481:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            {
+            // InternalPerspectiveDsl.g:16481:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:16482:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); 
+            }
+            // InternalPerspectiveDsl.g:16483:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            loop116:
+            do {
+                int alt116=2;
+                int LA116_0 = input.LA(1);
+
+                if ( (LA116_0==92) ) {
+                    alt116=1;
+                }
+
+
+                switch (alt116) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:16483:3: rule__XFeatureCall__Group_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XFeatureCall__Group_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop116;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:16491: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 {
+            // InternalPerspectiveDsl.g:16495:1: ( rule__XFeatureCall__Group_1__3__Impl )
+            // InternalPerspectiveDsl.g:16496: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"
+    // InternalPerspectiveDsl.g:16502:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
+    public final void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16506:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:16507:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:16507:1: ( '>' )
+            // InternalPerspectiveDsl.g:16508: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"
+    // InternalPerspectiveDsl.g:16518: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 {
+            // InternalPerspectiveDsl.g:16522:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
+            // InternalPerspectiveDsl.g:16523:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:16530:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
+    public final void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16534:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:16535:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:16535:1: ( ',' )
+            // InternalPerspectiveDsl.g:16536:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:16545: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 {
+            // InternalPerspectiveDsl.g:16549:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
+            // InternalPerspectiveDsl.g:16550: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"
+    // InternalPerspectiveDsl.g:16556: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 {
+            // InternalPerspectiveDsl.g:16560:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
+            // InternalPerspectiveDsl.g:16561:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:16561:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:16562:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:16563:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:16563: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"
+    // InternalPerspectiveDsl.g:16572: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 {
+            // InternalPerspectiveDsl.g:16576:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
+            // InternalPerspectiveDsl.g:16577:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
+            {
+            pushFollow(FOLLOW_92);
+            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"
+    // InternalPerspectiveDsl.g:16584: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 {
+            // InternalPerspectiveDsl.g:16588:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:16589:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            {
+            // InternalPerspectiveDsl.g:16589:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:16590:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:16591:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalPerspectiveDsl.g:16591: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"
+    // InternalPerspectiveDsl.g:16599: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 {
+            // InternalPerspectiveDsl.g:16603:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
+            // InternalPerspectiveDsl.g:16604:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
+            {
+            pushFollow(FOLLOW_92);
+            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"
+    // InternalPerspectiveDsl.g:16611: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 {
+            // InternalPerspectiveDsl.g:16615:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
+            // InternalPerspectiveDsl.g:16616:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            {
+            // InternalPerspectiveDsl.g:16616:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:16617:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:16618:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            int alt117=2;
+            int LA117_0 = input.LA(1);
+
+            if ( ((LA117_0>=RULE_ID && LA117_0<=RULE_DECIMAL)||LA117_0==27||LA117_0==31||(LA117_0>=34 && LA117_0<=35)||LA117_0==40||(LA117_0>=45 && LA117_0<=50)||LA117_0==54||LA117_0==90||(LA117_0>=94 && LA117_0<=95)||LA117_0==98||LA117_0==100||(LA117_0>=104 && LA117_0<=112)||LA117_0==114||LA117_0==123||LA117_0==125) ) {
+                alt117=1;
+            }
+            switch (alt117) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:16618: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"
+    // InternalPerspectiveDsl.g:16626: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 {
+            // InternalPerspectiveDsl.g:16630:1: ( rule__XFeatureCall__Group_3__2__Impl )
+            // InternalPerspectiveDsl.g:16631: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"
+    // InternalPerspectiveDsl.g:16637:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
+    public final void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16641:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:16642:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:16642:1: ( ')' )
+            // InternalPerspectiveDsl.g:16643:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:16653: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 {
+            // InternalPerspectiveDsl.g:16657:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
+            // InternalPerspectiveDsl.g:16658:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:16665: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 {
+            // InternalPerspectiveDsl.g:16669:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
+            // InternalPerspectiveDsl.g:16670:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:16670:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:16671:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:16672:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalPerspectiveDsl.g:16672: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"
+    // InternalPerspectiveDsl.g:16680: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 {
+            // InternalPerspectiveDsl.g:16684:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:16685: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"
+    // InternalPerspectiveDsl.g:16691: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 {
+            // InternalPerspectiveDsl.g:16695:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:16696:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:16696:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:16697:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:16698:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            loop118:
+            do {
+                int alt118=2;
+                int LA118_0 = input.LA(1);
+
+                if ( (LA118_0==92) ) {
+                    alt118=1;
+                }
+
+
+                switch (alt118) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:16698:3: rule__XFeatureCall__Group_3_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XFeatureCall__Group_3_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop118;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:16707: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 {
+            // InternalPerspectiveDsl.g:16711:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
+            // InternalPerspectiveDsl.g:16712:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:16719: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 {
+            // InternalPerspectiveDsl.g:16723:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:16724:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:16724:1: ( ',' )
+            // InternalPerspectiveDsl.g:16725:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:16734: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 {
+            // InternalPerspectiveDsl.g:16738:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:16739: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"
+    // InternalPerspectiveDsl.g:16745: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 {
+            // InternalPerspectiveDsl.g:16749:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:16750:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:16750:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:16751:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:16752:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:16752: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"
+    // InternalPerspectiveDsl.g:16761: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 {
+            // InternalPerspectiveDsl.g:16765:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
+            // InternalPerspectiveDsl.g:16766:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
+            {
+            pushFollow(FOLLOW_115);
+            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"
+    // InternalPerspectiveDsl.g:16773:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
+    public final void rule__XConstructorCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16777:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:16778:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:16778:1: ( () )
+            // InternalPerspectiveDsl.g:16779:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:16780:2: ()
+            // InternalPerspectiveDsl.g:16780: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"
+    // InternalPerspectiveDsl.g:16788: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 {
+            // InternalPerspectiveDsl.g:16792:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
+            // InternalPerspectiveDsl.g:16793: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"
+    // InternalPerspectiveDsl.g:16800:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
+    public final void rule__XConstructorCall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16804:1: ( ( 'new' ) )
+            // InternalPerspectiveDsl.g:16805:1: ( 'new' )
+            {
+            // InternalPerspectiveDsl.g:16805:1: ( 'new' )
+            // InternalPerspectiveDsl.g:16806:2: 'new'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
+            }
+            match(input,107,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"
+    // InternalPerspectiveDsl.g:16815: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 {
+            // InternalPerspectiveDsl.g:16819:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
+            // InternalPerspectiveDsl.g:16820:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
+            {
+            pushFollow(FOLLOW_116);
+            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"
+    // InternalPerspectiveDsl.g:16827:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
+    public final void rule__XConstructorCall__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16831:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:16832:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:16832:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalPerspectiveDsl.g:16833:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:16834:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalPerspectiveDsl.g:16834: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"
+    // InternalPerspectiveDsl.g:16842: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 {
+            // InternalPerspectiveDsl.g:16846:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
+            // InternalPerspectiveDsl.g:16847:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
+            {
+            pushFollow(FOLLOW_116);
+            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"
+    // InternalPerspectiveDsl.g:16854: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 {
+            // InternalPerspectiveDsl.g:16858:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:16859:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            {
+            // InternalPerspectiveDsl.g:16859:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16860:2: ( rule__XConstructorCall__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_3()); 
+            }
+            // InternalPerspectiveDsl.g:16861:2: ( rule__XConstructorCall__Group_3__0 )?
+            int alt119=2;
+            alt119 = dfa119.predict(input);
+            switch (alt119) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:16861: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"
+    // InternalPerspectiveDsl.g:16869: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 {
+            // InternalPerspectiveDsl.g:16873:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
+            // InternalPerspectiveDsl.g:16874:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
+            {
+            pushFollow(FOLLOW_116);
+            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"
+    // InternalPerspectiveDsl.g:16881: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 {
+            // InternalPerspectiveDsl.g:16885:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
+            // InternalPerspectiveDsl.g:16886:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            {
+            // InternalPerspectiveDsl.g:16886:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalPerspectiveDsl.g:16887:2: ( rule__XConstructorCall__Group_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_4()); 
+            }
+            // InternalPerspectiveDsl.g:16888:2: ( rule__XConstructorCall__Group_4__0 )?
+            int alt120=2;
+            alt120 = dfa120.predict(input);
+            switch (alt120) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:16888: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"
+    // InternalPerspectiveDsl.g:16896:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
+    public final void rule__XConstructorCall__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16900:1: ( rule__XConstructorCall__Group__5__Impl )
+            // InternalPerspectiveDsl.g:16901: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"
+    // InternalPerspectiveDsl.g:16907:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
+    public final void rule__XConstructorCall__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16911:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
+            // InternalPerspectiveDsl.g:16912:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            {
+            // InternalPerspectiveDsl.g:16912:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalPerspectiveDsl.g:16913:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); 
+            }
+            // InternalPerspectiveDsl.g:16914:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            int alt121=2;
+            alt121 = dfa121.predict(input);
+            switch (alt121) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:16914: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"
+    // InternalPerspectiveDsl.g:16923: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 {
+            // InternalPerspectiveDsl.g:16927:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
+            // InternalPerspectiveDsl.g:16928:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:16935:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
+    public final void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:16939:1: ( ( ( '<' ) ) )
+            // InternalPerspectiveDsl.g:16940:1: ( ( '<' ) )
+            {
+            // InternalPerspectiveDsl.g:16940:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:16941:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:16942:2: ( '<' )
+            // InternalPerspectiveDsl.g:16942: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"
+    // InternalPerspectiveDsl.g:16950: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 {
+            // InternalPerspectiveDsl.g:16954:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
+            // InternalPerspectiveDsl.g:16955:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:16962: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 {
+            // InternalPerspectiveDsl.g:16966:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:16967:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            {
+            // InternalPerspectiveDsl.g:16967:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:16968:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:16969:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalPerspectiveDsl.g:16969: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"
+    // InternalPerspectiveDsl.g:16977: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 {
+            // InternalPerspectiveDsl.g:16981:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
+            // InternalPerspectiveDsl.g:16982:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:16989: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 {
+            // InternalPerspectiveDsl.g:16993:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
+            // InternalPerspectiveDsl.g:16994:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            {
+            // InternalPerspectiveDsl.g:16994:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalPerspectiveDsl.g:16995:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); 
+            }
+            // InternalPerspectiveDsl.g:16996:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            loop122:
+            do {
+                int alt122=2;
+                int LA122_0 = input.LA(1);
+
+                if ( (LA122_0==92) ) {
+                    alt122=1;
+                }
+
+
+                switch (alt122) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:16996:3: rule__XConstructorCall__Group_3_2__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XConstructorCall__Group_3_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop122;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:17004: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 {
+            // InternalPerspectiveDsl.g:17008:1: ( rule__XConstructorCall__Group_3__3__Impl )
+            // InternalPerspectiveDsl.g:17009: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"
+    // InternalPerspectiveDsl.g:17015:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
+    public final void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17019:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:17020:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:17020:1: ( '>' )
+            // InternalPerspectiveDsl.g:17021: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"
+    // InternalPerspectiveDsl.g:17031: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 {
+            // InternalPerspectiveDsl.g:17035:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:17036:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:17043:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
+    public final void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17047:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:17048:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:17048:1: ( ',' )
+            // InternalPerspectiveDsl.g:17049:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:17058: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 {
+            // InternalPerspectiveDsl.g:17062:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:17063: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"
+    // InternalPerspectiveDsl.g:17069: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 {
+            // InternalPerspectiveDsl.g:17073:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:17074:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:17074:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:17075:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:17076:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:17076: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"
+    // InternalPerspectiveDsl.g:17085: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 {
+            // InternalPerspectiveDsl.g:17089:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
+            // InternalPerspectiveDsl.g:17090:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
+            {
+            pushFollow(FOLLOW_92);
+            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"
+    // InternalPerspectiveDsl.g:17097: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 {
+            // InternalPerspectiveDsl.g:17101:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
+            // InternalPerspectiveDsl.g:17102:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            {
+            // InternalPerspectiveDsl.g:17102:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalPerspectiveDsl.g:17103:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); 
+            }
+            // InternalPerspectiveDsl.g:17104:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalPerspectiveDsl.g:17104: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"
+    // InternalPerspectiveDsl.g:17112: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 {
+            // InternalPerspectiveDsl.g:17116:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
+            // InternalPerspectiveDsl.g:17117:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
+            {
+            pushFollow(FOLLOW_92);
+            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"
+    // InternalPerspectiveDsl.g:17124: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 {
+            // InternalPerspectiveDsl.g:17128:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
+            // InternalPerspectiveDsl.g:17129:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            {
+            // InternalPerspectiveDsl.g:17129:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalPerspectiveDsl.g:17130:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); 
+            }
+            // InternalPerspectiveDsl.g:17131:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            int alt123=2;
+            int LA123_0 = input.LA(1);
+
+            if ( ((LA123_0>=RULE_ID && LA123_0<=RULE_DECIMAL)||LA123_0==27||LA123_0==31||(LA123_0>=34 && LA123_0<=35)||LA123_0==40||(LA123_0>=45 && LA123_0<=50)||LA123_0==54||LA123_0==90||(LA123_0>=94 && LA123_0<=95)||LA123_0==98||LA123_0==100||(LA123_0>=104 && LA123_0<=112)||LA123_0==114||LA123_0==123||LA123_0==125) ) {
+                alt123=1;
+            }
+            switch (alt123) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:17131: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"
+    // InternalPerspectiveDsl.g:17139: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 {
+            // InternalPerspectiveDsl.g:17143:1: ( rule__XConstructorCall__Group_4__2__Impl )
+            // InternalPerspectiveDsl.g:17144: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"
+    // InternalPerspectiveDsl.g:17150:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
+    public final void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17154:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:17155:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:17155:1: ( ')' )
+            // InternalPerspectiveDsl.g:17156:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:17166: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 {
+            // InternalPerspectiveDsl.g:17170:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
+            // InternalPerspectiveDsl.g:17171:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:17178: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 {
+            // InternalPerspectiveDsl.g:17182:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
+            // InternalPerspectiveDsl.g:17183:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:17183:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalPerspectiveDsl.g:17184:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:17185:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalPerspectiveDsl.g:17185: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"
+    // InternalPerspectiveDsl.g:17193: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 {
+            // InternalPerspectiveDsl.g:17197:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:17198: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"
+    // InternalPerspectiveDsl.g:17204: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 {
+            // InternalPerspectiveDsl.g:17208:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:17209:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:17209:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:17210:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:17211:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            loop124:
+            do {
+                int alt124=2;
+                int LA124_0 = input.LA(1);
+
+                if ( (LA124_0==92) ) {
+                    alt124=1;
+                }
+
+
+                switch (alt124) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:17211:3: rule__XConstructorCall__Group_4_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XConstructorCall__Group_4_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop124;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:17220: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 {
+            // InternalPerspectiveDsl.g:17224:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
+            // InternalPerspectiveDsl.g:17225:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:17232: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 {
+            // InternalPerspectiveDsl.g:17236:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:17237:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:17237:1: ( ',' )
+            // InternalPerspectiveDsl.g:17238:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:17247: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 {
+            // InternalPerspectiveDsl.g:17251:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:17252: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"
+    // InternalPerspectiveDsl.g:17258: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 {
+            // InternalPerspectiveDsl.g:17262:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:17263:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:17263:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:17264:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:17265:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalPerspectiveDsl.g:17265: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"
+    // InternalPerspectiveDsl.g:17274: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 {
+            // InternalPerspectiveDsl.g:17278:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17279:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
+            {
+            pushFollow(FOLLOW_117);
+            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"
+    // InternalPerspectiveDsl.g:17286:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17290:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17291:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:17291:1: ( () )
+            // InternalPerspectiveDsl.g:17292:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:17293:2: ()
+            // InternalPerspectiveDsl.g:17293: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"
+    // InternalPerspectiveDsl.g:17301:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
+    public final void rule__XBooleanLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17305:1: ( rule__XBooleanLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:17306: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"
+    // InternalPerspectiveDsl.g:17312:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
+    public final void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17316:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
+            // InternalPerspectiveDsl.g:17317:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            {
+            // InternalPerspectiveDsl.g:17317:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:17318:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); 
+            }
+            // InternalPerspectiveDsl.g:17319:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalPerspectiveDsl.g:17319: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"
+    // InternalPerspectiveDsl.g:17328: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 {
+            // InternalPerspectiveDsl.g:17332:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17333:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
+            {
+            pushFollow(FOLLOW_118);
+            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"
+    // InternalPerspectiveDsl.g:17340:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XNullLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17344:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17345:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:17345:1: ( () )
+            // InternalPerspectiveDsl.g:17346:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:17347:2: ()
+            // InternalPerspectiveDsl.g:17347: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"
+    // InternalPerspectiveDsl.g:17355:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
+    public final void rule__XNullLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17359:1: ( rule__XNullLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:17360: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"
+    // InternalPerspectiveDsl.g:17366:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
+    public final void rule__XNullLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17370:1: ( ( 'null' ) )
+            // InternalPerspectiveDsl.g:17371:1: ( 'null' )
+            {
+            // InternalPerspectiveDsl.g:17371:1: ( 'null' )
+            // InternalPerspectiveDsl.g:17372:2: 'null'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
+            }
+            match(input,108,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"
+    // InternalPerspectiveDsl.g:17382: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 {
+            // InternalPerspectiveDsl.g:17386:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17387:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
+            {
+            pushFollow(FOLLOW_119);
+            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"
+    // InternalPerspectiveDsl.g:17394:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17398:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17399:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:17399:1: ( () )
+            // InternalPerspectiveDsl.g:17400:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:17401:2: ()
+            // InternalPerspectiveDsl.g:17401: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"
+    // InternalPerspectiveDsl.g:17409:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
+    public final void rule__XNumberLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17413:1: ( rule__XNumberLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:17414: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"
+    // InternalPerspectiveDsl.g:17420:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
+    public final void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17424:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:17425:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:17425:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:17426:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:17427:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:17427: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"
+    // InternalPerspectiveDsl.g:17436: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 {
+            // InternalPerspectiveDsl.g:17440:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17441:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
+            {
+            pushFollow(FOLLOW_15);
+            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"
+    // InternalPerspectiveDsl.g:17448:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XStringLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17452:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17453:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:17453:1: ( () )
+            // InternalPerspectiveDsl.g:17454:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:17455:2: ()
+            // InternalPerspectiveDsl.g:17455: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"
+    // InternalPerspectiveDsl.g:17463:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
+    public final void rule__XStringLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17467:1: ( rule__XStringLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:17468: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"
+    // InternalPerspectiveDsl.g:17474:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
+    public final void rule__XStringLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17478:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:17479:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:17479:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:17480:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:17481:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:17481: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"
+    // InternalPerspectiveDsl.g:17490: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 {
+            // InternalPerspectiveDsl.g:17494:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:17495:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
+            {
+            pushFollow(FOLLOW_120);
+            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"
+    // InternalPerspectiveDsl.g:17502:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17506:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17507:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:17507:1: ( () )
+            // InternalPerspectiveDsl.g:17508:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:17509:2: ()
+            // InternalPerspectiveDsl.g:17509: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"
+    // InternalPerspectiveDsl.g:17517: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 {
+            // InternalPerspectiveDsl.g:17521:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
+            // InternalPerspectiveDsl.g:17522:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalPerspectiveDsl.g:17529:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
+    public final void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17533:1: ( ( 'typeof' ) )
+            // InternalPerspectiveDsl.g:17534:1: ( 'typeof' )
+            {
+            // InternalPerspectiveDsl.g:17534:1: ( 'typeof' )
+            // InternalPerspectiveDsl.g:17535:2: 'typeof'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
+            }
+            match(input,109,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"
+    // InternalPerspectiveDsl.g:17544: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 {
+            // InternalPerspectiveDsl.g:17548:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
+            // InternalPerspectiveDsl.g:17549: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"
+    // InternalPerspectiveDsl.g:17556:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
+    public final void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17560:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:17561:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:17561:1: ( '(' )
+            // InternalPerspectiveDsl.g:17562:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:17571: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 {
+            // InternalPerspectiveDsl.g:17575:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
+            // InternalPerspectiveDsl.g:17576:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
+            {
+            pushFollow(FOLLOW_121);
+            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"
+    // InternalPerspectiveDsl.g:17583:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
+    public final void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17587:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:17588:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            {
+            // InternalPerspectiveDsl.g:17588:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalPerspectiveDsl.g:17589:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); 
+            }
+            // InternalPerspectiveDsl.g:17590:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalPerspectiveDsl.g:17590: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"
+    // InternalPerspectiveDsl.g:17598: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 {
+            // InternalPerspectiveDsl.g:17602:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
+            // InternalPerspectiveDsl.g:17603:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
+            {
+            pushFollow(FOLLOW_121);
+            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"
+    // InternalPerspectiveDsl.g:17610:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
+    public final void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17614:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
+            // InternalPerspectiveDsl.g:17615:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            {
+            // InternalPerspectiveDsl.g:17615:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalPerspectiveDsl.g:17616:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); 
+            }
+            // InternalPerspectiveDsl.g:17617:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            loop125:
+            do {
+                int alt125=2;
+                int LA125_0 = input.LA(1);
+
+                if ( (LA125_0==95) ) {
+                    alt125=1;
+                }
+
+
+                switch (alt125) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:17617:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
+            	    {
+            	    pushFollow(FOLLOW_122);
+            	    rule__XTypeLiteral__ArrayDimensionsAssignment_4();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop125;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:17625:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
+    public final void rule__XTypeLiteral__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17629:1: ( rule__XTypeLiteral__Group__5__Impl )
+            // InternalPerspectiveDsl.g:17630: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"
+    // InternalPerspectiveDsl.g:17636:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
+    public final void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17640:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:17641:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:17641:1: ( ')' )
+            // InternalPerspectiveDsl.g:17642:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:17652: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 {
+            // InternalPerspectiveDsl.g:17656:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
+            // InternalPerspectiveDsl.g:17657:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
+            {
+            pushFollow(FOLLOW_123);
+            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"
+    // InternalPerspectiveDsl.g:17664:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XThrowExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17668:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17669:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:17669:1: ( () )
+            // InternalPerspectiveDsl.g:17670:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:17671:2: ()
+            // InternalPerspectiveDsl.g:17671: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"
+    // InternalPerspectiveDsl.g:17679: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 {
+            // InternalPerspectiveDsl.g:17683:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
+            // InternalPerspectiveDsl.g:17684:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:17691:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
+    public final void rule__XThrowExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17695:1: ( ( 'throw' ) )
+            // InternalPerspectiveDsl.g:17696:1: ( 'throw' )
+            {
+            // InternalPerspectiveDsl.g:17696:1: ( 'throw' )
+            // InternalPerspectiveDsl.g:17697:2: 'throw'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
+            }
+            match(input,110,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"
+    // InternalPerspectiveDsl.g:17706:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
+    public final void rule__XThrowExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17710:1: ( rule__XThrowExpression__Group__2__Impl )
+            // InternalPerspectiveDsl.g:17711: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"
+    // InternalPerspectiveDsl.g:17717:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
+    public final void rule__XThrowExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17721:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:17722:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:17722:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17723:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:17724:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:17724: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"
+    // InternalPerspectiveDsl.g:17733: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 {
+            // InternalPerspectiveDsl.g:17737:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
+            // InternalPerspectiveDsl.g:17738:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
+            {
+            pushFollow(FOLLOW_124);
+            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"
+    // InternalPerspectiveDsl.g:17745:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XReturnExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17749:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17750:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:17750:1: ( () )
+            // InternalPerspectiveDsl.g:17751:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:17752:2: ()
+            // InternalPerspectiveDsl.g:17752: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"
+    // InternalPerspectiveDsl.g:17760: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 {
+            // InternalPerspectiveDsl.g:17764:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
+            // InternalPerspectiveDsl.g:17765:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:17772:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
+    public final void rule__XReturnExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17776:1: ( ( 'return' ) )
+            // InternalPerspectiveDsl.g:17777:1: ( 'return' )
+            {
+            // InternalPerspectiveDsl.g:17777:1: ( 'return' )
+            // InternalPerspectiveDsl.g:17778:2: 'return'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
+            }
+            match(input,111,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"
+    // InternalPerspectiveDsl.g:17787:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
+    public final void rule__XReturnExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17791:1: ( rule__XReturnExpression__Group__2__Impl )
+            // InternalPerspectiveDsl.g:17792: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"
+    // InternalPerspectiveDsl.g:17798:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
+    public final void rule__XReturnExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17802:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
+            // InternalPerspectiveDsl.g:17803:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            {
+            // InternalPerspectiveDsl.g:17803:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalPerspectiveDsl.g:17804:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:17805:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            int alt126=2;
+            alt126 = dfa126.predict(input);
+            switch (alt126) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:17805: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"
+    // InternalPerspectiveDsl.g:17814: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 {
+            // InternalPerspectiveDsl.g:17818:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
+            // InternalPerspectiveDsl.g:17819:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
+            {
+            pushFollow(FOLLOW_125);
+            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"
+    // InternalPerspectiveDsl.g:17826:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17830:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17831:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:17831:1: ( () )
+            // InternalPerspectiveDsl.g:17832:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:17833:2: ()
+            // InternalPerspectiveDsl.g:17833: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"
+    // InternalPerspectiveDsl.g:17841: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 {
+            // InternalPerspectiveDsl.g:17845:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
+            // InternalPerspectiveDsl.g:17846:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:17853:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17857:1: ( ( 'try' ) )
+            // InternalPerspectiveDsl.g:17858:1: ( 'try' )
+            {
+            // InternalPerspectiveDsl.g:17858:1: ( 'try' )
+            // InternalPerspectiveDsl.g:17859:2: 'try'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
+            }
+            match(input,112,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"
+    // InternalPerspectiveDsl.g:17868: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 {
+            // InternalPerspectiveDsl.g:17872:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
+            // InternalPerspectiveDsl.g:17873:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
+            {
+            pushFollow(FOLLOW_126);
+            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"
+    // InternalPerspectiveDsl.g:17880:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17884:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:17885:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:17885:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17886:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:17887:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:17887: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"
+    // InternalPerspectiveDsl.g:17895:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
+    public final void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17899:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:17900: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"
+    // InternalPerspectiveDsl.g:17906:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:17910:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
+            // InternalPerspectiveDsl.g:17911:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            {
+            // InternalPerspectiveDsl.g:17911:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:17912:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); 
+            }
+            // InternalPerspectiveDsl.g:17913:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalPerspectiveDsl.g:17913: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"
+    // InternalPerspectiveDsl.g:17922: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 {
+            // InternalPerspectiveDsl.g:17926:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:17927:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
+            {
+            pushFollow(FOLLOW_127);
+            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"
+    // InternalPerspectiveDsl.g:17934: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 {
+            // InternalPerspectiveDsl.g:17938:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
+            // InternalPerspectiveDsl.g:17939:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            {
+            // InternalPerspectiveDsl.g:17939:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalPerspectiveDsl.g:17940:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            {
+            // InternalPerspectiveDsl.g:17940:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
+            // InternalPerspectiveDsl.g:17941:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:17942:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalPerspectiveDsl.g:17942:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            {
+            pushFollow(FOLLOW_128);
+            rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:17945:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalPerspectiveDsl.g:17946:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:17947:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            loop127:
+            do {
+                int alt127=2;
+                int LA127_0 = input.LA(1);
+
+                if ( (LA127_0==115) ) {
+                    int LA127_2 = input.LA(2);
+
+                    if ( (synpred184_InternalPerspectiveDsl()) ) {
+                        alt127=1;
+                    }
+
+
+                }
+
+
+                switch (alt127) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:17947:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            	    {
+            	    pushFollow(FOLLOW_128);
+            	    rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop127;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:17956: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 {
+            // InternalPerspectiveDsl.g:17960:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:17961: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"
+    // InternalPerspectiveDsl.g:17967: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 {
+            // InternalPerspectiveDsl.g:17971:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:17972:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:17972:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalPerspectiveDsl.g:17973:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:17974:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            int alt128=2;
+            int LA128_0 = input.LA(1);
+
+            if ( (LA128_0==113) ) {
+                int LA128_1 = input.LA(2);
+
+                if ( (synpred185_InternalPerspectiveDsl()) ) {
+                    alt128=1;
+                }
+            }
+            switch (alt128) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:17974: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"
+    // InternalPerspectiveDsl.g:17983: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 {
+            // InternalPerspectiveDsl.g:17987:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
+            // InternalPerspectiveDsl.g:17988:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:17995: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 {
+            // InternalPerspectiveDsl.g:17999:1: ( ( ( 'finally' ) ) )
+            // InternalPerspectiveDsl.g:18000:1: ( ( 'finally' ) )
+            {
+            // InternalPerspectiveDsl.g:18000:1: ( ( 'finally' ) )
+            // InternalPerspectiveDsl.g:18001:2: ( 'finally' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:18002:2: ( 'finally' )
+            // InternalPerspectiveDsl.g:18002:3: 'finally'
+            {
+            match(input,113,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"
+    // InternalPerspectiveDsl.g:18010: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 {
+            // InternalPerspectiveDsl.g:18014:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:18015: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"
+    // InternalPerspectiveDsl.g:18021: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 {
+            // InternalPerspectiveDsl.g:18025:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:18026:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:18026:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalPerspectiveDsl.g:18027:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:18028:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalPerspectiveDsl.g:18028: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"
+    // InternalPerspectiveDsl.g:18037: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 {
+            // InternalPerspectiveDsl.g:18041:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:18042:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:18049: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 {
+            // InternalPerspectiveDsl.g:18053:1: ( ( 'finally' ) )
+            // InternalPerspectiveDsl.g:18054:1: ( 'finally' )
+            {
+            // InternalPerspectiveDsl.g:18054:1: ( 'finally' )
+            // InternalPerspectiveDsl.g:18055:2: 'finally'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
+            }
+            match(input,113,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"
+    // InternalPerspectiveDsl.g:18064: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 {
+            // InternalPerspectiveDsl.g:18068:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:18069: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"
+    // InternalPerspectiveDsl.g:18075: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 {
+            // InternalPerspectiveDsl.g:18079:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:18080:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:18080:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:18081:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:18082:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:18082: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"
+    // InternalPerspectiveDsl.g:18091: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 {
+            // InternalPerspectiveDsl.g:18095:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
+            // InternalPerspectiveDsl.g:18096:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:18103: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 {
+            // InternalPerspectiveDsl.g:18107:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:18108:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:18108:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:18109:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); 
+            }
+            // InternalPerspectiveDsl.g:18110:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:18110: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"
+    // InternalPerspectiveDsl.g:18118: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 {
+            // InternalPerspectiveDsl.g:18122:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
+            // InternalPerspectiveDsl.g:18123:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalPerspectiveDsl.g:18130:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
+    public final void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18134:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:18135:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:18135:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalPerspectiveDsl.g:18136:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:18137:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalPerspectiveDsl.g:18137: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"
+    // InternalPerspectiveDsl.g:18145: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 {
+            // InternalPerspectiveDsl.g:18149:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
+            // InternalPerspectiveDsl.g:18150:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:18157:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18161:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:18162:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:18162:1: ( ')' )
+            // InternalPerspectiveDsl.g:18163:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:18172:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
+    public final void rule__XSynchronizedExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18176:1: ( rule__XSynchronizedExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:18177: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"
+    // InternalPerspectiveDsl.g:18183:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
+    public final void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18187:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:18188:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            {
+            // InternalPerspectiveDsl.g:18188:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:18189:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); 
+            }
+            // InternalPerspectiveDsl.g:18190:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:18190: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"
+    // InternalPerspectiveDsl.g:18199: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 {
+            // InternalPerspectiveDsl.g:18203:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:18204: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"
+    // InternalPerspectiveDsl.g:18210: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 {
+            // InternalPerspectiveDsl.g:18214:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:18215:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:18215:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:18216:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:18217:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:18217: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"
+    // InternalPerspectiveDsl.g:18226: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 {
+            // InternalPerspectiveDsl.g:18230:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:18231:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
+            {
+            pushFollow(FOLLOW_129);
+            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"
+    // InternalPerspectiveDsl.g:18238:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18242:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18243:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:18243:1: ( () )
+            // InternalPerspectiveDsl.g:18244:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:18245:2: ()
+            // InternalPerspectiveDsl.g:18245: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"
+    // InternalPerspectiveDsl.g:18253: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 {
+            // InternalPerspectiveDsl.g:18257:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
+            // InternalPerspectiveDsl.g:18258:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalPerspectiveDsl.g:18265: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 {
+            // InternalPerspectiveDsl.g:18269:1: ( ( 'synchronized' ) )
+            // InternalPerspectiveDsl.g:18270:1: ( 'synchronized' )
+            {
+            // InternalPerspectiveDsl.g:18270:1: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:18271:2: 'synchronized'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
+            }
+            match(input,114,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"
+    // InternalPerspectiveDsl.g:18280: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 {
+            // InternalPerspectiveDsl.g:18284:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:18285: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"
+    // InternalPerspectiveDsl.g:18291:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
+    public final void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18295:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:18296:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:18296:1: ( '(' )
+            // InternalPerspectiveDsl.g:18297:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:18307: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 {
+            // InternalPerspectiveDsl.g:18311:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
+            // InternalPerspectiveDsl.g:18312:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalPerspectiveDsl.g:18319:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
+    public final void rule__XCatchClause__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18323:1: ( ( ( 'catch' ) ) )
+            // InternalPerspectiveDsl.g:18324:1: ( ( 'catch' ) )
+            {
+            // InternalPerspectiveDsl.g:18324:1: ( ( 'catch' ) )
+            // InternalPerspectiveDsl.g:18325:2: ( 'catch' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); 
+            }
+            // InternalPerspectiveDsl.g:18326:2: ( 'catch' )
+            // InternalPerspectiveDsl.g:18326:3: 'catch'
+            {
+            match(input,115,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"
+    // InternalPerspectiveDsl.g:18334: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 {
+            // InternalPerspectiveDsl.g:18338:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
+            // InternalPerspectiveDsl.g:18339:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:18346:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
+    public final void rule__XCatchClause__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18350:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:18351:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:18351:1: ( '(' )
+            // InternalPerspectiveDsl.g:18352:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:18361: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 {
+            // InternalPerspectiveDsl.g:18365:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
+            // InternalPerspectiveDsl.g:18366:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalPerspectiveDsl.g:18373:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
+    public final void rule__XCatchClause__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18377:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:18378:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:18378:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalPerspectiveDsl.g:18379:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:18380:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalPerspectiveDsl.g:18380: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"
+    // InternalPerspectiveDsl.g:18388: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 {
+            // InternalPerspectiveDsl.g:18392:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
+            // InternalPerspectiveDsl.g:18393:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalPerspectiveDsl.g:18400:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
+    public final void rule__XCatchClause__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18404:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:18405:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:18405:1: ( ')' )
+            // InternalPerspectiveDsl.g:18406:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:18415:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
+    public final void rule__XCatchClause__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18419:1: ( rule__XCatchClause__Group__4__Impl )
+            // InternalPerspectiveDsl.g:18420: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"
+    // InternalPerspectiveDsl.g:18426:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
+    public final void rule__XCatchClause__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18430:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
+            // InternalPerspectiveDsl.g:18431:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            {
+            // InternalPerspectiveDsl.g:18431:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalPerspectiveDsl.g:18432:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); 
+            }
+            // InternalPerspectiveDsl.g:18433:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalPerspectiveDsl.g:18433: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"
+    // InternalPerspectiveDsl.g:18442: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 {
+            // InternalPerspectiveDsl.g:18446:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
+            // InternalPerspectiveDsl.g:18447:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
+            {
+            pushFollow(FOLLOW_130);
+            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"
+    // InternalPerspectiveDsl.g:18454:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedName__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18458:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:18459:1: ( ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:18459:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:18460: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"
+    // InternalPerspectiveDsl.g:18469:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
+    public final void rule__QualifiedName__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18473:1: ( rule__QualifiedName__Group__1__Impl )
+            // InternalPerspectiveDsl.g:18474: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"
+    // InternalPerspectiveDsl.g:18480: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 {
+            // InternalPerspectiveDsl.g:18484:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:18485:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:18485:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:18486:2: ( rule__QualifiedName__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:18487:2: ( rule__QualifiedName__Group_1__0 )*
+            loop129:
+            do {
+                int alt129=2;
+                int LA129_0 = input.LA(1);
+
+                if ( (LA129_0==43) ) {
+                    int LA129_2 = input.LA(2);
+
+                    if ( (LA129_2==RULE_ID) ) {
+                        int LA129_3 = input.LA(3);
+
+                        if ( (synpred186_InternalPerspectiveDsl()) ) {
+                            alt129=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt129) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:18487:3: rule__QualifiedName__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_131);
+            	    rule__QualifiedName__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop129;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:18496: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 {
+            // InternalPerspectiveDsl.g:18500:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
+            // InternalPerspectiveDsl.g:18501: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"
+    // InternalPerspectiveDsl.g:18508:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
+    public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18512:1: ( ( ( '.' ) ) )
+            // InternalPerspectiveDsl.g:18513:1: ( ( '.' ) )
+            {
+            // InternalPerspectiveDsl.g:18513:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:18514:2: ( '.' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:18515:2: ( '.' )
+            // InternalPerspectiveDsl.g:18515: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"
+    // InternalPerspectiveDsl.g:18523: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 {
+            // InternalPerspectiveDsl.g:18527:1: ( rule__QualifiedName__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:18528: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"
+    // InternalPerspectiveDsl.g:18534:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18538:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:18539:1: ( ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:18539:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:18540: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"
+    // InternalPerspectiveDsl.g:18550: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 {
+            // InternalPerspectiveDsl.g:18554:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
+            // InternalPerspectiveDsl.g:18555:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
+            {
+            pushFollow(FOLLOW_130);
+            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"
+    // InternalPerspectiveDsl.g:18562: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 {
+            // InternalPerspectiveDsl.g:18566:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
+            // InternalPerspectiveDsl.g:18567:1: ( ( rule__Number__Alternatives_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:18567:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalPerspectiveDsl.g:18568:2: ( rule__Number__Alternatives_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:18569:2: ( rule__Number__Alternatives_1_0 )
+            // InternalPerspectiveDsl.g:18569: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"
+    // InternalPerspectiveDsl.g:18577: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 {
+            // InternalPerspectiveDsl.g:18581:1: ( rule__Number__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:18582: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"
+    // InternalPerspectiveDsl.g:18588: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 {
+            // InternalPerspectiveDsl.g:18592:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:18593:1: ( ( rule__Number__Group_1_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:18593:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:18594:2: ( rule__Number__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getGroup_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:18595:2: ( rule__Number__Group_1_1__0 )?
+            int alt130=2;
+            int LA130_0 = input.LA(1);
+
+            if ( (LA130_0==43) ) {
+                int LA130_1 = input.LA(2);
+
+                if ( ((LA130_1>=RULE_INT && LA130_1<=RULE_DECIMAL)) ) {
+                    alt130=1;
+                }
+            }
+            switch (alt130) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:18595: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"
+    // InternalPerspectiveDsl.g:18604: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 {
+            // InternalPerspectiveDsl.g:18608:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:18609:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
+            {
+            pushFollow(FOLLOW_132);
+            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"
+    // InternalPerspectiveDsl.g:18616:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
+    public final void rule__Number__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18620:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:18621:1: ( '.' )
+            {
+            // InternalPerspectiveDsl.g:18621:1: ( '.' )
+            // InternalPerspectiveDsl.g:18622: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"
+    // InternalPerspectiveDsl.g:18631: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 {
+            // InternalPerspectiveDsl.g:18635:1: ( rule__Number__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:18636: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"
+    // InternalPerspectiveDsl.g:18642: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 {
+            // InternalPerspectiveDsl.g:18646:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:18647:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:18647:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalPerspectiveDsl.g:18648:2: ( rule__Number__Alternatives_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:18649:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalPerspectiveDsl.g:18649: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"
+    // InternalPerspectiveDsl.g:18658: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 {
+            // InternalPerspectiveDsl.g:18662:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
+            // InternalPerspectiveDsl.g:18663:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalPerspectiveDsl.g:18670:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
+    public final void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18674:1: ( ( ruleJvmParameterizedTypeReference ) )
+            // InternalPerspectiveDsl.g:18675:1: ( ruleJvmParameterizedTypeReference )
+            {
+            // InternalPerspectiveDsl.g:18675:1: ( ruleJvmParameterizedTypeReference )
+            // InternalPerspectiveDsl.g:18676: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"
+    // InternalPerspectiveDsl.g:18685: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 {
+            // InternalPerspectiveDsl.g:18689:1: ( rule__JvmTypeReference__Group_0__1__Impl )
+            // InternalPerspectiveDsl.g:18690: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"
+    // InternalPerspectiveDsl.g:18696: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 {
+            // InternalPerspectiveDsl.g:18700:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
+            // InternalPerspectiveDsl.g:18701:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:18701:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalPerspectiveDsl.g:18702:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:18703:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            loop131:
+            do {
+                int alt131=2;
+                int LA131_0 = input.LA(1);
+
+                if ( (LA131_0==95) ) {
+                    int LA131_2 = input.LA(2);
+
+                    if ( (LA131_2==93) ) {
+                        int LA131_3 = input.LA(3);
+
+                        if ( (synpred188_InternalPerspectiveDsl()) ) {
+                            alt131=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt131) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:18703:3: rule__JvmTypeReference__Group_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_122);
+            	    rule__JvmTypeReference__Group_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop131;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:18712: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 {
+            // InternalPerspectiveDsl.g:18716:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
+            // InternalPerspectiveDsl.g:18717: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"
+    // InternalPerspectiveDsl.g:18723: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 {
+            // InternalPerspectiveDsl.g:18727:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:18728:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:18728:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalPerspectiveDsl.g:18729:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:18730:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalPerspectiveDsl.g:18730: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"
+    // InternalPerspectiveDsl.g:18739: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 {
+            // InternalPerspectiveDsl.g:18743:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
+            // InternalPerspectiveDsl.g:18744:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalPerspectiveDsl.g:18751: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 {
+            // InternalPerspectiveDsl.g:18755:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18756:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:18756:1: ( () )
+            // InternalPerspectiveDsl.g:18757:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:18758:2: ()
+            // InternalPerspectiveDsl.g:18758: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"
+    // InternalPerspectiveDsl.g:18766: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 {
+            // InternalPerspectiveDsl.g:18770:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:18771: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"
+    // InternalPerspectiveDsl.g:18777: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 {
+            // InternalPerspectiveDsl.g:18781:1: ( ( ruleArrayBrackets ) )
+            // InternalPerspectiveDsl.g:18782:1: ( ruleArrayBrackets )
+            {
+            // InternalPerspectiveDsl.g:18782:1: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:18783: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"
+    // InternalPerspectiveDsl.g:18793: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 {
+            // InternalPerspectiveDsl.g:18797:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
+            // InternalPerspectiveDsl.g:18798:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
+            {
+            pushFollow(FOLLOW_95);
+            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"
+    // InternalPerspectiveDsl.g:18805:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
+    public final void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18809:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:18810:1: ( '[' )
+            {
+            // InternalPerspectiveDsl.g:18810:1: ( '[' )
+            // InternalPerspectiveDsl.g:18811:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
+            }
+            match(input,95,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"
+    // InternalPerspectiveDsl.g:18820:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
+    public final void rule__ArrayBrackets__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18824:1: ( rule__ArrayBrackets__Group__1__Impl )
+            // InternalPerspectiveDsl.g:18825: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"
+    // InternalPerspectiveDsl.g:18831:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
+    public final void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18835:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:18836:1: ( ']' )
+            {
+            // InternalPerspectiveDsl.g:18836:1: ( ']' )
+            // InternalPerspectiveDsl.g:18837:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
+            }
+            match(input,93,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"
+    // InternalPerspectiveDsl.g:18847: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 {
+            // InternalPerspectiveDsl.g:18851:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
+            // InternalPerspectiveDsl.g:18852:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:18859: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 {
+            // InternalPerspectiveDsl.g:18863:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
+            // InternalPerspectiveDsl.g:18864:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            {
+            // InternalPerspectiveDsl.g:18864:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalPerspectiveDsl.g:18865:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); 
+            }
+            // InternalPerspectiveDsl.g:18866:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            int alt132=2;
+            int LA132_0 = input.LA(1);
+
+            if ( (LA132_0==90) ) {
+                alt132=1;
+            }
+            switch (alt132) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:18866: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"
+    // InternalPerspectiveDsl.g:18874: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 {
+            // InternalPerspectiveDsl.g:18878:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
+            // InternalPerspectiveDsl.g:18879:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:18886:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
+    public final void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18890:1: ( ( '=>' ) )
+            // InternalPerspectiveDsl.g:18891:1: ( '=>' )
+            {
+            // InternalPerspectiveDsl.g:18891:1: ( '=>' )
+            // InternalPerspectiveDsl.g:18892: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"
+    // InternalPerspectiveDsl.g:18901:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
+    public final void rule__XFunctionTypeRef__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18905:1: ( rule__XFunctionTypeRef__Group__2__Impl )
+            // InternalPerspectiveDsl.g:18906: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"
+    // InternalPerspectiveDsl.g:18912:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
+    public final void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18916:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:18917:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            {
+            // InternalPerspectiveDsl.g:18917:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:18918:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); 
+            }
+            // InternalPerspectiveDsl.g:18919:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:18919: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"
+    // InternalPerspectiveDsl.g:18928: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 {
+            // InternalPerspectiveDsl.g:18932:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
+            // InternalPerspectiveDsl.g:18933:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
+            {
+            pushFollow(FOLLOW_133);
+            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"
+    // InternalPerspectiveDsl.g:18940:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
+    public final void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18944:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:18945:1: ( '(' )
+            {
+            // InternalPerspectiveDsl.g:18945:1: ( '(' )
+            // InternalPerspectiveDsl.g:18946:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:18955: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 {
+            // InternalPerspectiveDsl.g:18959:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
+            // InternalPerspectiveDsl.g:18960:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
+            {
+            pushFollow(FOLLOW_133);
+            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"
+    // InternalPerspectiveDsl.g:18967: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 {
+            // InternalPerspectiveDsl.g:18971:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:18972:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:18972:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:18973:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:18974:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            int alt133=2;
+            int LA133_0 = input.LA(1);
+
+            if ( (LA133_0==RULE_ID||LA133_0==31||LA133_0==90) ) {
+                alt133=1;
+            }
+            switch (alt133) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:18974: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"
+    // InternalPerspectiveDsl.g:18982: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 {
+            // InternalPerspectiveDsl.g:18986:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:18987: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"
+    // InternalPerspectiveDsl.g:18993:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
+    public final void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:18997:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:18998:1: ( ')' )
+            {
+            // InternalPerspectiveDsl.g:18998:1: ( ')' )
+            // InternalPerspectiveDsl.g:18999:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
+            }
+            match(input,91,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"
+    // InternalPerspectiveDsl.g:19009: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 {
+            // InternalPerspectiveDsl.g:19013:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
+            // InternalPerspectiveDsl.g:19014:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalPerspectiveDsl.g:19021: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 {
+            // InternalPerspectiveDsl.g:19025:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:19026:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:19026:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:19027:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:19028:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:19028: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"
+    // InternalPerspectiveDsl.g:19036: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 {
+            // InternalPerspectiveDsl.g:19040:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:19041: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"
+    // InternalPerspectiveDsl.g:19047: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 {
+            // InternalPerspectiveDsl.g:19051:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:19052:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            {
+            // InternalPerspectiveDsl.g:19052:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:19053:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:19054:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            loop134:
+            do {
+                int alt134=2;
+                int LA134_0 = input.LA(1);
+
+                if ( (LA134_0==92) ) {
+                    alt134=1;
+                }
+
+
+                switch (alt134) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:19054:3: rule__XFunctionTypeRef__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__XFunctionTypeRef__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop134;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:19063: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 {
+            // InternalPerspectiveDsl.g:19067:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
+            // InternalPerspectiveDsl.g:19068:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:19075: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 {
+            // InternalPerspectiveDsl.g:19079:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:19080:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:19080:1: ( ',' )
+            // InternalPerspectiveDsl.g:19081:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:19090: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 {
+            // InternalPerspectiveDsl.g:19094:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:19095: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"
+    // InternalPerspectiveDsl.g:19101: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 {
+            // InternalPerspectiveDsl.g:19105:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:19106:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:19106:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:19107:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:19108:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:19108: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"
+    // InternalPerspectiveDsl.g:19117: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 {
+            // InternalPerspectiveDsl.g:19121:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
+            // InternalPerspectiveDsl.g:19122:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
+            {
+            pushFollow(FOLLOW_60);
+            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"
+    // InternalPerspectiveDsl.g:19129:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19133:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
+            // InternalPerspectiveDsl.g:19134:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            {
+            // InternalPerspectiveDsl.g:19134:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:19135:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); 
+            }
+            // InternalPerspectiveDsl.g:19136:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalPerspectiveDsl.g:19136: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"
+    // InternalPerspectiveDsl.g:19144:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19148:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
+            // InternalPerspectiveDsl.g:19149: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"
+    // InternalPerspectiveDsl.g:19155: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 {
+            // InternalPerspectiveDsl.g:19159:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:19160:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            {
+            // InternalPerspectiveDsl.g:19160:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:19161:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); 
+            }
+            // InternalPerspectiveDsl.g:19162:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            int alt135=2;
+            alt135 = dfa135.predict(input);
+            switch (alt135) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:19162: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"
+    // InternalPerspectiveDsl.g:19171: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 {
+            // InternalPerspectiveDsl.g:19175:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
+            // InternalPerspectiveDsl.g:19176:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:19183:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19187:1: ( ( ( '<' ) ) )
+            // InternalPerspectiveDsl.g:19188:1: ( ( '<' ) )
+            {
+            // InternalPerspectiveDsl.g:19188:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:19189:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:19190:2: ( '<' )
+            // InternalPerspectiveDsl.g:19190: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"
+    // InternalPerspectiveDsl.g:19198: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 {
+            // InternalPerspectiveDsl.g:19202:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
+            // InternalPerspectiveDsl.g:19203:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:19210: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 {
+            // InternalPerspectiveDsl.g:19214:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:19215:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            {
+            // InternalPerspectiveDsl.g:19215:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:19216:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:19217:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:19217: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"
+    // InternalPerspectiveDsl.g:19225: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 {
+            // InternalPerspectiveDsl.g:19229:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
+            // InternalPerspectiveDsl.g:19230:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:19237: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 {
+            // InternalPerspectiveDsl.g:19241:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
+            // InternalPerspectiveDsl.g:19242:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            {
+            // InternalPerspectiveDsl.g:19242:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:19243:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); 
+            }
+            // InternalPerspectiveDsl.g:19244:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            loop136:
+            do {
+                int alt136=2;
+                int LA136_0 = input.LA(1);
+
+                if ( (LA136_0==92) ) {
+                    alt136=1;
+                }
+
+
+                switch (alt136) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:19244:3: rule__JvmParameterizedTypeReference__Group_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__JvmParameterizedTypeReference__Group_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop136;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:19252: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 {
+            // InternalPerspectiveDsl.g:19256:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
+            // InternalPerspectiveDsl.g:19257:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
+            {
+            pushFollow(FOLLOW_130);
+            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"
+    // InternalPerspectiveDsl.g:19264:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19268:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:19269:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:19269:1: ( '>' )
+            // InternalPerspectiveDsl.g:19270: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"
+    // InternalPerspectiveDsl.g:19279: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 {
+            // InternalPerspectiveDsl.g:19283:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
+            // InternalPerspectiveDsl.g:19284: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"
+    // InternalPerspectiveDsl.g:19290: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 {
+            // InternalPerspectiveDsl.g:19294:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
+            // InternalPerspectiveDsl.g:19295:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            {
+            // InternalPerspectiveDsl.g:19295:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalPerspectiveDsl.g:19296:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); 
+            }
+            // InternalPerspectiveDsl.g:19297:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            loop137:
+            do {
+                int alt137=2;
+                int LA137_0 = input.LA(1);
+
+                if ( (LA137_0==43) ) {
+                    int LA137_2 = input.LA(2);
+
+                    if ( (LA137_2==RULE_ID) ) {
+                        int LA137_3 = input.LA(3);
+
+                        if ( (synpred194_InternalPerspectiveDsl()) ) {
+                            alt137=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt137) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:19297:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+            	    {
+            	    pushFollow(FOLLOW_131);
+            	    rule__JvmParameterizedTypeReference__Group_1_4__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop137;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:19306: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 {
+            // InternalPerspectiveDsl.g:19310:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
+            // InternalPerspectiveDsl.g:19311:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:19318:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19322:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:19323:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:19323:1: ( ',' )
+            // InternalPerspectiveDsl.g:19324:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:19333: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 {
+            // InternalPerspectiveDsl.g:19337:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
+            // InternalPerspectiveDsl.g:19338: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"
+    // InternalPerspectiveDsl.g:19344: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 {
+            // InternalPerspectiveDsl.g:19348:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
+            // InternalPerspectiveDsl.g:19349:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:19349:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:19350:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:19351:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:19351: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"
+    // InternalPerspectiveDsl.g:19360: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 {
+            // InternalPerspectiveDsl.g:19364:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
+            // InternalPerspectiveDsl.g:19365: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"
+    // InternalPerspectiveDsl.g:19372: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 {
+            // InternalPerspectiveDsl.g:19376:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
+            // InternalPerspectiveDsl.g:19377:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:19377:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalPerspectiveDsl.g:19378:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); 
+            }
+            // InternalPerspectiveDsl.g:19379:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalPerspectiveDsl.g:19379: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"
+    // InternalPerspectiveDsl.g:19387: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 {
+            // InternalPerspectiveDsl.g:19391:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
+            // InternalPerspectiveDsl.g:19392:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
+            {
+            pushFollow(FOLLOW_60);
+            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"
+    // InternalPerspectiveDsl.g:19399: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 {
+            // InternalPerspectiveDsl.g:19403:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
+            // InternalPerspectiveDsl.g:19404:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            {
+            // InternalPerspectiveDsl.g:19404:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalPerspectiveDsl.g:19405:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); 
+            }
+            // InternalPerspectiveDsl.g:19406:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalPerspectiveDsl.g:19406: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"
+    // InternalPerspectiveDsl.g:19414: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 {
+            // InternalPerspectiveDsl.g:19418:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
+            // InternalPerspectiveDsl.g:19419: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"
+    // InternalPerspectiveDsl.g:19425: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 {
+            // InternalPerspectiveDsl.g:19429:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
+            // InternalPerspectiveDsl.g:19430:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            {
+            // InternalPerspectiveDsl.g:19430:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalPerspectiveDsl.g:19431:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); 
+            }
+            // InternalPerspectiveDsl.g:19432:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            int alt138=2;
+            alt138 = dfa138.predict(input);
+            switch (alt138) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:19432: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"
+    // InternalPerspectiveDsl.g:19441: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 {
+            // InternalPerspectiveDsl.g:19445:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
+            // InternalPerspectiveDsl.g:19446: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"
+    // InternalPerspectiveDsl.g:19452: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 {
+            // InternalPerspectiveDsl.g:19456:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:19457:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            {
+            // InternalPerspectiveDsl.g:19457:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalPerspectiveDsl.g:19458:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:19459:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalPerspectiveDsl.g:19459: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"
+    // InternalPerspectiveDsl.g:19468: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 {
+            // InternalPerspectiveDsl.g:19472:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
+            // InternalPerspectiveDsl.g:19473:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+            {
+            pushFollow(FOLLOW_130);
+            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"
+    // InternalPerspectiveDsl.g:19480: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 {
+            // InternalPerspectiveDsl.g:19484:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:19485:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:19485:1: ( () )
+            // InternalPerspectiveDsl.g:19486:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:19487:2: ()
+            // InternalPerspectiveDsl.g:19487: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"
+    // InternalPerspectiveDsl.g:19495: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 {
+            // InternalPerspectiveDsl.g:19499:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:19500: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"
+    // InternalPerspectiveDsl.g:19506: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 {
+            // InternalPerspectiveDsl.g:19510:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:19511:1: ( '.' )
+            {
+            // InternalPerspectiveDsl.g:19511:1: ( '.' )
+            // InternalPerspectiveDsl.g:19512: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"
+    // InternalPerspectiveDsl.g:19522: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 {
+            // InternalPerspectiveDsl.g:19526:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
+            // InternalPerspectiveDsl.g:19527:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:19534: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 {
+            // InternalPerspectiveDsl.g:19538:1: ( ( ( '<' ) ) )
+            // InternalPerspectiveDsl.g:19539:1: ( ( '<' ) )
+            {
+            // InternalPerspectiveDsl.g:19539:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:19540:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:19541:2: ( '<' )
+            // InternalPerspectiveDsl.g:19541: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"
+    // InternalPerspectiveDsl.g:19549: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 {
+            // InternalPerspectiveDsl.g:19553:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
+            // InternalPerspectiveDsl.g:19554:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:19561: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 {
+            // InternalPerspectiveDsl.g:19565:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
+            // InternalPerspectiveDsl.g:19566:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:19566:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalPerspectiveDsl.g:19567:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:19568:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalPerspectiveDsl.g:19568: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"
+    // InternalPerspectiveDsl.g:19576: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 {
+            // InternalPerspectiveDsl.g:19580:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
+            // InternalPerspectiveDsl.g:19581:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalPerspectiveDsl.g:19588: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 {
+            // InternalPerspectiveDsl.g:19592:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
+            // InternalPerspectiveDsl.g:19593:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            {
+            // InternalPerspectiveDsl.g:19593:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalPerspectiveDsl.g:19594:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); 
+            }
+            // InternalPerspectiveDsl.g:19595:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            loop139:
+            do {
+                int alt139=2;
+                int LA139_0 = input.LA(1);
+
+                if ( (LA139_0==92) ) {
+                    alt139=1;
+                }
+
+
+                switch (alt139) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:19595:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
+            	    {
+            	    pushFollow(FOLLOW_52);
+            	    rule__JvmParameterizedTypeReference__Group_1_4_2_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop139;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:19603: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 {
+            // InternalPerspectiveDsl.g:19607:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
+            // InternalPerspectiveDsl.g:19608: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"
+    // InternalPerspectiveDsl.g:19614: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 {
+            // InternalPerspectiveDsl.g:19618:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:19619:1: ( '>' )
+            {
+            // InternalPerspectiveDsl.g:19619:1: ( '>' )
+            // InternalPerspectiveDsl.g:19620: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"
+    // InternalPerspectiveDsl.g:19630: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 {
+            // InternalPerspectiveDsl.g:19634:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
+            // InternalPerspectiveDsl.g:19635:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:19642: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 {
+            // InternalPerspectiveDsl.g:19646:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:19647:1: ( ',' )
+            {
+            // InternalPerspectiveDsl.g:19647:1: ( ',' )
+            // InternalPerspectiveDsl.g:19648:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:19657: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 {
+            // InternalPerspectiveDsl.g:19661:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
+            // InternalPerspectiveDsl.g:19662: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"
+    // InternalPerspectiveDsl.g:19668: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 {
+            // InternalPerspectiveDsl.g:19672:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
+            // InternalPerspectiveDsl.g:19673:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            {
+            // InternalPerspectiveDsl.g:19673:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalPerspectiveDsl.g:19674:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); 
+            }
+            // InternalPerspectiveDsl.g:19675:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalPerspectiveDsl.g:19675: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"
+    // InternalPerspectiveDsl.g:19684: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 {
+            // InternalPerspectiveDsl.g:19688:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
+            // InternalPerspectiveDsl.g:19689:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalPerspectiveDsl.g:19696:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
+    public final void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19700:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:19701:1: ( () )
+            {
+            // InternalPerspectiveDsl.g:19701:1: ( () )
+            // InternalPerspectiveDsl.g:19702:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); 
+            }
+            // InternalPerspectiveDsl.g:19703:2: ()
+            // InternalPerspectiveDsl.g:19703: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"
+    // InternalPerspectiveDsl.g:19711: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 {
+            // InternalPerspectiveDsl.g:19715:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
+            // InternalPerspectiveDsl.g:19716:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
+            {
+            pushFollow(FOLLOW_134);
+            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"
+    // InternalPerspectiveDsl.g:19723:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
+    public final void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19727:1: ( ( '?' ) )
+            // InternalPerspectiveDsl.g:19728:1: ( '?' )
+            {
+            // InternalPerspectiveDsl.g:19728:1: ( '?' )
+            // InternalPerspectiveDsl.g:19729:2: '?'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
+            }
+            match(input,116,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"
+    // InternalPerspectiveDsl.g:19738:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
+    public final void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19742:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
+            // InternalPerspectiveDsl.g:19743: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"
+    // InternalPerspectiveDsl.g:19749:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
+    public final void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19753:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
+            // InternalPerspectiveDsl.g:19754:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            {
+            // InternalPerspectiveDsl.g:19754:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalPerspectiveDsl.g:19755:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); 
+            }
+            // InternalPerspectiveDsl.g:19756:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            int alt140=2;
+            int LA140_0 = input.LA(1);
+
+            if ( (LA140_0==45||LA140_0==49) ) {
+                alt140=1;
+            }
+            switch (alt140) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:19756: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"
+    // InternalPerspectiveDsl.g:19765: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 {
+            // InternalPerspectiveDsl.g:19769:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
+            // InternalPerspectiveDsl.g:19770:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
+            {
+            pushFollow(FOLLOW_135);
+            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"
+    // InternalPerspectiveDsl.g:19777: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 {
+            // InternalPerspectiveDsl.g:19781:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
+            // InternalPerspectiveDsl.g:19782:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            {
+            // InternalPerspectiveDsl.g:19782:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:19783:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:19784:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:19784: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"
+    // InternalPerspectiveDsl.g:19792: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 {
+            // InternalPerspectiveDsl.g:19796:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
+            // InternalPerspectiveDsl.g:19797: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"
+    // InternalPerspectiveDsl.g:19803: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 {
+            // InternalPerspectiveDsl.g:19807:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
+            // InternalPerspectiveDsl.g:19808:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            {
+            // InternalPerspectiveDsl.g:19808:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalPerspectiveDsl.g:19809:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); 
+            }
+            // InternalPerspectiveDsl.g:19810:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            loop141:
+            do {
+                int alt141=2;
+                int LA141_0 = input.LA(1);
+
+                if ( (LA141_0==117) ) {
+                    alt141=1;
+                }
+
+
+                switch (alt141) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:19810:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
+            	    {
+            	    pushFollow(FOLLOW_136);
+            	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop141;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:19819: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 {
+            // InternalPerspectiveDsl.g:19823:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
+            // InternalPerspectiveDsl.g:19824:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
+            {
+            pushFollow(FOLLOW_135);
+            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"
+    // InternalPerspectiveDsl.g:19831: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 {
+            // InternalPerspectiveDsl.g:19835:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
+            // InternalPerspectiveDsl.g:19836:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            {
+            // InternalPerspectiveDsl.g:19836:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalPerspectiveDsl.g:19837:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:19838:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalPerspectiveDsl.g:19838: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"
+    // InternalPerspectiveDsl.g:19846: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 {
+            // InternalPerspectiveDsl.g:19850:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
+            // InternalPerspectiveDsl.g:19851: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"
+    // InternalPerspectiveDsl.g:19857: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 {
+            // InternalPerspectiveDsl.g:19861:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
+            // InternalPerspectiveDsl.g:19862:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            {
+            // InternalPerspectiveDsl.g:19862:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalPerspectiveDsl.g:19863:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); 
+            }
+            // InternalPerspectiveDsl.g:19864:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            loop142:
+            do {
+                int alt142=2;
+                int LA142_0 = input.LA(1);
+
+                if ( (LA142_0==117) ) {
+                    alt142=1;
+                }
+
+
+                switch (alt142) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:19864:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
+            	    {
+            	    pushFollow(FOLLOW_136);
+            	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop142;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:19873: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 {
+            // InternalPerspectiveDsl.g:19877:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
+            // InternalPerspectiveDsl.g:19878:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:19885:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
+    public final void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19889:1: ( ( 'extends' ) )
+            // InternalPerspectiveDsl.g:19890:1: ( 'extends' )
+            {
+            // InternalPerspectiveDsl.g:19890:1: ( 'extends' )
+            // InternalPerspectiveDsl.g:19891: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"
+    // InternalPerspectiveDsl.g:19900:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
+    public final void rule__JvmUpperBound__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19904:1: ( rule__JvmUpperBound__Group__1__Impl )
+            // InternalPerspectiveDsl.g:19905: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"
+    // InternalPerspectiveDsl.g:19911:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19915:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:19916:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:19916:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:19917:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:19918:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:19918: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"
+    // InternalPerspectiveDsl.g:19927: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 {
+            // InternalPerspectiveDsl.g:19931:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
+            // InternalPerspectiveDsl.g:19932:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:19939:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
+    public final void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19943:1: ( ( '&' ) )
+            // InternalPerspectiveDsl.g:19944:1: ( '&' )
+            {
+            // InternalPerspectiveDsl.g:19944:1: ( '&' )
+            // InternalPerspectiveDsl.g:19945:2: '&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+            match(input,117,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"
+    // InternalPerspectiveDsl.g:19954:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
+    public final void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19958:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
+            // InternalPerspectiveDsl.g:19959: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"
+    // InternalPerspectiveDsl.g:19965:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19969:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:19970:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:19970:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:19971:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:19972:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:19972: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"
+    // InternalPerspectiveDsl.g:19981: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 {
+            // InternalPerspectiveDsl.g:19985:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
+            // InternalPerspectiveDsl.g:19986:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:19993:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
+    public final void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:19997:1: ( ( 'super' ) )
+            // InternalPerspectiveDsl.g:19998:1: ( 'super' )
+            {
+            // InternalPerspectiveDsl.g:19998:1: ( 'super' )
+            // InternalPerspectiveDsl.g:19999: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"
+    // InternalPerspectiveDsl.g:20008:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
+    public final void rule__JvmLowerBound__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20012:1: ( rule__JvmLowerBound__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20013: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"
+    // InternalPerspectiveDsl.g:20019:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20023:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20024:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:20024:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20025:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:20026:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20026: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"
+    // InternalPerspectiveDsl.g:20035: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 {
+            // InternalPerspectiveDsl.g:20039:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
+            // InternalPerspectiveDsl.g:20040:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalPerspectiveDsl.g:20047:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
+    public final void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20051:1: ( ( '&' ) )
+            // InternalPerspectiveDsl.g:20052:1: ( '&' )
+            {
+            // InternalPerspectiveDsl.g:20052:1: ( '&' )
+            // InternalPerspectiveDsl.g:20053:2: '&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+            match(input,117,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"
+    // InternalPerspectiveDsl.g:20062:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
+    public final void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20066:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20067: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"
+    // InternalPerspectiveDsl.g:20073:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20077:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20078:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            {
+            // InternalPerspectiveDsl.g:20078:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20079:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalPerspectiveDsl.g:20080:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20080: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"
+    // InternalPerspectiveDsl.g:20089: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 {
+            // InternalPerspectiveDsl.g:20093:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
+            // InternalPerspectiveDsl.g:20094:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
+            {
+            pushFollow(FOLLOW_130);
+            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"
+    // InternalPerspectiveDsl.g:20101:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20105:1: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:20106:1: ( ruleQualifiedName )
+            {
+            // InternalPerspectiveDsl.g:20106:1: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:20107: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"
+    // InternalPerspectiveDsl.g:20116: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 {
+            // InternalPerspectiveDsl.g:20120:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
+            // InternalPerspectiveDsl.g:20121:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
+            {
+            pushFollow(FOLLOW_137);
+            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"
+    // InternalPerspectiveDsl.g:20128:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20132:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:20133:1: ( '.' )
+            {
+            // InternalPerspectiveDsl.g:20133:1: ( '.' )
+            // InternalPerspectiveDsl.g:20134: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"
+    // InternalPerspectiveDsl.g:20143:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
+    public final void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20147:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
+            // InternalPerspectiveDsl.g:20148: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"
+    // InternalPerspectiveDsl.g:20154:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20158:1: ( ( '*' ) )
+            // InternalPerspectiveDsl.g:20159:1: ( '*' )
+            {
+            // InternalPerspectiveDsl.g:20159:1: ( '*' )
+            // InternalPerspectiveDsl.g:20160: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"
+    // InternalPerspectiveDsl.g:20170: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 {
+            // InternalPerspectiveDsl.g:20174:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
+            // InternalPerspectiveDsl.g:20175:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
+            {
+            pushFollow(FOLLOW_130);
+            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"
+    // InternalPerspectiveDsl.g:20182:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20186:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:20187:1: ( ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:20187:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:20188: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"
+    // InternalPerspectiveDsl.g:20197:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
+    public final void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20201:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20202: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"
+    // InternalPerspectiveDsl.g:20208:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
+    public final void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20212:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:20213:1: ( '.' )
+            {
+            // InternalPerspectiveDsl.g:20213:1: ( '.' )
+            // InternalPerspectiveDsl.g:20214: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__Perspective__UnorderedGroup_5"
+    // InternalPerspectiveDsl.g:20224:1: rule__Perspective__UnorderedGroup_5 : ( rule__Perspective__UnorderedGroup_5__0 )? ;
+    public final void rule__Perspective__UnorderedGroup_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+        	
+        try {
+            // InternalPerspectiveDsl.g:20229:1: ( ( rule__Perspective__UnorderedGroup_5__0 )? )
+            // InternalPerspectiveDsl.g:20230:2: ( rule__Perspective__UnorderedGroup_5__0 )?
+            {
+            // InternalPerspectiveDsl.g:20230:2: ( rule__Perspective__UnorderedGroup_5__0 )?
+            int alt143=2;
+            int LA143_0 = input.LA(1);
+
+            if ( LA143_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
+                alt143=1;
+            }
+            else if ( LA143_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
+                alt143=1;
+            }
+            else if ( LA143_0 == 61 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2) ) {
+                alt143=1;
+            }
+            switch (alt143) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__Perspective__UnorderedGroup_5__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Perspective__UnorderedGroup_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__UnorderedGroup_5"
+
+
+    // $ANTLR start "rule__Perspective__UnorderedGroup_5__Impl"
+    // InternalPerspectiveDsl.g:20238:1: rule__Perspective__UnorderedGroup_5__Impl : ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) ) ;
+    public final void rule__Perspective__UnorderedGroup_5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalPerspectiveDsl.g:20243:1: ( ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:20244:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:20244:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
+            int alt144=3;
+            int LA144_0 = input.LA(1);
+
+            if ( LA144_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
+                alt144=1;
+            }
+            else if ( LA144_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
+                alt144=2;
+            }
+            else if ( LA144_0 == 61 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2) ) {
+                alt144=3;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 144, 0, input);
+
+                throw nvae;
+            }
+            switch (alt144) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:20245:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20245:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20246:4: {...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__Perspective__UnorderedGroup_5__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)");
+                    }
+                    // InternalPerspectiveDsl.g:20246:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20247:5: ( ( rule__Perspective__Group_5_0__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20253:5: ( ( rule__Perspective__Group_5_0__0 ) )
+                    // InternalPerspectiveDsl.g:20254:6: ( rule__Perspective__Group_5_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveAccess().getGroup_5_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:20255:6: ( rule__Perspective__Group_5_0__0 )
+                    // InternalPerspectiveDsl.g:20255:7: rule__Perspective__Group_5_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Perspective__Group_5_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveAccess().getGroup_5_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:20260:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20260:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20261:4: {...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__Perspective__UnorderedGroup_5__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1)");
+                    }
+                    // InternalPerspectiveDsl.g:20261:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20262:5: ( ( rule__Perspective__Group_5_1__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20268:5: ( ( rule__Perspective__Group_5_1__0 ) )
+                    // InternalPerspectiveDsl.g:20269:6: ( rule__Perspective__Group_5_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveAccess().getGroup_5_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:20270:6: ( rule__Perspective__Group_5_1__0 )
+                    // InternalPerspectiveDsl.g:20270:7: rule__Perspective__Group_5_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Perspective__Group_5_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveAccess().getGroup_5_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:20275:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20275:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20276:4: {...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__Perspective__UnorderedGroup_5__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2)");
+                    }
+                    // InternalPerspectiveDsl.g:20276:107: ( ( ( rule__Perspective__Group_5_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20277:5: ( ( rule__Perspective__Group_5_2__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20283:5: ( ( rule__Perspective__Group_5_2__0 ) )
+                    // InternalPerspectiveDsl.g:20284:6: ( rule__Perspective__Group_5_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveAccess().getGroup_5_2()); 
+                    }
+                    // InternalPerspectiveDsl.g:20285:6: ( rule__Perspective__Group_5_2__0 )
+                    // InternalPerspectiveDsl.g:20285:7: rule__Perspective__Group_5_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Perspective__Group_5_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveAccess().getGroup_5_2()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__UnorderedGroup_5__Impl"
+
+
+    // $ANTLR start "rule__Perspective__UnorderedGroup_5__0"
+    // InternalPerspectiveDsl.g:20298:1: rule__Perspective__UnorderedGroup_5__0 : rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )? ;
+    public final void rule__Perspective__UnorderedGroup_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20302:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )? )
+            // InternalPerspectiveDsl.g:20303:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )?
+            {
+            pushFollow(FOLLOW_138);
+            rule__Perspective__UnorderedGroup_5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20304:2: ( rule__Perspective__UnorderedGroup_5__1 )?
+            int alt145=2;
+            int LA145_0 = input.LA(1);
+
+            if ( LA145_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
+                alt145=1;
+            }
+            else if ( LA145_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
+                alt145=1;
+            }
+            else if ( LA145_0 == 61 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2) ) {
+                alt145=1;
+            }
+            switch (alt145) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__Perspective__UnorderedGroup_5__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Perspective__UnorderedGroup_5__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__UnorderedGroup_5__0"
+
+
+    // $ANTLR start "rule__Perspective__UnorderedGroup_5__1"
+    // InternalPerspectiveDsl.g:20310:1: rule__Perspective__UnorderedGroup_5__1 : rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )? ;
+    public final void rule__Perspective__UnorderedGroup_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20314:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )? )
+            // InternalPerspectiveDsl.g:20315:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )?
+            {
+            pushFollow(FOLLOW_138);
+            rule__Perspective__UnorderedGroup_5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20316:2: ( rule__Perspective__UnorderedGroup_5__2 )?
+            int alt146=2;
+            int LA146_0 = input.LA(1);
+
+            if ( LA146_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
+                alt146=1;
+            }
+            else if ( LA146_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
+                alt146=1;
+            }
+            else if ( LA146_0 == 61 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2) ) {
+                alt146=1;
+            }
+            switch (alt146) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__Perspective__UnorderedGroup_5__2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Perspective__UnorderedGroup_5__2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__UnorderedGroup_5__1"
+
+
+    // $ANTLR start "rule__Perspective__UnorderedGroup_5__2"
+    // InternalPerspectiveDsl.g:20322:1: rule__Perspective__UnorderedGroup_5__2 : rule__Perspective__UnorderedGroup_5__Impl ;
+    public final void rule__Perspective__UnorderedGroup_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20326:1: ( rule__Perspective__UnorderedGroup_5__Impl )
+            // InternalPerspectiveDsl.g:20327:2: rule__Perspective__UnorderedGroup_5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Perspective__UnorderedGroup_5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__UnorderedGroup_5__2"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3"
+    // InternalPerspectiveDsl.g:20334:1: rule__PerspectiveSashContainer__UnorderedGroup_3 : ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )? ;
+    public final void rule__PerspectiveSashContainer__UnorderedGroup_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+        	
+        try {
+            // InternalPerspectiveDsl.g:20339:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )? )
+            // InternalPerspectiveDsl.g:20340:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
+            {
+            // InternalPerspectiveDsl.g:20340:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
+            int alt147=2;
+            int LA147_0 = input.LA(1);
+
+            if ( LA147_0 == 63 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
+                alt147=1;
+            }
+            else if ( LA147_0 == 64 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
+                alt147=1;
+            }
+            else if ( LA147_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
+                alt147=1;
+            }
+            else if ( LA147_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
+                alt147=1;
+            }
+            switch (alt147) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectiveSashContainer__UnorderedGroup_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSashContainer__UnorderedGroup_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__UnorderedGroup_3"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl"
+    // InternalPerspectiveDsl.g:20348:1: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) ) ;
+    public final void rule__PerspectiveSashContainer__UnorderedGroup_3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalPerspectiveDsl.g:20353:1: ( ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:20354:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:20354:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) )
+            int alt148=4;
+            int LA148_0 = input.LA(1);
+
+            if ( LA148_0 == 63 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
+                alt148=1;
+            }
+            else if ( LA148_0 == 64 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
+                alt148=2;
+            }
+            else if ( LA148_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
+                alt148=3;
+            }
+            else if ( LA148_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
+                alt148=4;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 148, 0, input);
+
+                throw nvae;
+            }
+            switch (alt148) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:20355:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20355:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20356:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0)");
+                    }
+                    // InternalPerspectiveDsl.g:20356:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20357:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20363:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:20364:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:20365:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:20365:7: rule__PerspectiveSashContainer__Group_3_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSashContainer__Group_3_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:20370:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20370:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20371:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1)");
+                    }
+                    // InternalPerspectiveDsl.g:20371:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20372:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20378:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:20379:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:20380:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:20380:7: rule__PerspectiveSashContainer__Group_3_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSashContainer__Group_3_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:20385:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20385:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20386:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2)");
+                    }
+                    // InternalPerspectiveDsl.g:20386:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20387:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20393:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:20394:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); 
+                    }
+                    // InternalPerspectiveDsl.g:20395:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:20395:7: rule__PerspectiveSashContainer__Group_3_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSashContainer__Group_3_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalPerspectiveDsl.g:20400:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20400:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20401:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3)");
+                    }
+                    // InternalPerspectiveDsl.g:20401:120: ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:20402:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20408:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:20409:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_3()); 
+                    }
+                    // InternalPerspectiveDsl.g:20410:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:20410:7: rule__PerspectiveSashContainer__Group_3_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSashContainer__Group_3_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_3()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__0"
+    // InternalPerspectiveDsl.g:20423:1: rule__PerspectiveSashContainer__UnorderedGroup_3__0 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )? ;
+    public final void rule__PerspectiveSashContainer__UnorderedGroup_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20427:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )? )
+            // InternalPerspectiveDsl.g:20428:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
+            {
+            pushFollow(FOLLOW_139);
+            rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20429:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
+            int alt149=2;
+            int LA149_0 = input.LA(1);
+
+            if ( LA149_0 == 63 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
+                alt149=1;
+            }
+            else if ( LA149_0 == 64 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
+                alt149=1;
+            }
+            else if ( LA149_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
+                alt149=1;
+            }
+            else if ( LA149_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
+                alt149=1;
+            }
+            switch (alt149) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectiveSashContainer__UnorderedGroup_3__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSashContainer__UnorderedGroup_3__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__UnorderedGroup_3__0"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__1"
+    // InternalPerspectiveDsl.g:20435:1: rule__PerspectiveSashContainer__UnorderedGroup_3__1 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )? ;
+    public final void rule__PerspectiveSashContainer__UnorderedGroup_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20439:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )? )
+            // InternalPerspectiveDsl.g:20440:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
+            {
+            pushFollow(FOLLOW_139);
+            rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20441:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
+            int alt150=2;
+            int LA150_0 = input.LA(1);
+
+            if ( LA150_0 == 63 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
+                alt150=1;
+            }
+            else if ( LA150_0 == 64 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
+                alt150=1;
+            }
+            else if ( LA150_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
+                alt150=1;
+            }
+            else if ( LA150_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
+                alt150=1;
+            }
+            switch (alt150) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectiveSashContainer__UnorderedGroup_3__2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSashContainer__UnorderedGroup_3__2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__UnorderedGroup_3__1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__2"
+    // InternalPerspectiveDsl.g:20447:1: rule__PerspectiveSashContainer__UnorderedGroup_3__2 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )? ;
+    public final void rule__PerspectiveSashContainer__UnorderedGroup_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20451:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )? )
+            // InternalPerspectiveDsl.g:20452:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
+            {
+            pushFollow(FOLLOW_139);
+            rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20453:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
+            int alt151=2;
+            int LA151_0 = input.LA(1);
+
+            if ( LA151_0 == 63 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
+                alt151=1;
+            }
+            else if ( LA151_0 == 64 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
+                alt151=1;
+            }
+            else if ( LA151_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
+                alt151=1;
+            }
+            else if ( LA151_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
+                alt151=1;
+            }
+            switch (alt151) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectiveSashContainer__UnorderedGroup_3__3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSashContainer__UnorderedGroup_3__3();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__UnorderedGroup_3__2"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__3"
+    // InternalPerspectiveDsl.g:20459:1: rule__PerspectiveSashContainer__UnorderedGroup_3__3 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ;
+    public final void rule__PerspectiveSashContainer__UnorderedGroup_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20463:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl )
+            // InternalPerspectiveDsl.g:20464:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__UnorderedGroup_3__3"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3"
+    // InternalPerspectiveDsl.g:20471:1: rule__PerspectivePartStack__UnorderedGroup_3 : ( rule__PerspectivePartStack__UnorderedGroup_3__0 )? ;
+    public final void rule__PerspectivePartStack__UnorderedGroup_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+        	
+        try {
+            // InternalPerspectiveDsl.g:20476:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3__0 )? )
+            // InternalPerspectiveDsl.g:20477:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
+            {
+            // InternalPerspectiveDsl.g:20477:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
+            int alt152=2;
+            int LA152_0 = input.LA(1);
+
+            if ( LA152_0 == 64 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
+                alt152=1;
+            }
+            else if ( LA152_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+                alt152=1;
+            }
+            else if ( LA152_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                alt152=1;
+            }
+            switch (alt152) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectivePartStack__UnorderedGroup_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePartStack__UnorderedGroup_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__UnorderedGroup_3"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__Impl"
+    // InternalPerspectiveDsl.g:20485:1: rule__PerspectivePartStack__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) ) ;
+    public final void rule__PerspectivePartStack__UnorderedGroup_3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalPerspectiveDsl.g:20490:1: ( ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:20491:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:20491:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) )
+            int alt153=3;
+            int LA153_0 = input.LA(1);
+
+            if ( LA153_0 == 64 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
+                alt153=1;
+            }
+            else if ( LA153_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+                alt153=2;
+            }
+            else if ( LA153_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                alt153=3;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 153, 0, input);
+
+                throw nvae;
+            }
+            switch (alt153) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:20492:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20492:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20493:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectivePartStack__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0)");
+                    }
+                    // InternalPerspectiveDsl.g:20493:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20494:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20500:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:20501:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:20502:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:20502:7: rule__PerspectivePartStack__Group_3_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePartStack__Group_3_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:20507:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20507:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20508:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectivePartStack__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)");
+                    }
+                    // InternalPerspectiveDsl.g:20508:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20509:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20515:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:20516:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:20517:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:20517:7: rule__PerspectivePartStack__Group_3_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePartStack__Group_3_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:20522:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20522:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20523:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectivePartStack__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2)");
+                    }
+                    // InternalPerspectiveDsl.g:20523:116: ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20524:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20530:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:20531:6: ( rule__PerspectivePartStack__Group_3_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2()); 
+                    }
+                    // InternalPerspectiveDsl.g:20532:6: ( rule__PerspectivePartStack__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:20532:7: rule__PerspectivePartStack__Group_3_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePartStack__Group_3_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__UnorderedGroup_3__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__0"
+    // InternalPerspectiveDsl.g:20545:1: rule__PerspectivePartStack__UnorderedGroup_3__0 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )? ;
+    public final void rule__PerspectivePartStack__UnorderedGroup_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20549:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )? )
+            // InternalPerspectiveDsl.g:20550:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
+            {
+            pushFollow(FOLLOW_140);
+            rule__PerspectivePartStack__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20551:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
+            int alt154=2;
+            int LA154_0 = input.LA(1);
+
+            if ( LA154_0 == 64 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
+                alt154=1;
+            }
+            else if ( LA154_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+                alt154=1;
+            }
+            else if ( LA154_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                alt154=1;
+            }
+            switch (alt154) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectivePartStack__UnorderedGroup_3__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePartStack__UnorderedGroup_3__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__UnorderedGroup_3__0"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__1"
+    // InternalPerspectiveDsl.g:20557:1: rule__PerspectivePartStack__UnorderedGroup_3__1 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )? ;
+    public final void rule__PerspectivePartStack__UnorderedGroup_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20561:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )? )
+            // InternalPerspectiveDsl.g:20562:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
+            {
+            pushFollow(FOLLOW_140);
+            rule__PerspectivePartStack__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20563:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
+            int alt155=2;
+            int LA155_0 = input.LA(1);
+
+            if ( LA155_0 == 64 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
+                alt155=1;
+            }
+            else if ( LA155_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+                alt155=1;
+            }
+            else if ( LA155_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                alt155=1;
+            }
+            switch (alt155) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectivePartStack__UnorderedGroup_3__2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePartStack__UnorderedGroup_3__2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__UnorderedGroup_3__1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__2"
+    // InternalPerspectiveDsl.g:20569:1: rule__PerspectivePartStack__UnorderedGroup_3__2 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ;
+    public final void rule__PerspectivePartStack__UnorderedGroup_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20573:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl )
+            // InternalPerspectiveDsl.g:20574:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__UnorderedGroup_3__2"
+
+
+    // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3"
+    // InternalPerspectiveDsl.g:20581:1: rule__PerspectivePart__UnorderedGroup_3 : ( rule__PerspectivePart__UnorderedGroup_3__0 )? ;
+    public final void rule__PerspectivePart__UnorderedGroup_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+        	
+        try {
+            // InternalPerspectiveDsl.g:20586:1: ( ( rule__PerspectivePart__UnorderedGroup_3__0 )? )
+            // InternalPerspectiveDsl.g:20587:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
+            {
+            // InternalPerspectiveDsl.g:20587:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
+            int alt156=2;
+            int LA156_0 = input.LA(1);
+
+            if ( LA156_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt156=1;
+            }
+            else if ( LA156_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt156=1;
+            }
+            else if ( LA156_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt156=1;
+            }
+            else if ( LA156_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt156=1;
+            }
+            else if ( LA156_0 == 119 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt156=1;
+            }
+            switch (alt156) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__UnorderedGroup_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__UnorderedGroup_3"
+
+
+    // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__Impl"
+    // InternalPerspectiveDsl.g:20595:1: rule__PerspectivePart__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) ) ;
+    public final void rule__PerspectivePart__UnorderedGroup_3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalPerspectiveDsl.g:20600:1: ( ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:20601:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:20601:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) )
+            int alt157=5;
+            int LA157_0 = input.LA(1);
+
+            if ( LA157_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt157=1;
+            }
+            else if ( LA157_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt157=2;
+            }
+            else if ( LA157_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt157=3;
+            }
+            else if ( LA157_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt157=4;
+            }
+            else if ( LA157_0 == 119 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt157=5;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 157, 0, input);
+
+                throw nvae;
+            }
+            switch (alt157) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:20602:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20602:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20603:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)");
+                    }
+                    // InternalPerspectiveDsl.g:20603:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20604:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20610:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:20611:6: ( rule__PerspectivePart__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:20612:6: ( rule__PerspectivePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:20612:7: rule__PerspectivePart__Group_3_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__Group_3_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:20617:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20617:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20618:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)");
+                    }
+                    // InternalPerspectiveDsl.g:20618:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20619:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20625:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:20626:6: ( rule__PerspectivePart__Group_3_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:20627:6: ( rule__PerspectivePart__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:20627:7: rule__PerspectivePart__Group_3_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__Group_3_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:20632:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20632:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20633:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)");
+                    }
+                    // InternalPerspectiveDsl.g:20633:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:20634:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20640:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:20641:6: ( rule__PerspectivePart__Group_3_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); 
+                    }
+                    // InternalPerspectiveDsl.g:20642:6: ( rule__PerspectivePart__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:20642:7: rule__PerspectivePart__Group_3_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__Group_3_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalPerspectiveDsl.g:20647:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20647:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20648:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)");
+                    }
+                    // InternalPerspectiveDsl.g:20648:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:20649:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20655:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:20656:6: ( rule__PerspectivePart__Group_3_3__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); 
+                    }
+                    // InternalPerspectiveDsl.g:20657:6: ( rule__PerspectivePart__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:20657:7: rule__PerspectivePart__Group_3_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__Group_3_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalPerspectiveDsl.g:20662:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20662:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
+                    // InternalPerspectiveDsl.g:20663:4: {...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4)");
+                    }
+                    // InternalPerspectiveDsl.g:20663:111: ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) )
+                    // InternalPerspectiveDsl.g:20664:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20670:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
+                    // InternalPerspectiveDsl.g:20671:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectivePartAccess().getIsClosableAssignment_3_4()); 
+                    }
+                    // InternalPerspectiveDsl.g:20672:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
+                    // InternalPerspectiveDsl.g:20672:7: rule__PerspectivePart__IsClosableAssignment_3_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__IsClosableAssignment_3_4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectivePartAccess().getIsClosableAssignment_3_4()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__UnorderedGroup_3__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__0"
+    // InternalPerspectiveDsl.g:20685:1: rule__PerspectivePart__UnorderedGroup_3__0 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )? ;
+    public final void rule__PerspectivePart__UnorderedGroup_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20689:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )? )
+            // InternalPerspectiveDsl.g:20690:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )?
+            {
+            pushFollow(FOLLOW_141);
+            rule__PerspectivePart__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20691:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )?
+            int alt158=2;
+            int LA158_0 = input.LA(1);
+
+            if ( LA158_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt158=1;
+            }
+            else if ( LA158_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt158=1;
+            }
+            else if ( LA158_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt158=1;
+            }
+            else if ( LA158_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt158=1;
+            }
+            else if ( LA158_0 == 119 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt158=1;
+            }
+            switch (alt158) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__UnorderedGroup_3__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__UnorderedGroup_3__0"
+
+
+    // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__1"
+    // InternalPerspectiveDsl.g:20697:1: rule__PerspectivePart__UnorderedGroup_3__1 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )? ;
+    public final void rule__PerspectivePart__UnorderedGroup_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20701:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )? )
+            // InternalPerspectiveDsl.g:20702:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )?
+            {
+            pushFollow(FOLLOW_141);
+            rule__PerspectivePart__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20703:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )?
+            int alt159=2;
+            int LA159_0 = input.LA(1);
+
+            if ( LA159_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt159=1;
+            }
+            else if ( LA159_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt159=1;
+            }
+            else if ( LA159_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt159=1;
+            }
+            else if ( LA159_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt159=1;
+            }
+            else if ( LA159_0 == 119 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt159=1;
+            }
+            switch (alt159) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__UnorderedGroup_3__2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__UnorderedGroup_3__1"
+
+
+    // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__2"
+    // InternalPerspectiveDsl.g:20709:1: rule__PerspectivePart__UnorderedGroup_3__2 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )? ;
+    public final void rule__PerspectivePart__UnorderedGroup_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20713:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )? )
+            // InternalPerspectiveDsl.g:20714:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )?
+            {
+            pushFollow(FOLLOW_141);
+            rule__PerspectivePart__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20715:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )?
+            int alt160=2;
+            int LA160_0 = input.LA(1);
+
+            if ( LA160_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt160=1;
+            }
+            else if ( LA160_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt160=1;
+            }
+            else if ( LA160_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt160=1;
+            }
+            else if ( LA160_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt160=1;
+            }
+            else if ( LA160_0 == 119 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt160=1;
+            }
+            switch (alt160) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__UnorderedGroup_3__3();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__UnorderedGroup_3__2"
+
+
+    // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__3"
+    // InternalPerspectiveDsl.g:20721:1: rule__PerspectivePart__UnorderedGroup_3__3 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )? ;
+    public final void rule__PerspectivePart__UnorderedGroup_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20725:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )? )
+            // InternalPerspectiveDsl.g:20726:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )?
+            {
+            pushFollow(FOLLOW_141);
+            rule__PerspectivePart__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20727:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )?
+            int alt161=2;
+            int LA161_0 = input.LA(1);
+
+            if ( LA161_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt161=1;
+            }
+            else if ( LA161_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt161=1;
+            }
+            else if ( LA161_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt161=1;
+            }
+            else if ( LA161_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt161=1;
+            }
+            else if ( LA161_0 == 119 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt161=1;
+            }
+            switch (alt161) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePart__UnorderedGroup_3__4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__UnorderedGroup_3__3"
+
+
+    // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__4"
+    // InternalPerspectiveDsl.g:20733:1: rule__PerspectivePart__UnorderedGroup_3__4 : rule__PerspectivePart__UnorderedGroup_3__Impl ;
+    public final void rule__PerspectivePart__UnorderedGroup_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20737:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl )
+            // InternalPerspectiveDsl.g:20738:2: rule__PerspectivePart__UnorderedGroup_3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePart__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__UnorderedGroup_3__4"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4"
+    // InternalPerspectiveDsl.g:20745:1: rule__PerspectiveSearch__UnorderedGroup_4 : ( rule__PerspectiveSearch__UnorderedGroup_4__0 )? ;
+    public final void rule__PerspectiveSearch__UnorderedGroup_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+        	
+        try {
+            // InternalPerspectiveDsl.g:20750:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4__0 )? )
+            // InternalPerspectiveDsl.g:20751:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
+            {
+            // InternalPerspectiveDsl.g:20751:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
+            int alt162=2;
+            int LA162_0 = input.LA(1);
+
+            if ( LA162_0 == 85 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+                alt162=1;
+            }
+            else if ( LA162_0 == 86 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+                alt162=1;
+            }
+            switch (alt162) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectiveSearch__UnorderedGroup_4__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSearch__UnorderedGroup_4__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__UnorderedGroup_4"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4__Impl"
+    // InternalPerspectiveDsl.g:20759:1: rule__PerspectiveSearch__UnorderedGroup_4__Impl : ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) ) ;
+    public final void rule__PerspectiveSearch__UnorderedGroup_4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalPerspectiveDsl.g:20764:1: ( ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:20765:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:20765:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
+            int alt163=2;
+            int LA163_0 = input.LA(1);
+
+            if ( LA163_0 == 85 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+                alt163=1;
+            }
+            else if ( LA163_0 == 86 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+                alt163=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 163, 0, input);
+
+                throw nvae;
+            }
+            switch (alt163) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:20766:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20766:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20767:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectiveSearch__UnorderedGroup_4__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)");
+                    }
+                    // InternalPerspectiveDsl.g:20767:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:20768:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20774:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+                    // InternalPerspectiveDsl.g:20775:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0()); 
+                    }
+                    // InternalPerspectiveDsl.g:20776:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+                    // InternalPerspectiveDsl.g:20776:7: rule__PerspectiveSearch__Group_4_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSearch__Group_4_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:20781:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:20781:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:20782:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectiveSearch__UnorderedGroup_4__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1)");
+                    }
+                    // InternalPerspectiveDsl.g:20782:113: ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:20783:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:20789:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
+                    // InternalPerspectiveDsl.g:20790:6: ( rule__PerspectiveSearch__Group_4_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_1()); 
+                    }
+                    // InternalPerspectiveDsl.g:20791:6: ( rule__PerspectiveSearch__Group_4_1__0 )
+                    // InternalPerspectiveDsl.g:20791:7: rule__PerspectiveSearch__Group_4_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSearch__Group_4_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveSearchAccess().getGroup_4_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__UnorderedGroup_4__Impl"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4__0"
+    // InternalPerspectiveDsl.g:20804:1: rule__PerspectiveSearch__UnorderedGroup_4__0 : rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )? ;
+    public final void rule__PerspectiveSearch__UnorderedGroup_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20808:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )? )
+            // InternalPerspectiveDsl.g:20809:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
+            {
+            pushFollow(FOLLOW_142);
+            rule__PerspectiveSearch__UnorderedGroup_4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:20810:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
+            int alt164=2;
+            int LA164_0 = input.LA(1);
+
+            if ( LA164_0 == 85 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+                alt164=1;
+            }
+            else if ( LA164_0 == 86 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+                alt164=1;
+            }
+            switch (alt164) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectiveSearch__UnorderedGroup_4__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectiveSearch__UnorderedGroup_4__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__UnorderedGroup_4__0"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4__1"
+    // InternalPerspectiveDsl.g:20816:1: rule__PerspectiveSearch__UnorderedGroup_4__1 : rule__PerspectiveSearch__UnorderedGroup_4__Impl ;
+    public final void rule__PerspectiveSearch__UnorderedGroup_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20820:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl )
+            // InternalPerspectiveDsl.g:20821:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveSearch__UnorderedGroup_4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__UnorderedGroup_4__1"
+
+
+    // $ANTLR start "rule__PerspectiveModel__ImportSectionAssignment_0"
+    // InternalPerspectiveDsl.g:20828:1: rule__PerspectiveModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
+    public final void rule__PerspectiveModel__ImportSectionAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20832:1: ( ( ruleXImportSection ) )
+            // InternalPerspectiveDsl.g:20833:2: ( ruleXImportSection )
+            {
+            // InternalPerspectiveDsl.g:20833:2: ( ruleXImportSection )
+            // InternalPerspectiveDsl.g:20834:3: ruleXImportSection
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXImportSection();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveModel__ImportSectionAssignment_0"
+
+
+    // $ANTLR start "rule__PerspectiveModel__PackagesAssignment_1"
+    // InternalPerspectiveDsl.g:20843:1: rule__PerspectiveModel__PackagesAssignment_1 : ( rulePerspectivePackage ) ;
+    public final void rule__PerspectiveModel__PackagesAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20847:1: ( ( rulePerspectivePackage ) )
+            // InternalPerspectiveDsl.g:20848:2: ( rulePerspectivePackage )
+            {
+            // InternalPerspectiveDsl.g:20848:2: ( rulePerspectivePackage )
+            // InternalPerspectiveDsl.g:20849:3: rulePerspectivePackage
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            rulePerspectivePackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveModel__PackagesAssignment_1"
+
+
+    // $ANTLR start "rule__PerspectivePackage__NameAssignment_2"
+    // InternalPerspectiveDsl.g:20858:1: rule__PerspectivePackage__NameAssignment_2 : ( ruleQualifiedName ) ;
+    public final void rule__PerspectivePackage__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20862:1: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:20863:2: ( ruleQualifiedName )
+            {
+            // InternalPerspectiveDsl.g:20863:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:20864:3: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__NameAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectivePackage__PerspectivesAssignment_3_1"
+    // InternalPerspectiveDsl.g:20873:1: rule__PerspectivePackage__PerspectivesAssignment_3_1 : ( rulePerspective ) ;
+    public final void rule__PerspectivePackage__PerspectivesAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20877:1: ( ( rulePerspective ) )
+            // InternalPerspectiveDsl.g:20878:2: ( rulePerspective )
+            {
+            // InternalPerspectiveDsl.g:20878:2: ( rulePerspective )
+            // InternalPerspectiveDsl.g:20879:3: rulePerspective
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            rulePerspective();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePackage__PerspectivesAssignment_3_1"
+
+
+    // $ANTLR start "rule__Perspective__NameAssignment_2"
+    // InternalPerspectiveDsl.g:20888:1: rule__Perspective__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__Perspective__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20892:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalPerspectiveDsl.g:20893:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalPerspectiveDsl.g:20893:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:20894:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__NameAssignment_2"
+
+
+    // $ANTLR start "rule__Perspective__DescriptionAssignment_3_0"
+    // InternalPerspectiveDsl.g:20903:1: rule__Perspective__DescriptionAssignment_3_0 : ( ( 'describedBy' ) ) ;
+    public final void rule__Perspective__DescriptionAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20907:1: ( ( ( 'describedBy' ) ) )
+            // InternalPerspectiveDsl.g:20908:2: ( ( 'describedBy' ) )
+            {
+            // InternalPerspectiveDsl.g:20908:2: ( ( 'describedBy' ) )
+            // InternalPerspectiveDsl.g:20909:3: ( 'describedBy' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:20910:3: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:20911:4: 'describedBy'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            match(input,118,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__DescriptionAssignment_3_0"
+
+
+    // $ANTLR start "rule__Perspective__DescriptionValueAssignment_3_1"
+    // InternalPerspectiveDsl.g:20922:1: rule__Perspective__DescriptionValueAssignment_3_1 : ( ruleTRANSLATABLESTRING ) ;
+    public final void rule__Perspective__DescriptionValueAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20926:1: ( ( ruleTRANSLATABLESTRING ) )
+            // InternalPerspectiveDsl.g:20927:2: ( ruleTRANSLATABLESTRING )
+            {
+            // InternalPerspectiveDsl.g:20927:2: ( ruleTRANSLATABLESTRING )
+            // InternalPerspectiveDsl.g:20928:3: ruleTRANSLATABLESTRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__DescriptionValueAssignment_3_1"
+
+
+    // $ANTLR start "rule__Perspective__ProcessAssignment_4_1"
+    // InternalPerspectiveDsl.g:20937:1: rule__Perspective__ProcessAssignment_4_1 : ( ( RULE_ID ) ) ;
+    public final void rule__Perspective__ProcessAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20941:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:20942:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:20942:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:20943:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:20944:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:20945:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getProcessBlipIDTerminalRuleCall_4_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getProcessBlipIDTerminalRuleCall_4_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__ProcessAssignment_4_1"
+
+
+    // $ANTLR start "rule__Perspective__UserTaskAssignment_4_3"
+    // InternalPerspectiveDsl.g:20956:1: rule__Perspective__UserTaskAssignment_4_3 : ( ( RULE_ID ) ) ;
+    public final void rule__Perspective__UserTaskAssignment_4_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20960:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:20961:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:20961:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:20962:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:20963:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:20964:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__UserTaskAssignment_4_3"
+
+
+    // $ANTLR start "rule__Perspective__IconURIAssignment_5_0_1"
+    // InternalPerspectiveDsl.g:20975:1: rule__Perspective__IconURIAssignment_5_0_1 : ( RULE_STRING ) ;
+    public final void rule__Perspective__IconURIAssignment_5_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20979:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:20980:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:20980:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:20981:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__IconURIAssignment_5_0_1"
+
+
+    // $ANTLR start "rule__Perspective__AccessibilityPhraseAssignment_5_1_1"
+    // InternalPerspectiveDsl.g:20990:1: rule__Perspective__AccessibilityPhraseAssignment_5_1_1 : ( RULE_STRING ) ;
+    public final void rule__Perspective__AccessibilityPhraseAssignment_5_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:20994:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:20995:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:20995:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:20996:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__AccessibilityPhraseAssignment_5_1_1"
+
+
+    // $ANTLR start "rule__Perspective__ToolbarAssignment_5_2_1"
+    // InternalPerspectiveDsl.g:21005:1: rule__Perspective__ToolbarAssignment_5_2_1 : ( ( RULE_ID ) ) ;
+    public final void rule__Perspective__ToolbarAssignment_5_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21009:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21010:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21010:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21011:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:21012:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21013:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarIDTerminalRuleCall_5_2_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarIDTerminalRuleCall_5_2_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__ToolbarAssignment_5_2_1"
+
+
+    // $ANTLR start "rule__Perspective__ElementsAssignment_7"
+    // InternalPerspectiveDsl.g:21024:1: rule__Perspective__ElementsAssignment_7 : ( rulePerspectiveElement ) ;
+    public final void rule__Perspective__ElementsAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21028:1: ( ( rulePerspectiveElement ) )
+            // InternalPerspectiveDsl.g:21029:2: ( rulePerspectiveElement )
+            {
+            // InternalPerspectiveDsl.g:21029:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21030:3: rulePerspectiveElement
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            rulePerspectiveElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Perspective__ElementsAssignment_7"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__ElementIdAssignment_2"
+    // InternalPerspectiveDsl.g:21039:1: rule__PerspectiveSashContainer__ElementIdAssignment_2 : ( RULE_ID ) ;
+    public final void rule__PerspectiveSashContainer__ElementIdAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21043:1: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21044:2: ( RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:21044:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21045:3: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__ElementIdAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__OrientationAssignment_3_0_1"
+    // InternalPerspectiveDsl.g:21054:1: rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 : ( ruleSashOrientation ) ;
+    public final void rule__PerspectiveSashContainer__OrientationAssignment_3_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21058:1: ( ( ruleSashOrientation ) )
+            // InternalPerspectiveDsl.g:21059:2: ( ruleSashOrientation )
+            {
+            // InternalPerspectiveDsl.g:21059:2: ( ruleSashOrientation )
+            // InternalPerspectiveDsl.g:21060:3: ruleSashOrientation
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleSashOrientation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__OrientationAssignment_3_0_1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1"
+    // InternalPerspectiveDsl.g:21069:1: rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21073:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21074:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21074:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21075:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:21076:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21077:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementIDTerminalRuleCall_3_1_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementIDTerminalRuleCall_3_1_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1"
+    // InternalPerspectiveDsl.g:21088:1: rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 : ( RULE_STRING ) ;
+    public final void rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21092:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21093:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:21093:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21094:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1"
+    // InternalPerspectiveDsl.g:21103:1: rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 : ( RULE_STRING ) ;
+    public final void rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21107:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21108:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:21108:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21109:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__PerspectiveSashContainer__ElementsAssignment_5"
+    // InternalPerspectiveDsl.g:21118:1: rule__PerspectiveSashContainer__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
+    public final void rule__PerspectiveSashContainer__ElementsAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21122:1: ( ( rulePerspectiveElement ) )
+            // InternalPerspectiveDsl.g:21123:2: ( rulePerspectiveElement )
+            {
+            // InternalPerspectiveDsl.g:21123:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21124:3: rulePerspectiveElement
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            rulePerspectiveElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSashContainer__ElementsAssignment_5"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__ElementIdAssignment_2"
+    // InternalPerspectiveDsl.g:21133:1: rule__PerspectivePartStack__ElementIdAssignment_2 : ( RULE_ID ) ;
+    public final void rule__PerspectivePartStack__ElementIdAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21137:1: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21138:2: ( RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:21138:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21139:3: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__ElementIdAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__SelectedElementAssignment_3_0_1"
+    // InternalPerspectiveDsl.g:21148:1: rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectivePartStack__SelectedElementAssignment_3_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21152:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21153:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21153:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21154:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:21155:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21156:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__SelectedElementAssignment_3_0_1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__ContainerDataAssignment_3_1_1"
+    // InternalPerspectiveDsl.g:21167:1: rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 : ( RULE_STRING ) ;
+    public final void rule__PerspectivePartStack__ContainerDataAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21171:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21172:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:21172:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21173:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__ContainerDataAssignment_3_1_1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1"
+    // InternalPerspectiveDsl.g:21182:1: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 : ( RULE_STRING ) ;
+    public final void rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21186:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21187:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:21187:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21188:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__ElementsAssignment_5"
+    // InternalPerspectiveDsl.g:21197:1: rule__PerspectivePartStack__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
+    public final void rule__PerspectivePartStack__ElementsAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21201:1: ( ( rulePerspectiveElement ) )
+            // InternalPerspectiveDsl.g:21202:2: ( rulePerspectiveElement )
+            {
+            // InternalPerspectiveDsl.g:21202:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21203:3: rulePerspectiveElement
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            rulePerspectiveElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__ElementsAssignment_5"
+
+
+    // $ANTLR start "rule__PerspectivePart__ElementIdAssignment_2"
+    // InternalPerspectiveDsl.g:21212:1: rule__PerspectivePart__ElementIdAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__PerspectivePart__ElementIdAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21216:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalPerspectiveDsl.g:21217:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalPerspectiveDsl.g:21217:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:21218:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__ElementIdAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectivePart__ContainerDataAssignment_3_0_1"
+    // InternalPerspectiveDsl.g:21227:1: rule__PerspectivePart__ContainerDataAssignment_3_0_1 : ( RULE_STRING ) ;
+    public final void rule__PerspectivePart__ContainerDataAssignment_3_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21231:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21232:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:21232:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21233:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_0_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__ContainerDataAssignment_3_0_1"
+
+
+    // $ANTLR start "rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1"
+    // InternalPerspectiveDsl.g:21242:1: rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 : ( RULE_STRING ) ;
+    public final void rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21246:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21247:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:21247:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21248:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1"
+
+
+    // $ANTLR start "rule__PerspectivePart__IconURIAssignment_3_2_1"
+    // InternalPerspectiveDsl.g:21257:1: rule__PerspectivePart__IconURIAssignment_3_2_1 : ( RULE_STRING ) ;
+    public final void rule__PerspectivePart__IconURIAssignment_3_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21261:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21262:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:21262:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21263:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_2_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__IconURIAssignment_3_2_1"
+
+
+    // $ANTLR start "rule__PerspectivePart__ViewAssignment_3_3_1"
+    // InternalPerspectiveDsl.g:21272:1: rule__PerspectivePart__ViewAssignment_3_3_1 : ( rulePerspectiveView ) ;
+    public final void rule__PerspectivePart__ViewAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21276:1: ( ( rulePerspectiveView ) )
+            // InternalPerspectiveDsl.g:21277:2: ( rulePerspectiveView )
+            {
+            // InternalPerspectiveDsl.g:21277:2: ( rulePerspectiveView )
+            // InternalPerspectiveDsl.g:21278:3: rulePerspectiveView
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            rulePerspectiveView();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__ViewAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__PerspectivePart__IsClosableAssignment_3_4"
+    // InternalPerspectiveDsl.g:21287:1: rule__PerspectivePart__IsClosableAssignment_3_4 : ( ( 'isClosable' ) ) ;
+    public final void rule__PerspectivePart__IsClosableAssignment_3_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21291:1: ( ( ( 'isClosable' ) ) )
+            // InternalPerspectiveDsl.g:21292:2: ( ( 'isClosable' ) )
+            {
+            // InternalPerspectiveDsl.g:21292:2: ( ( 'isClosable' ) )
+            // InternalPerspectiveDsl.g:21293:3: ( 'isClosable' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
+            }
+            // InternalPerspectiveDsl.g:21294:3: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:21295:4: 'isClosable'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
+            }
+            match(input,119,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePart__IsClosableAssignment_3_4"
+
+
+    // $ANTLR start "rule__PerspectiveSelection__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21306:1: rule__PerspectiveSelection__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveSelection__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21310:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21311:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21311:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21312:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21313:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21314:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSelectionAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSelectionAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSelection__RefAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveTable__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21325:1: rule__PerspectiveTable__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveTable__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21329:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21330:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21330:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21331:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21332:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21333:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTableAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTableAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTable__RefAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveGrid__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21344:1: rule__PerspectiveGrid__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveGrid__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21348:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21349:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21349:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21350:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21351:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21352:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveGridAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveGridAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveGrid__RefAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveBean__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21363:1: rule__PerspectiveBean__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveBean__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21367:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21368:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21368:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21369:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21370:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21371:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveBean__RefAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveChart__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21382:1: rule__PerspectiveChart__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveChart__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21386:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21387:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21387:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21388:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21389:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21390:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveChartAccess().getRefChartIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveChartAccess().getRefChartIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveChart__RefAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveReport__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21401:1: rule__PerspectiveReport__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveReport__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21405:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21406:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21406:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21407:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21408:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21409:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveReportAccess().getRefReportIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveReportAccess().getRefReportIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveReport__RefAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveOrganization__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21420:1: rule__PerspectiveOrganization__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveOrganization__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21424:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21425:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21425:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21426:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21427:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21428:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveOrganization__RefAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveTopology__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21439:1: rule__PerspectiveTopology__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveTopology__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21443:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21444:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21444:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21445:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21446:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21447:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveTopology__RefAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveDialog__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21458:1: rule__PerspectiveDialog__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveDialog__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21462:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21463:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21463:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21464:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21465:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21466:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDialogAccess().getRefDialogIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDialogAccess().getRefDialogIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDialog__RefAssignment_2"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__DtoRefAssignment_3"
+    // InternalPerspectiveDsl.g:21477:1: rule__PerspectiveKanban__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveKanban__DtoRefAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21481:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21482:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21482:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21483:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoCrossReference_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:21484:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21485:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoCrossReference_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__DtoRefAssignment_3"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__CardRefAssignment_5"
+    // InternalPerspectiveDsl.g:21496:1: rule__PerspectiveKanban__CardRefAssignment_5 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveKanban__CardRefAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21500:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21501:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21501:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21502:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogCrossReference_5_0()); 
+            }
+            // InternalPerspectiveDsl.g:21503:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21504:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogIDTerminalRuleCall_5_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogIDTerminalRuleCall_5_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogCrossReference_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__CardRefAssignment_5"
+
+
+    // $ANTLR start "rule__PerspectiveKanban__DialogRefAssignment_7"
+    // InternalPerspectiveDsl.g:21515:1: rule__PerspectiveKanban__DialogRefAssignment_7 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveKanban__DialogRefAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21519:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21520:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21520:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21521:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogCrossReference_7_0()); 
+            }
+            // InternalPerspectiveDsl.g:21522:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21523:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogIDTerminalRuleCall_7_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogIDTerminalRuleCall_7_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogCrossReference_7_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveKanban__DialogRefAssignment_7"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__DtoRefAssignment_3"
+    // InternalPerspectiveDsl.g:21534:1: rule__PerspectiveSearch__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveSearch__DtoRefAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21538:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21539:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21539:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21540:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoCrossReference_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:21541:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21542:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoCrossReference_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__DtoRefAssignment_3"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__DepthAssignment_4_0_1"
+    // InternalPerspectiveDsl.g:21553:1: rule__PerspectiveSearch__DepthAssignment_4_0_1 : ( RULE_INT ) ;
+    public final void rule__PerspectiveSearch__DepthAssignment_4_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21557:1: ( ( RULE_INT ) )
+            // InternalPerspectiveDsl.g:21558:2: ( RULE_INT )
+            {
+            // InternalPerspectiveDsl.g:21558:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:21559:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getDepthINTTerminalRuleCall_4_0_1_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getDepthINTTerminalRuleCall_4_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__DepthAssignment_4_0_1"
+
+
+    // $ANTLR start "rule__PerspectiveSearch__FilterColsAssignment_4_1_1"
+    // InternalPerspectiveDsl.g:21568:1: rule__PerspectiveSearch__FilterColsAssignment_4_1_1 : ( RULE_INT ) ;
+    public final void rule__PerspectiveSearch__FilterColsAssignment_4_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21572:1: ( ( RULE_INT ) )
+            // InternalPerspectiveDsl.g:21573:2: ( RULE_INT )
+            {
+            // InternalPerspectiveDsl.g:21573:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:21574:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveSearchAccess().getFilterColsINTTerminalRuleCall_4_1_1_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveSearchAccess().getFilterColsINTTerminalRuleCall_4_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveSearch__FilterColsAssignment_4_1_1"
+
+
+    // $ANTLR start "rule__PerspectiveDataInterchange__RefAssignment_2"
+    // InternalPerspectiveDsl.g:21583:1: rule__PerspectiveDataInterchange__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectiveDataInterchange__RefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21587:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21588:2: ( ( RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:21588:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21589:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21590:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21591:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectiveDataInterchange__RefAssignment_2"
+
+
+    // $ANTLR start "rule__XImportDeclaration__StaticAssignment_2_0_0"
+    // InternalPerspectiveDsl.g:21602:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
+    public final void rule__XImportDeclaration__StaticAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21606:1: ( ( ( 'static' ) ) )
+            // InternalPerspectiveDsl.g:21607:2: ( ( 'static' ) )
+            {
+            // InternalPerspectiveDsl.g:21607:2: ( ( 'static' ) )
+            // InternalPerspectiveDsl.g:21608:3: ( 'static' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:21609:3: ( 'static' )
+            // InternalPerspectiveDsl.g:21610: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"
+    // InternalPerspectiveDsl.g:21621:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
+    public final void rule__XImportDeclaration__ExtensionAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21625:1: ( ( ( 'extension' ) ) )
+            // InternalPerspectiveDsl.g:21626:2: ( ( 'extension' ) )
+            {
+            // InternalPerspectiveDsl.g:21626:2: ( ( 'extension' ) )
+            // InternalPerspectiveDsl.g:21627:3: ( 'extension' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:21628:3: ( 'extension' )
+            // InternalPerspectiveDsl.g:21629: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"
+    // InternalPerspectiveDsl.g:21640:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
+    public final void rule__XImportDeclaration__ImportedTypeAssignment_2_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21644:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
+            // InternalPerspectiveDsl.g:21645:2: ( ( ruleQualifiedNameInStaticImport ) )
+            {
+            // InternalPerspectiveDsl.g:21645:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalPerspectiveDsl.g:21646:3: ( ruleQualifiedNameInStaticImport )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21647:3: ( ruleQualifiedNameInStaticImport )
+            // InternalPerspectiveDsl.g:21648: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"
+    // InternalPerspectiveDsl.g:21659:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
+    public final void rule__XImportDeclaration__WildcardAssignment_2_0_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21663:1: ( ( ( '*' ) ) )
+            // InternalPerspectiveDsl.g:21664:2: ( ( '*' ) )
+            {
+            // InternalPerspectiveDsl.g:21664:2: ( ( '*' ) )
+            // InternalPerspectiveDsl.g:21665:3: ( '*' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:21666:3: ( '*' )
+            // InternalPerspectiveDsl.g:21667: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"
+    // InternalPerspectiveDsl.g:21678: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 {
+            // InternalPerspectiveDsl.g:21682:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:21683:2: ( ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:21683:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:21684: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"
+    // InternalPerspectiveDsl.g:21693:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XImportDeclaration__ImportedTypeAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21697:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:21698:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalPerspectiveDsl.g:21698:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:21699:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:21700:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21701: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"
+    // InternalPerspectiveDsl.g:21712:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
+    public final void rule__XImportDeclaration__ImportedNamespaceAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21716:1: ( ( ruleQualifiedNameWithWildcard ) )
+            // InternalPerspectiveDsl.g:21717:2: ( ruleQualifiedNameWithWildcard )
+            {
+            // InternalPerspectiveDsl.g:21717:2: ( ruleQualifiedNameWithWildcard )
+            // InternalPerspectiveDsl.g:21718: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"
+    // InternalPerspectiveDsl.g:21727:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
+    public final void rule__XImportDeclaration__FqnImportAssignment_2_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21731:1: ( ( ( 'ns' ) ) )
+            // InternalPerspectiveDsl.g:21732:2: ( ( 'ns' ) )
+            {
+            // InternalPerspectiveDsl.g:21732:2: ( ( 'ns' ) )
+            // InternalPerspectiveDsl.g:21733:3: ( 'ns' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:21734:3: ( 'ns' )
+            // InternalPerspectiveDsl.g:21735:4: 'ns'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+            match(input,120,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"
+    // InternalPerspectiveDsl.g:21746:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
+    public final void rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21750:1: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:21751:2: ( ruleQualifiedName )
+            {
+            // InternalPerspectiveDsl.g:21751:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21752: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"
+    // InternalPerspectiveDsl.g:21761:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21765:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:21766:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalPerspectiveDsl.g:21766:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:21767:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:21768:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21769: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"
+    // InternalPerspectiveDsl.g:21780: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 {
+            // InternalPerspectiveDsl.g:21784:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalPerspectiveDsl.g:21785:2: ( ruleXAnnotationElementValuePair )
+            {
+            // InternalPerspectiveDsl.g:21785:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:21786: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"
+    // InternalPerspectiveDsl.g:21795: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 {
+            // InternalPerspectiveDsl.g:21799:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalPerspectiveDsl.g:21800:2: ( ruleXAnnotationElementValuePair )
+            {
+            // InternalPerspectiveDsl.g:21800:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:21801: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"
+    // InternalPerspectiveDsl.g:21810:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
+    public final void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21814:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
+            // InternalPerspectiveDsl.g:21815:2: ( ruleXAnnotationElementValueOrCommaList )
+            {
+            // InternalPerspectiveDsl.g:21815:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalPerspectiveDsl.g:21816: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"
+    // InternalPerspectiveDsl.g:21825:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
+    public final void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21829:1: ( ( ( ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:21830:2: ( ( ruleValidID ) )
+            {
+            // InternalPerspectiveDsl.g:21830:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:21831:3: ( ruleValidID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:21832:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:21833: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"
+    // InternalPerspectiveDsl.g:21844:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
+    public final void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21848:1: ( ( ruleXAnnotationElementValue ) )
+            // InternalPerspectiveDsl.g:21849:2: ( ruleXAnnotationElementValue )
+            {
+            // InternalPerspectiveDsl.g:21849:2: ( ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:21850: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"
+    // InternalPerspectiveDsl.g:21859:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21863:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:21864:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalPerspectiveDsl.g:21864:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:21865: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"
+    // InternalPerspectiveDsl.g:21874: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 {
+            // InternalPerspectiveDsl.g:21878:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:21879:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalPerspectiveDsl.g:21879:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:21880: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"
+    // InternalPerspectiveDsl.g:21889: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 {
+            // InternalPerspectiveDsl.g:21893:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:21894:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalPerspectiveDsl.g:21894:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:21895: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"
+    // InternalPerspectiveDsl.g:21904:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21908:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:21909:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalPerspectiveDsl.g:21909:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:21910: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"
+    // InternalPerspectiveDsl.g:21919: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 {
+            // InternalPerspectiveDsl.g:21923:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:21924:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalPerspectiveDsl.g:21924:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:21925: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"
+    // InternalPerspectiveDsl.g:21934:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
+    public final void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21938:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalPerspectiveDsl.g:21939:2: ( ( ruleFeatureCallID ) )
+            {
+            // InternalPerspectiveDsl.g:21939:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:21940:3: ( ruleFeatureCallID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:21941:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:21942: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"
+    // InternalPerspectiveDsl.g:21953:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
+    public final void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21957:1: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:21958:2: ( ruleXAssignment )
+            {
+            // InternalPerspectiveDsl.g:21958:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:21959: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"
+    // InternalPerspectiveDsl.g:21968: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 {
+            // InternalPerspectiveDsl.g:21972:1: ( ( ( ruleOpMultiAssign ) ) )
+            // InternalPerspectiveDsl.g:21973:2: ( ( ruleOpMultiAssign ) )
+            {
+            // InternalPerspectiveDsl.g:21973:2: ( ( ruleOpMultiAssign ) )
+            // InternalPerspectiveDsl.g:21974:3: ( ruleOpMultiAssign )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:21975:3: ( ruleOpMultiAssign )
+            // InternalPerspectiveDsl.g:21976: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"
+    // InternalPerspectiveDsl.g:21987:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
+    public final void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21991:1: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:21992:2: ( ruleXAssignment )
+            {
+            // InternalPerspectiveDsl.g:21992:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:21993: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"
+    // InternalPerspectiveDsl.g:22002: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 {
+            // InternalPerspectiveDsl.g:22006:1: ( ( ( ruleOpOr ) ) )
+            // InternalPerspectiveDsl.g:22007:2: ( ( ruleOpOr ) )
+            {
+            // InternalPerspectiveDsl.g:22007:2: ( ( ruleOpOr ) )
+            // InternalPerspectiveDsl.g:22008:3: ( ruleOpOr )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22009:3: ( ruleOpOr )
+            // InternalPerspectiveDsl.g:22010: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"
+    // InternalPerspectiveDsl.g:22021:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
+    public final void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22025:1: ( ( ruleXAndExpression ) )
+            // InternalPerspectiveDsl.g:22026:2: ( ruleXAndExpression )
+            {
+            // InternalPerspectiveDsl.g:22026:2: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:22027: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"
+    // InternalPerspectiveDsl.g:22036: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 {
+            // InternalPerspectiveDsl.g:22040:1: ( ( ( ruleOpAnd ) ) )
+            // InternalPerspectiveDsl.g:22041:2: ( ( ruleOpAnd ) )
+            {
+            // InternalPerspectiveDsl.g:22041:2: ( ( ruleOpAnd ) )
+            // InternalPerspectiveDsl.g:22042:3: ( ruleOpAnd )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22043:3: ( ruleOpAnd )
+            // InternalPerspectiveDsl.g:22044: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"
+    // InternalPerspectiveDsl.g:22055:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
+    public final void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22059:1: ( ( ruleXEqualityExpression ) )
+            // InternalPerspectiveDsl.g:22060:2: ( ruleXEqualityExpression )
+            {
+            // InternalPerspectiveDsl.g:22060:2: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:22061: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"
+    // InternalPerspectiveDsl.g:22070: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 {
+            // InternalPerspectiveDsl.g:22074:1: ( ( ( ruleOpEquality ) ) )
+            // InternalPerspectiveDsl.g:22075:2: ( ( ruleOpEquality ) )
+            {
+            // InternalPerspectiveDsl.g:22075:2: ( ( ruleOpEquality ) )
+            // InternalPerspectiveDsl.g:22076:3: ( ruleOpEquality )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22077:3: ( ruleOpEquality )
+            // InternalPerspectiveDsl.g:22078: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"
+    // InternalPerspectiveDsl.g:22089:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
+    public final void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22093:1: ( ( ruleXRelationalExpression ) )
+            // InternalPerspectiveDsl.g:22094:2: ( ruleXRelationalExpression )
+            {
+            // InternalPerspectiveDsl.g:22094:2: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:22095: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"
+    // InternalPerspectiveDsl.g:22104:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22108:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:22109:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:22109:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:22110: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"
+    // InternalPerspectiveDsl.g:22119: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 {
+            // InternalPerspectiveDsl.g:22123:1: ( ( ( ruleOpCompare ) ) )
+            // InternalPerspectiveDsl.g:22124:2: ( ( ruleOpCompare ) )
+            {
+            // InternalPerspectiveDsl.g:22124:2: ( ( ruleOpCompare ) )
+            // InternalPerspectiveDsl.g:22125:3: ( ruleOpCompare )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22126:3: ( ruleOpCompare )
+            // InternalPerspectiveDsl.g:22127: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"
+    // InternalPerspectiveDsl.g:22138:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
+    public final void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22142:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalPerspectiveDsl.g:22143:2: ( ruleXOtherOperatorExpression )
+            {
+            // InternalPerspectiveDsl.g:22143:2: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:22144: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"
+    // InternalPerspectiveDsl.g:22153: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 {
+            // InternalPerspectiveDsl.g:22157:1: ( ( ( ruleOpOther ) ) )
+            // InternalPerspectiveDsl.g:22158:2: ( ( ruleOpOther ) )
+            {
+            // InternalPerspectiveDsl.g:22158:2: ( ( ruleOpOther ) )
+            // InternalPerspectiveDsl.g:22159:3: ( ruleOpOther )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22160:3: ( ruleOpOther )
+            // InternalPerspectiveDsl.g:22161: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"
+    // InternalPerspectiveDsl.g:22172:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
+    public final void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22176:1: ( ( ruleXAdditiveExpression ) )
+            // InternalPerspectiveDsl.g:22177:2: ( ruleXAdditiveExpression )
+            {
+            // InternalPerspectiveDsl.g:22177:2: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:22178: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"
+    // InternalPerspectiveDsl.g:22187: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 {
+            // InternalPerspectiveDsl.g:22191:1: ( ( ( ruleOpAdd ) ) )
+            // InternalPerspectiveDsl.g:22192:2: ( ( ruleOpAdd ) )
+            {
+            // InternalPerspectiveDsl.g:22192:2: ( ( ruleOpAdd ) )
+            // InternalPerspectiveDsl.g:22193:3: ( ruleOpAdd )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22194:3: ( ruleOpAdd )
+            // InternalPerspectiveDsl.g:22195: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"
+    // InternalPerspectiveDsl.g:22206:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
+    public final void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22210:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalPerspectiveDsl.g:22211:2: ( ruleXMultiplicativeExpression )
+            {
+            // InternalPerspectiveDsl.g:22211:2: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:22212: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"
+    // InternalPerspectiveDsl.g:22221: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 {
+            // InternalPerspectiveDsl.g:22225:1: ( ( ( ruleOpMulti ) ) )
+            // InternalPerspectiveDsl.g:22226:2: ( ( ruleOpMulti ) )
+            {
+            // InternalPerspectiveDsl.g:22226:2: ( ( ruleOpMulti ) )
+            // InternalPerspectiveDsl.g:22227:3: ( ruleOpMulti )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22228:3: ( ruleOpMulti )
+            // InternalPerspectiveDsl.g:22229: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"
+    // InternalPerspectiveDsl.g:22240:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
+    public final void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22244:1: ( ( ruleXUnaryOperation ) )
+            // InternalPerspectiveDsl.g:22245:2: ( ruleXUnaryOperation )
+            {
+            // InternalPerspectiveDsl.g:22245:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:22246: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"
+    // InternalPerspectiveDsl.g:22255:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
+    public final void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22259:1: ( ( ( ruleOpUnary ) ) )
+            // InternalPerspectiveDsl.g:22260:2: ( ( ruleOpUnary ) )
+            {
+            // InternalPerspectiveDsl.g:22260:2: ( ( ruleOpUnary ) )
+            // InternalPerspectiveDsl.g:22261:3: ( ruleOpUnary )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22262:3: ( ruleOpUnary )
+            // InternalPerspectiveDsl.g:22263: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"
+    // InternalPerspectiveDsl.g:22274:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
+    public final void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22278:1: ( ( ruleXUnaryOperation ) )
+            // InternalPerspectiveDsl.g:22279:2: ( ruleXUnaryOperation )
+            {
+            // InternalPerspectiveDsl.g:22279:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:22280: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"
+    // InternalPerspectiveDsl.g:22289:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22293:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:22294:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:22294:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:22295: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"
+    // InternalPerspectiveDsl.g:22304:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
+    public final void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22308:1: ( ( ( ruleOpPostfix ) ) )
+            // InternalPerspectiveDsl.g:22309:2: ( ( ruleOpPostfix ) )
+            {
+            // InternalPerspectiveDsl.g:22309:2: ( ( ruleOpPostfix ) )
+            // InternalPerspectiveDsl.g:22310:3: ( ruleOpPostfix )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22311:3: ( ruleOpPostfix )
+            // InternalPerspectiveDsl.g:22312: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"
+    // InternalPerspectiveDsl.g:22323: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 {
+            // InternalPerspectiveDsl.g:22327:1: ( ( ( '::' ) ) )
+            // InternalPerspectiveDsl.g:22328:2: ( ( '::' ) )
+            {
+            // InternalPerspectiveDsl.g:22328:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:22329:3: ( '::' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22330:3: ( '::' )
+            // InternalPerspectiveDsl.g:22331:4: '::'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+            match(input,121,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"
+    // InternalPerspectiveDsl.g:22342: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 {
+            // InternalPerspectiveDsl.g:22346:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalPerspectiveDsl.g:22347:2: ( ( ruleFeatureCallID ) )
+            {
+            // InternalPerspectiveDsl.g:22347:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:22348:3: ( ruleFeatureCallID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:22349:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:22350: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"
+    // InternalPerspectiveDsl.g:22361:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
+    public final void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22365:1: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:22366:2: ( ruleXAssignment )
+            {
+            // InternalPerspectiveDsl.g:22366:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22367: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"
+    // InternalPerspectiveDsl.g:22376: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 {
+            // InternalPerspectiveDsl.g:22380:1: ( ( ( '?.' ) ) )
+            // InternalPerspectiveDsl.g:22381:2: ( ( '?.' ) )
+            {
+            // InternalPerspectiveDsl.g:22381:2: ( ( '?.' ) )
+            // InternalPerspectiveDsl.g:22382:3: ( '?.' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22383:3: ( '?.' )
+            // InternalPerspectiveDsl.g:22384:4: '?.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+            match(input,122,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"
+    // InternalPerspectiveDsl.g:22395: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 {
+            // InternalPerspectiveDsl.g:22399:1: ( ( ( '::' ) ) )
+            // InternalPerspectiveDsl.g:22400:2: ( ( '::' ) )
+            {
+            // InternalPerspectiveDsl.g:22400:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:22401:3: ( '::' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:22402:3: ( '::' )
+            // InternalPerspectiveDsl.g:22403:4: '::'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+            match(input,121,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"
+    // InternalPerspectiveDsl.g:22414: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 {
+            // InternalPerspectiveDsl.g:22418:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:22419:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:22419:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:22420: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"
+    // InternalPerspectiveDsl.g:22429: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 {
+            // InternalPerspectiveDsl.g:22433:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:22434:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:22434:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:22435: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"
+    // InternalPerspectiveDsl.g:22444:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
+    public final void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22448:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalPerspectiveDsl.g:22449:2: ( ( ruleIdOrSuper ) )
+            {
+            // InternalPerspectiveDsl.g:22449:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:22450:3: ( ruleIdOrSuper )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:22451:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:22452: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"
+    // InternalPerspectiveDsl.g:22463:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
+    public final void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22467:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:22468:2: ( ( '(' ) )
+            {
+            // InternalPerspectiveDsl.g:22468:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:22469:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:22470:3: ( '(' )
+            // InternalPerspectiveDsl.g:22471:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:22482: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 {
+            // InternalPerspectiveDsl.g:22486:1: ( ( ruleXShortClosure ) )
+            // InternalPerspectiveDsl.g:22487:2: ( ruleXShortClosure )
+            {
+            // InternalPerspectiveDsl.g:22487:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:22488: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"
+    // InternalPerspectiveDsl.g:22497: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 {
+            // InternalPerspectiveDsl.g:22501:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22502:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22502:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22503: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"
+    // InternalPerspectiveDsl.g:22512: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 {
+            // InternalPerspectiveDsl.g:22516:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22517:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22517:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22518: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"
+    // InternalPerspectiveDsl.g:22527:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
+    public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22531:1: ( ( ruleXClosure ) )
+            // InternalPerspectiveDsl.g:22532:2: ( ruleXClosure )
+            {
+            // InternalPerspectiveDsl.g:22532:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:22533: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"
+    // InternalPerspectiveDsl.g:22542:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    public final void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22546:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22547:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22547:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22548: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"
+    // InternalPerspectiveDsl.g:22557:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22561:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22562:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22562:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22563: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"
+    // InternalPerspectiveDsl.g:22572:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    public final void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22576:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22577:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22577:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22578: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"
+    // InternalPerspectiveDsl.g:22587:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22591:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22592:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22592:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22593: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"
+    // InternalPerspectiveDsl.g:22602: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 {
+            // InternalPerspectiveDsl.g:22606:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22607:2: ( ruleJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:22607:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22608: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"
+    // InternalPerspectiveDsl.g:22617: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 {
+            // InternalPerspectiveDsl.g:22621:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22622:2: ( ruleJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:22622:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22623: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"
+    // InternalPerspectiveDsl.g:22632:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
+    public final void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22636:1: ( ( ( '|' ) ) )
+            // InternalPerspectiveDsl.g:22637:2: ( ( '|' ) )
+            {
+            // InternalPerspectiveDsl.g:22637:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:22638:3: ( '|' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22639:3: ( '|' )
+            // InternalPerspectiveDsl.g:22640:4: '|'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+            match(input,123,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"
+    // InternalPerspectiveDsl.g:22651:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
+    public final void rule__XClosure__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22655:1: ( ( ruleXExpressionInClosure ) )
+            // InternalPerspectiveDsl.g:22656:2: ( ruleXExpressionInClosure )
+            {
+            // InternalPerspectiveDsl.g:22656:2: ( ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:22657: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"
+    // InternalPerspectiveDsl.g:22666:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22670:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:22671:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalPerspectiveDsl.g:22671:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:22672: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"
+    // InternalPerspectiveDsl.g:22681: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 {
+            // InternalPerspectiveDsl.g:22685:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22686:2: ( ruleJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:22686:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22687: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"
+    // InternalPerspectiveDsl.g:22696: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 {
+            // InternalPerspectiveDsl.g:22700:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22701:2: ( ruleJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:22701:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22702: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"
+    // InternalPerspectiveDsl.g:22711:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
+    public final void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22715:1: ( ( ( '|' ) ) )
+            // InternalPerspectiveDsl.g:22716:2: ( ( '|' ) )
+            {
+            // InternalPerspectiveDsl.g:22716:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:22717:3: ( '|' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:22718:3: ( '|' )
+            // InternalPerspectiveDsl.g:22719:4: '|'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+            match(input,123,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"
+    // InternalPerspectiveDsl.g:22730:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22734:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22735:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22735:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22736: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"
+    // InternalPerspectiveDsl.g:22745:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__IfAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22749:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22750:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22750:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22751: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"
+    // InternalPerspectiveDsl.g:22760:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__ThenAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22764:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22765:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22765:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22766: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"
+    // InternalPerspectiveDsl.g:22775:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22779:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22780:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22780:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22781: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"
+    // InternalPerspectiveDsl.g:22790: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 {
+            // InternalPerspectiveDsl.g:22794:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22795:2: ( ruleJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:22795:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22796: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"
+    // InternalPerspectiveDsl.g:22805:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22809:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22810:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22810:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22811: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"
+    // InternalPerspectiveDsl.g:22820: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 {
+            // InternalPerspectiveDsl.g:22824:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22825:2: ( ruleJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:22825:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22826: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"
+    // InternalPerspectiveDsl.g:22835:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22839:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22840:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22840:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22841: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"
+    // InternalPerspectiveDsl.g:22850:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
+    public final void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22854:1: ( ( ruleXCasePart ) )
+            // InternalPerspectiveDsl.g:22855:2: ( ruleXCasePart )
+            {
+            // InternalPerspectiveDsl.g:22855:2: ( ruleXCasePart )
+            // InternalPerspectiveDsl.g:22856: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"
+    // InternalPerspectiveDsl.g:22865:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22869:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22870:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22870:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22871: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"
+    // InternalPerspectiveDsl.g:22880:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22884:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:22885:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:22885:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:22886: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"
+    // InternalPerspectiveDsl.g:22895:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
+    public final void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22899:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22900:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22900:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22901: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"
+    // InternalPerspectiveDsl.g:22910:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
+    public final void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22914:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22915:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22915:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22916: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"
+    // InternalPerspectiveDsl.g:22925:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
+    public final void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22929:1: ( ( ( ',' ) ) )
+            // InternalPerspectiveDsl.g:22930:2: ( ( ',' ) )
+            {
+            // InternalPerspectiveDsl.g:22930:2: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:22931:3: ( ',' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:22932:3: ( ',' )
+            // InternalPerspectiveDsl.g:22933:4: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+            match(input,92,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"
+    // InternalPerspectiveDsl.g:22944:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22948:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:22949:2: ( ruleJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:22949:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:22950: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"
+    // InternalPerspectiveDsl.g:22959:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22963:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22964:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22964:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22965: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"
+    // InternalPerspectiveDsl.g:22974:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22978:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:22979:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:22979:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:22980: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"
+    // InternalPerspectiveDsl.g:22989:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22993:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:22994:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalPerspectiveDsl.g:22994:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:22995: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"
+    // InternalPerspectiveDsl.g:23004:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23008:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:23009:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalPerspectiveDsl.g:23009:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23010: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"
+    // InternalPerspectiveDsl.g:23019:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23023:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23024:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23024:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23025: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"
+    // InternalPerspectiveDsl.g:23034:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23038:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23039:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23039:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23040: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"
+    // InternalPerspectiveDsl.g:23049:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23053:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23054:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23054:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23055: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"
+    // InternalPerspectiveDsl.g:23064:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23068:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23069:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23069:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23070: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"
+    // InternalPerspectiveDsl.g:23079:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23083:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23084:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23084:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23085: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"
+    // InternalPerspectiveDsl.g:23094:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23098:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23099:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23099:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23100: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"
+    // InternalPerspectiveDsl.g:23109:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23113:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23114:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23114:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23115: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"
+    // InternalPerspectiveDsl.g:23124:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23128:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23129:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23129:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23130: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"
+    // InternalPerspectiveDsl.g:23139:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23143:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:23144:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalPerspectiveDsl.g:23144:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23145: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"
+    // InternalPerspectiveDsl.g:23154:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
+    public final void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23158:1: ( ( ( 'var' ) ) )
+            // InternalPerspectiveDsl.g:23159:2: ( ( 'var' ) )
+            {
+            // InternalPerspectiveDsl.g:23159:2: ( ( 'var' ) )
+            // InternalPerspectiveDsl.g:23160:3: ( 'var' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:23161:3: ( 'var' )
+            // InternalPerspectiveDsl.g:23162:4: 'var'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+            match(input,124,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"
+    // InternalPerspectiveDsl.g:23173: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 {
+            // InternalPerspectiveDsl.g:23177:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23178:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23178:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23179: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"
+    // InternalPerspectiveDsl.g:23188: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 {
+            // InternalPerspectiveDsl.g:23192:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:23193:2: ( ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:23193:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23194: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"
+    // InternalPerspectiveDsl.g:23203:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
+    public final void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23207:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:23208:2: ( ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:23208:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23209: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"
+    // InternalPerspectiveDsl.g:23218:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
+    public final void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23222:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23223:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23223:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23224: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"
+    // InternalPerspectiveDsl.g:23233:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23237:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23238:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23238:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23239: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"
+    // InternalPerspectiveDsl.g:23248:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    public final void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23252:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:23253:2: ( ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:23253:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23254: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"
+    // InternalPerspectiveDsl.g:23263:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23267:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23268:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23268:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23269: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"
+    // InternalPerspectiveDsl.g:23278:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    public final void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23282:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:23283:2: ( ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:23283:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23284: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"
+    // InternalPerspectiveDsl.g:23293:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23297:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23298:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23298:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23299: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"
+    // InternalPerspectiveDsl.g:23308:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23312:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23313:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23313:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23314: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"
+    // InternalPerspectiveDsl.g:23323:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
+    public final void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23327:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalPerspectiveDsl.g:23328:2: ( ( ruleIdOrSuper ) )
+            {
+            // InternalPerspectiveDsl.g:23328:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:23329:3: ( ruleIdOrSuper )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:23330:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:23331: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"
+    // InternalPerspectiveDsl.g:23342:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
+    public final void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23346:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:23347:2: ( ( '(' ) )
+            {
+            // InternalPerspectiveDsl.g:23347:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:23348:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:23349:3: ( '(' )
+            // InternalPerspectiveDsl.g:23350:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:23361:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23365:1: ( ( ruleXShortClosure ) )
+            // InternalPerspectiveDsl.g:23366:2: ( ruleXShortClosure )
+            {
+            // InternalPerspectiveDsl.g:23366:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:23367: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"
+    // InternalPerspectiveDsl.g:23376: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 {
+            // InternalPerspectiveDsl.g:23380:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23381:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23381:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23382: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"
+    // InternalPerspectiveDsl.g:23391: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 {
+            // InternalPerspectiveDsl.g:23395:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23396:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23396:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23397: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"
+    // InternalPerspectiveDsl.g:23406:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23410:1: ( ( ruleXClosure ) )
+            // InternalPerspectiveDsl.g:23411:2: ( ruleXClosure )
+            {
+            // InternalPerspectiveDsl.g:23411:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:23412: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"
+    // InternalPerspectiveDsl.g:23421:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23425:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:23426:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalPerspectiveDsl.g:23426:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:23427:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
+            }
+            // InternalPerspectiveDsl.g:23428:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:23429: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"
+    // InternalPerspectiveDsl.g:23440:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23444:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23445:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23445:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23446: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"
+    // InternalPerspectiveDsl.g:23455:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23459:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23460:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23460:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23461: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"
+    // InternalPerspectiveDsl.g:23470:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
+    public final void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23474:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:23475:2: ( ( '(' ) )
+            {
+            // InternalPerspectiveDsl.g:23475:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:23476:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:23477:3: ( '(' )
+            // InternalPerspectiveDsl.g:23478:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+            match(input,90,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"
+    // InternalPerspectiveDsl.g:23489:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23493:1: ( ( ruleXShortClosure ) )
+            // InternalPerspectiveDsl.g:23494:2: ( ruleXShortClosure )
+            {
+            // InternalPerspectiveDsl.g:23494:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:23495: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"
+    // InternalPerspectiveDsl.g:23504: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 {
+            // InternalPerspectiveDsl.g:23508:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23509:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23509:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23510: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"
+    // InternalPerspectiveDsl.g:23519: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 {
+            // InternalPerspectiveDsl.g:23523:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23524:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23524:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23525: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"
+    // InternalPerspectiveDsl.g:23534:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23538:1: ( ( ruleXClosure ) )
+            // InternalPerspectiveDsl.g:23539:2: ( ruleXClosure )
+            {
+            // InternalPerspectiveDsl.g:23539:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:23540: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"
+    // InternalPerspectiveDsl.g:23549:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
+    public final void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23553:1: ( ( ( 'true' ) ) )
+            // InternalPerspectiveDsl.g:23554:2: ( ( 'true' ) )
+            {
+            // InternalPerspectiveDsl.g:23554:2: ( ( 'true' ) )
+            // InternalPerspectiveDsl.g:23555:3: ( 'true' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:23556:3: ( 'true' )
+            // InternalPerspectiveDsl.g:23557:4: 'true'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+            match(input,125,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"
+    // InternalPerspectiveDsl.g:23568:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
+    public final void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23572:1: ( ( ruleNumber ) )
+            // InternalPerspectiveDsl.g:23573:2: ( ruleNumber )
+            {
+            // InternalPerspectiveDsl.g:23573:2: ( ruleNumber )
+            // InternalPerspectiveDsl.g:23574: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"
+    // InternalPerspectiveDsl.g:23583:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23587:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:23588:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:23588:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:23589: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"
+    // InternalPerspectiveDsl.g:23598:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23602:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:23603:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalPerspectiveDsl.g:23603:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:23604:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+            }
+            // InternalPerspectiveDsl.g:23605:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:23606: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"
+    // InternalPerspectiveDsl.g:23617:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
+    public final void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23621:1: ( ( ruleArrayBrackets ) )
+            // InternalPerspectiveDsl.g:23622:2: ( ruleArrayBrackets )
+            {
+            // InternalPerspectiveDsl.g:23622:2: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:23623: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"
+    // InternalPerspectiveDsl.g:23632:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23636:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23637:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23637:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23638: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"
+    // InternalPerspectiveDsl.g:23647:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23651:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23652:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23652:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23653: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"
+    // InternalPerspectiveDsl.g:23662:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23666:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23667:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23667:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23668: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"
+    // InternalPerspectiveDsl.g:23677:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
+    public final void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23681:1: ( ( ruleXCatchClause ) )
+            // InternalPerspectiveDsl.g:23682:2: ( ruleXCatchClause )
+            {
+            // InternalPerspectiveDsl.g:23682:2: ( ruleXCatchClause )
+            // InternalPerspectiveDsl.g:23683: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"
+    // InternalPerspectiveDsl.g:23692: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 {
+            // InternalPerspectiveDsl.g:23696:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23697:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23697:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23698: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"
+    // InternalPerspectiveDsl.g:23707:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23711:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23712:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23712:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23713: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"
+    // InternalPerspectiveDsl.g:23722:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23726:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23727:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23727:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23728: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"
+    // InternalPerspectiveDsl.g:23737:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23741:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23742:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23742:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23743: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"
+    // InternalPerspectiveDsl.g:23752:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
+    public final void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23756:1: ( ( ruleFullJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23757:2: ( ruleFullJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:23757:2: ( ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23758: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"
+    // InternalPerspectiveDsl.g:23767:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
+    public final void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23771:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23772:2: ( ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:23772:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23773: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"
+    // InternalPerspectiveDsl.g:23782:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23786:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23787:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23787:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23788: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"
+    // InternalPerspectiveDsl.g:23797: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 {
+            // InternalPerspectiveDsl.g:23801:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23802:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23802:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23803: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"
+    // InternalPerspectiveDsl.g:23812:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
+    public final void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23816:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23817:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23817:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23818: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"
+    // InternalPerspectiveDsl.g:23827:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23831:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:23832:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalPerspectiveDsl.g:23832:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:23833:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
+            }
+            // InternalPerspectiveDsl.g:23834:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:23835: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"
+    // InternalPerspectiveDsl.g:23846:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23850:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23851:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23851:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23852: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"
+    // InternalPerspectiveDsl.g:23861:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23865:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23866:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23866:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23867: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"
+    // InternalPerspectiveDsl.g:23876:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
+    public final void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23880:1: ( ( ( ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:23881:2: ( ( ruleValidID ) )
+            {
+            // InternalPerspectiveDsl.g:23881:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:23882:3: ( ruleValidID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
+            }
+            // InternalPerspectiveDsl.g:23883:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:23884: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"
+    // InternalPerspectiveDsl.g:23895: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 {
+            // InternalPerspectiveDsl.g:23899:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23900:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23900:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23901: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"
+    // InternalPerspectiveDsl.g:23910: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 {
+            // InternalPerspectiveDsl.g:23914:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23915:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23915:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23916: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"
+    // InternalPerspectiveDsl.g:23925:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23929:1: ( ( ruleJvmUpperBound ) )
+            // InternalPerspectiveDsl.g:23930:2: ( ruleJvmUpperBound )
+            {
+            // InternalPerspectiveDsl.g:23930:2: ( ruleJvmUpperBound )
+            // InternalPerspectiveDsl.g:23931: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"
+    // InternalPerspectiveDsl.g:23940:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23944:1: ( ( ruleJvmUpperBoundAnded ) )
+            // InternalPerspectiveDsl.g:23945:2: ( ruleJvmUpperBoundAnded )
+            {
+            // InternalPerspectiveDsl.g:23945:2: ( ruleJvmUpperBoundAnded )
+            // InternalPerspectiveDsl.g:23946: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"
+    // InternalPerspectiveDsl.g:23955:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23959:1: ( ( ruleJvmLowerBound ) )
+            // InternalPerspectiveDsl.g:23960:2: ( ruleJvmLowerBound )
+            {
+            // InternalPerspectiveDsl.g:23960:2: ( ruleJvmLowerBound )
+            // InternalPerspectiveDsl.g:23961: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"
+    // InternalPerspectiveDsl.g:23970:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23974:1: ( ( ruleJvmLowerBoundAnded ) )
+            // InternalPerspectiveDsl.g:23975:2: ( ruleJvmLowerBoundAnded )
+            {
+            // InternalPerspectiveDsl.g:23975:2: ( ruleJvmLowerBoundAnded )
+            // InternalPerspectiveDsl.g:23976: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"
+    // InternalPerspectiveDsl.g:23985:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:23989:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23990:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:23990:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23991: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"
+    // InternalPerspectiveDsl.g:24000:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:24004:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24005:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:24005:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24006: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"
+    // InternalPerspectiveDsl.g:24015:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:24019:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24020:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:24020:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24021: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"
+    // InternalPerspectiveDsl.g:24030:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:24034:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24035:2: ( ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:24035:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24036: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"
+    // InternalPerspectiveDsl.g:24045:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
+    public final void rule__XImportSection__ImportDeclarationsAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:24049:1: ( ( ruleXImportDeclaration ) )
+            // InternalPerspectiveDsl.g:24050:2: ( ruleXImportDeclaration )
+            {
+            // InternalPerspectiveDsl.g:24050:2: ( ruleXImportDeclaration )
+            // InternalPerspectiveDsl.g:24051: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 synpred22_InternalPerspectiveDsl
+    public final void synpred22_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2908:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
+        // InternalPerspectiveDsl.g:2908:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        {
+        // InternalPerspectiveDsl.g:2908:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        // InternalPerspectiveDsl.g:2909:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+        }
+        // InternalPerspectiveDsl.g:2910:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalPerspectiveDsl.g:2910: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 synpred22_InternalPerspectiveDsl
+
+    // $ANTLR start synpred23_InternalPerspectiveDsl
+    public final void synpred23_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2929:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
+        // InternalPerspectiveDsl.g:2929:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        {
+        // InternalPerspectiveDsl.g:2929:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        // InternalPerspectiveDsl.g:2930:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+        }
+        // InternalPerspectiveDsl.g:2931:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        // InternalPerspectiveDsl.g:2931:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotationElementValueOrCommaList__Group_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred23_InternalPerspectiveDsl
+
+    // $ANTLR start synpred24_InternalPerspectiveDsl
+    public final void synpred24_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2950:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
+        // InternalPerspectiveDsl.g:2950:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        {
+        // InternalPerspectiveDsl.g:2950:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        // InternalPerspectiveDsl.g:2951:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+        }
+        // InternalPerspectiveDsl.g:2952:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalPerspectiveDsl.g:2952:4: rule__XAnnotationElementValue__Group_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotationElementValue__Group_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred24_InternalPerspectiveDsl
+
+    // $ANTLR start synpred49_InternalPerspectiveDsl
+    public final void synpred49_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3235:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
+        // InternalPerspectiveDsl.g:3235:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        {
+        // InternalPerspectiveDsl.g:3235:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        // InternalPerspectiveDsl.g:3236:3: ( rule__OpOther__Group_6_1_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
+        }
+        // InternalPerspectiveDsl.g:3237:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalPerspectiveDsl.g:3237: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 synpred49_InternalPerspectiveDsl
+
+    // $ANTLR start synpred50_InternalPerspectiveDsl
+    public final void synpred50_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3241:2: ( ( '<' ) )
+        // InternalPerspectiveDsl.g:3241:2: ( '<' )
+        {
+        // InternalPerspectiveDsl.g:3241:2: ( '<' )
+        // InternalPerspectiveDsl.g:3242:3: '<'
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+        }
+        match(input,27,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred50_InternalPerspectiveDsl
+
+    // $ANTLR start synpred63_InternalPerspectiveDsl
+    public final void synpred63_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3454:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
+        // InternalPerspectiveDsl.g:3454:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        {
+        // InternalPerspectiveDsl.g:3454:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        // InternalPerspectiveDsl.g:3455:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
+        }
+        // InternalPerspectiveDsl.g:3456:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalPerspectiveDsl.g:3456: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 synpred63_InternalPerspectiveDsl
+
+    // $ANTLR start synpred71_InternalPerspectiveDsl
+    public final void synpred71_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3517:2: ( ( ( ruleXForLoopExpression ) ) )
+        // InternalPerspectiveDsl.g:3517:2: ( ( ruleXForLoopExpression ) )
+        {
+        // InternalPerspectiveDsl.g:3517:2: ( ( ruleXForLoopExpression ) )
+        // InternalPerspectiveDsl.g:3518:3: ( ruleXForLoopExpression )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+        }
+        // InternalPerspectiveDsl.g:3519:3: ( ruleXForLoopExpression )
+        // InternalPerspectiveDsl.g:3519:4: ruleXForLoopExpression
+        {
+        pushFollow(FOLLOW_2);
+        ruleXForLoopExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred71_InternalPerspectiveDsl
+
+    // $ANTLR start synpred72_InternalPerspectiveDsl
+    public final void synpred72_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3523:2: ( ( ruleXBasicForLoopExpression ) )
+        // InternalPerspectiveDsl.g:3523:2: ( ruleXBasicForLoopExpression )
+        {
+        // InternalPerspectiveDsl.g:3523:2: ( ruleXBasicForLoopExpression )
+        // InternalPerspectiveDsl.g:3524:3: ruleXBasicForLoopExpression
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
+        }
+        pushFollow(FOLLOW_2);
+        ruleXBasicForLoopExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred72_InternalPerspectiveDsl
+
+    // $ANTLR start synpred85_InternalPerspectiveDsl
+    public final void synpred85_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3646:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
+        // InternalPerspectiveDsl.g:3646:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        {
+        // InternalPerspectiveDsl.g:3646:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        // InternalPerspectiveDsl.g:3647:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
+        }
+        // InternalPerspectiveDsl.g:3648:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalPerspectiveDsl.g:3648:4: rule__XSwitchExpression__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XSwitchExpression__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred85_InternalPerspectiveDsl
+
+    // $ANTLR start synpred89_InternalPerspectiveDsl
+    public final void synpred89_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3730:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
+        // InternalPerspectiveDsl.g:3730:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        {
+        // InternalPerspectiveDsl.g:3730:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        // InternalPerspectiveDsl.g:3731:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
+        }
+        // InternalPerspectiveDsl.g:3732:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalPerspectiveDsl.g:3732:4: rule__XVariableDeclaration__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XVariableDeclaration__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred89_InternalPerspectiveDsl
+
+    // $ANTLR start synpred90_InternalPerspectiveDsl
+    public final void synpred90_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3751:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
+        // InternalPerspectiveDsl.g:3751:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        {
+        // InternalPerspectiveDsl.g:3751:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        // InternalPerspectiveDsl.g:3752:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
+        }
+        // InternalPerspectiveDsl.g:3753:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalPerspectiveDsl.g:3753:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred90_InternalPerspectiveDsl
+
+    // $ANTLR start synpred96_InternalPerspectiveDsl
+    public final void synpred96_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3832:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
+        // InternalPerspectiveDsl.g:3832:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        {
+        // InternalPerspectiveDsl.g:3832:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        // InternalPerspectiveDsl.g:3833:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
+        }
+        // InternalPerspectiveDsl.g:3834:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalPerspectiveDsl.g:3834:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__ArgumentsAssignment_4_1_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred96_InternalPerspectiveDsl
+
+    // $ANTLR start synpred126_InternalPerspectiveDsl
+    public final void synpred126_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:8922:3: ( rule__XAssignment__Group_1_1__0 )
+        // InternalPerspectiveDsl.g:8922:3: rule__XAssignment__Group_1_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAssignment__Group_1_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred126_InternalPerspectiveDsl
+
+    // $ANTLR start synpred128_InternalPerspectiveDsl
+    public final void synpred128_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:9273:3: ( rule__XOrExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:9273:3: rule__XOrExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XOrExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred128_InternalPerspectiveDsl
+
+    // $ANTLR start synpred129_InternalPerspectiveDsl
+    public final void synpred129_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:9462:3: ( rule__XAndExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:9462:3: rule__XAndExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAndExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred129_InternalPerspectiveDsl
+
+    // $ANTLR start synpred130_InternalPerspectiveDsl
+    public final void synpred130_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:9651:3: ( rule__XEqualityExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:9651:3: rule__XEqualityExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XEqualityExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred130_InternalPerspectiveDsl
+
+    // $ANTLR start synpred131_InternalPerspectiveDsl
+    public final void synpred131_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:9840:3: ( rule__XRelationalExpression__Alternatives_1 )
+        // InternalPerspectiveDsl.g:9840:3: rule__XRelationalExpression__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XRelationalExpression__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred131_InternalPerspectiveDsl
+
+    // $ANTLR start synpred132_InternalPerspectiveDsl
+    public final void synpred132_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:10218:3: ( rule__XOtherOperatorExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:10218:3: rule__XOtherOperatorExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XOtherOperatorExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred132_InternalPerspectiveDsl
+
+    // $ANTLR start synpred133_InternalPerspectiveDsl
+    public final void synpred133_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:10731:3: ( rule__XAdditiveExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:10731:3: rule__XAdditiveExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAdditiveExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred133_InternalPerspectiveDsl
+
+    // $ANTLR start synpred134_InternalPerspectiveDsl
+    public final void synpred134_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:10920:3: ( rule__XMultiplicativeExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:10920:3: rule__XMultiplicativeExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMultiplicativeExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred134_InternalPerspectiveDsl
+
+    // $ANTLR start synpred135_InternalPerspectiveDsl
+    public final void synpred135_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:11190:3: ( rule__XCastedExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:11190:3: rule__XCastedExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XCastedExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred135_InternalPerspectiveDsl
+
+    // $ANTLR start synpred136_InternalPerspectiveDsl
+    public final void synpred136_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:11379:3: ( rule__XPostfixOperation__Group_1__0 )
+        // InternalPerspectiveDsl.g:11379:3: rule__XPostfixOperation__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XPostfixOperation__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred136_InternalPerspectiveDsl
+
+    // $ANTLR start synpred137_InternalPerspectiveDsl
+    public final void synpred137_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:11514:3: ( rule__XMemberFeatureCall__Alternatives_1 )
+        // InternalPerspectiveDsl.g:11514:3: rule__XMemberFeatureCall__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred137_InternalPerspectiveDsl
+
+    // $ANTLR start synpred139_InternalPerspectiveDsl
+    public final void synpred139_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:11812:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
+        // InternalPerspectiveDsl.g:11812: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 synpred139_InternalPerspectiveDsl
+
+    // $ANTLR start synpred140_InternalPerspectiveDsl
+    public final void synpred140_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:11838:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
+        // InternalPerspectiveDsl.g:11838:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred140_InternalPerspectiveDsl
+
+    // $ANTLR start synpred148_InternalPerspectiveDsl
+    public final void synpred148_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:12811:3: ( rule__XClosure__Group_1__0 )
+        // InternalPerspectiveDsl.g:12811:3: rule__XClosure__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XClosure__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred148_InternalPerspectiveDsl
+
+    // $ANTLR start synpred155_InternalPerspectiveDsl
+    public final void synpred155_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:13782:3: ( rule__XIfExpression__Group_6__0 )
+        // InternalPerspectiveDsl.g:13782:3: rule__XIfExpression__Group_6__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XIfExpression__Group_6__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred155_InternalPerspectiveDsl
+
+    // $ANTLR start synpred158_InternalPerspectiveDsl
+    public final void synpred158_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:14242:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
+        // InternalPerspectiveDsl.g:14242: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 synpred158_InternalPerspectiveDsl
+
+    // $ANTLR start synpred171_InternalPerspectiveDsl
+    public final void synpred171_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:16375:3: ( rule__XFeatureCall__Group_3__0 )
+        // InternalPerspectiveDsl.g:16375:3: rule__XFeatureCall__Group_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__Group_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred171_InternalPerspectiveDsl
+
+    // $ANTLR start synpred172_InternalPerspectiveDsl
+    public final void synpred172_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:16401:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
+        // InternalPerspectiveDsl.g:16401:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred172_InternalPerspectiveDsl
+
+    // $ANTLR start synpred176_InternalPerspectiveDsl
+    public final void synpred176_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:16861:3: ( rule__XConstructorCall__Group_3__0 )
+        // InternalPerspectiveDsl.g:16861:3: rule__XConstructorCall__Group_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__Group_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred176_InternalPerspectiveDsl
+
+    // $ANTLR start synpred177_InternalPerspectiveDsl
+    public final void synpred177_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:16888:3: ( rule__XConstructorCall__Group_4__0 )
+        // InternalPerspectiveDsl.g:16888:3: rule__XConstructorCall__Group_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__Group_4__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred177_InternalPerspectiveDsl
+
+    // $ANTLR start synpred178_InternalPerspectiveDsl
+    public final void synpred178_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:16914:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
+        // InternalPerspectiveDsl.g:16914:3: rule__XConstructorCall__ArgumentsAssignment_5
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__ArgumentsAssignment_5();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred178_InternalPerspectiveDsl
+
+    // $ANTLR start synpred183_InternalPerspectiveDsl
+    public final void synpred183_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:17805:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
+        // InternalPerspectiveDsl.g:17805:3: rule__XReturnExpression__ExpressionAssignment_2
+        {
+        pushFollow(FOLLOW_2);
+        rule__XReturnExpression__ExpressionAssignment_2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred183_InternalPerspectiveDsl
+
+    // $ANTLR start synpred184_InternalPerspectiveDsl
+    public final void synpred184_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:17947:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+        // InternalPerspectiveDsl.g:17947:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred184_InternalPerspectiveDsl
+
+    // $ANTLR start synpred185_InternalPerspectiveDsl
+    public final void synpred185_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:17974:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
+        // InternalPerspectiveDsl.g:17974: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 synpred185_InternalPerspectiveDsl
+
+    // $ANTLR start synpred186_InternalPerspectiveDsl
+    public final void synpred186_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:18487:3: ( rule__QualifiedName__Group_1__0 )
+        // InternalPerspectiveDsl.g:18487:3: rule__QualifiedName__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__QualifiedName__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred186_InternalPerspectiveDsl
+
+    // $ANTLR start synpred188_InternalPerspectiveDsl
+    public final void synpred188_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:18703:3: ( rule__JvmTypeReference__Group_0_1__0 )
+        // InternalPerspectiveDsl.g:18703:3: rule__JvmTypeReference__Group_0_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmTypeReference__Group_0_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred188_InternalPerspectiveDsl
+
+    // $ANTLR start synpred192_InternalPerspectiveDsl
+    public final void synpred192_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:19162:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
+        // InternalPerspectiveDsl.g:19162:3: rule__JvmParameterizedTypeReference__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmParameterizedTypeReference__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred192_InternalPerspectiveDsl
+
+    // $ANTLR start synpred194_InternalPerspectiveDsl
+    public final void synpred194_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:19297:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
+        // InternalPerspectiveDsl.g:19297:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmParameterizedTypeReference__Group_1_4__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred194_InternalPerspectiveDsl
+
+    // $ANTLR start synpred195_InternalPerspectiveDsl
+    public final void synpred195_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:19432:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
+        // InternalPerspectiveDsl.g:19432: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 synpred195_InternalPerspectiveDsl
+
+    // $ANTLR start synpred200_InternalPerspectiveDsl
+    public final void synpred200_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20230:2: ( rule__Perspective__UnorderedGroup_5__0 )
+        // InternalPerspectiveDsl.g:20230:2: rule__Perspective__UnorderedGroup_5__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__Perspective__UnorderedGroup_5__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred200_InternalPerspectiveDsl
+
+    // $ANTLR start synpred201_InternalPerspectiveDsl
+    public final void synpred201_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20245:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20245:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20245:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20246:4: {...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred201_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)");
+        }
+        // InternalPerspectiveDsl.g:20246:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20247:5: ( ( rule__Perspective__Group_5_0__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
+        // InternalPerspectiveDsl.g:20253:5: ( ( rule__Perspective__Group_5_0__0 ) )
+        // InternalPerspectiveDsl.g:20254:6: ( rule__Perspective__Group_5_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectiveAccess().getGroup_5_0()); 
+        }
+        // InternalPerspectiveDsl.g:20255:6: ( rule__Perspective__Group_5_0__0 )
+        // InternalPerspectiveDsl.g:20255:7: rule__Perspective__Group_5_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__Perspective__Group_5_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred201_InternalPerspectiveDsl
+
+    // $ANTLR start synpred202_InternalPerspectiveDsl
+    public final void synpred202_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20260:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20260:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20260:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20261:4: {...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred202_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1)");
+        }
+        // InternalPerspectiveDsl.g:20261:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20262:5: ( ( rule__Perspective__Group_5_1__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
+        // InternalPerspectiveDsl.g:20268:5: ( ( rule__Perspective__Group_5_1__0 ) )
+        // InternalPerspectiveDsl.g:20269:6: ( rule__Perspective__Group_5_1__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectiveAccess().getGroup_5_1()); 
+        }
+        // InternalPerspectiveDsl.g:20270:6: ( rule__Perspective__Group_5_1__0 )
+        // InternalPerspectiveDsl.g:20270:7: rule__Perspective__Group_5_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__Perspective__Group_5_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred202_InternalPerspectiveDsl
+
+    // $ANTLR start synpred203_InternalPerspectiveDsl
+    public final void synpred203_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20304:2: ( rule__Perspective__UnorderedGroup_5__1 )
+        // InternalPerspectiveDsl.g:20304:2: rule__Perspective__UnorderedGroup_5__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__Perspective__UnorderedGroup_5__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred203_InternalPerspectiveDsl
+
+    // $ANTLR start synpred204_InternalPerspectiveDsl
+    public final void synpred204_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20316:2: ( rule__Perspective__UnorderedGroup_5__2 )
+        // InternalPerspectiveDsl.g:20316:2: rule__Perspective__UnorderedGroup_5__2
+        {
+        pushFollow(FOLLOW_2);
+        rule__Perspective__UnorderedGroup_5__2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred204_InternalPerspectiveDsl
+
+    // $ANTLR start synpred205_InternalPerspectiveDsl
+    public final void synpred205_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20340:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )
+        // InternalPerspectiveDsl.g:20340:2: rule__PerspectiveSashContainer__UnorderedGroup_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSashContainer__UnorderedGroup_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred205_InternalPerspectiveDsl
+
+    // $ANTLR start synpred206_InternalPerspectiveDsl
+    public final void synpred206_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20355:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20355:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20355:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20356:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred206_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0)");
+        }
+        // InternalPerspectiveDsl.g:20356:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20357:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
+        // InternalPerspectiveDsl.g:20363:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:20364:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); 
+        }
+        // InternalPerspectiveDsl.g:20365:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:20365:7: rule__PerspectiveSashContainer__Group_3_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSashContainer__Group_3_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred206_InternalPerspectiveDsl
+
+    // $ANTLR start synpred207_InternalPerspectiveDsl
+    public final void synpred207_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20370:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20370:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20370:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20371:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred207_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1)");
+        }
+        // InternalPerspectiveDsl.g:20371:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20372:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
+        // InternalPerspectiveDsl.g:20378:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:20379:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); 
+        }
+        // InternalPerspectiveDsl.g:20380:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:20380:7: rule__PerspectiveSashContainer__Group_3_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSashContainer__Group_3_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred207_InternalPerspectiveDsl
+
+    // $ANTLR start synpred208_InternalPerspectiveDsl
+    public final void synpred208_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20385:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20385:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20385:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20386:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred208_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2)");
+        }
+        // InternalPerspectiveDsl.g:20386:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:20387:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
+        // InternalPerspectiveDsl.g:20393:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:20394:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); 
+        }
+        // InternalPerspectiveDsl.g:20395:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+        // InternalPerspectiveDsl.g:20395:7: rule__PerspectiveSashContainer__Group_3_2__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSashContainer__Group_3_2__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred208_InternalPerspectiveDsl
+
+    // $ANTLR start synpred209_InternalPerspectiveDsl
+    public final void synpred209_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20429:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )
+        // InternalPerspectiveDsl.g:20429:2: rule__PerspectiveSashContainer__UnorderedGroup_3__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSashContainer__UnorderedGroup_3__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred209_InternalPerspectiveDsl
+
+    // $ANTLR start synpred210_InternalPerspectiveDsl
+    public final void synpred210_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20441:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )
+        // InternalPerspectiveDsl.g:20441:2: rule__PerspectiveSashContainer__UnorderedGroup_3__2
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSashContainer__UnorderedGroup_3__2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred210_InternalPerspectiveDsl
+
+    // $ANTLR start synpred211_InternalPerspectiveDsl
+    public final void synpred211_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20453:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )
+        // InternalPerspectiveDsl.g:20453:2: rule__PerspectiveSashContainer__UnorderedGroup_3__3
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSashContainer__UnorderedGroup_3__3();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred211_InternalPerspectiveDsl
+
+    // $ANTLR start synpred212_InternalPerspectiveDsl
+    public final void synpred212_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20477:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )
+        // InternalPerspectiveDsl.g:20477:2: rule__PerspectivePartStack__UnorderedGroup_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePartStack__UnorderedGroup_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred212_InternalPerspectiveDsl
+
+    // $ANTLR start synpred213_InternalPerspectiveDsl
+    public final void synpred213_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20492:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20492:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20492:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20493:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred213_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0)");
+        }
+        // InternalPerspectiveDsl.g:20493:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20494:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
+        // InternalPerspectiveDsl.g:20500:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:20501:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0()); 
+        }
+        // InternalPerspectiveDsl.g:20502:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:20502:7: rule__PerspectivePartStack__Group_3_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePartStack__Group_3_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred213_InternalPerspectiveDsl
+
+    // $ANTLR start synpred214_InternalPerspectiveDsl
+    public final void synpred214_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20507:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20507:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20507:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20508:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred214_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)");
+        }
+        // InternalPerspectiveDsl.g:20508:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20509:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
+        // InternalPerspectiveDsl.g:20515:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:20516:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1()); 
+        }
+        // InternalPerspectiveDsl.g:20517:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:20517:7: rule__PerspectivePartStack__Group_3_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePartStack__Group_3_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred214_InternalPerspectiveDsl
+
+    // $ANTLR start synpred215_InternalPerspectiveDsl
+    public final void synpred215_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20551:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )
+        // InternalPerspectiveDsl.g:20551:2: rule__PerspectivePartStack__UnorderedGroup_3__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePartStack__UnorderedGroup_3__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred215_InternalPerspectiveDsl
+
+    // $ANTLR start synpred216_InternalPerspectiveDsl
+    public final void synpred216_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20563:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )
+        // InternalPerspectiveDsl.g:20563:2: rule__PerspectivePartStack__UnorderedGroup_3__2
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePartStack__UnorderedGroup_3__2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred216_InternalPerspectiveDsl
+
+    // $ANTLR start synpred217_InternalPerspectiveDsl
+    public final void synpred217_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20587:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )
+        // InternalPerspectiveDsl.g:20587:2: rule__PerspectivePart__UnorderedGroup_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__UnorderedGroup_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred217_InternalPerspectiveDsl
+
+    // $ANTLR start synpred218_InternalPerspectiveDsl
+    public final void synpred218_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20602:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20602:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20602:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20603:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred218_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)");
+        }
+        // InternalPerspectiveDsl.g:20603:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20604:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
+        // InternalPerspectiveDsl.g:20610:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:20611:6: ( rule__PerspectivePart__Group_3_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); 
+        }
+        // InternalPerspectiveDsl.g:20612:6: ( rule__PerspectivePart__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:20612:7: rule__PerspectivePart__Group_3_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__Group_3_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred218_InternalPerspectiveDsl
+
+    // $ANTLR start synpred219_InternalPerspectiveDsl
+    public final void synpred219_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20617:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20617:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20617:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20618:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred219_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)");
+        }
+        // InternalPerspectiveDsl.g:20618:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:20619:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
+        // InternalPerspectiveDsl.g:20625:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:20626:6: ( rule__PerspectivePart__Group_3_1__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); 
+        }
+        // InternalPerspectiveDsl.g:20627:6: ( rule__PerspectivePart__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:20627:7: rule__PerspectivePart__Group_3_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__Group_3_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred219_InternalPerspectiveDsl
+
+    // $ANTLR start synpred220_InternalPerspectiveDsl
+    public final void synpred220_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20632:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20632:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20632:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20633:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred220_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)");
+        }
+        // InternalPerspectiveDsl.g:20633:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:20634:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
+        // InternalPerspectiveDsl.g:20640:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:20641:6: ( rule__PerspectivePart__Group_3_2__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); 
+        }
+        // InternalPerspectiveDsl.g:20642:6: ( rule__PerspectivePart__Group_3_2__0 )
+        // InternalPerspectiveDsl.g:20642:7: rule__PerspectivePart__Group_3_2__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__Group_3_2__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred220_InternalPerspectiveDsl
+
+    // $ANTLR start synpred221_InternalPerspectiveDsl
+    public final void synpred221_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20647:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20647:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20647:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20648:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred221_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)");
+        }
+        // InternalPerspectiveDsl.g:20648:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+        // InternalPerspectiveDsl.g:20649:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
+        // InternalPerspectiveDsl.g:20655:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+        // InternalPerspectiveDsl.g:20656:6: ( rule__PerspectivePart__Group_3_3__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); 
+        }
+        // InternalPerspectiveDsl.g:20657:6: ( rule__PerspectivePart__Group_3_3__0 )
+        // InternalPerspectiveDsl.g:20657:7: rule__PerspectivePart__Group_3_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__Group_3_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred221_InternalPerspectiveDsl
+
+    // $ANTLR start synpred222_InternalPerspectiveDsl
+    public final void synpred222_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20691:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )
+        // InternalPerspectiveDsl.g:20691:2: rule__PerspectivePart__UnorderedGroup_3__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__UnorderedGroup_3__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred222_InternalPerspectiveDsl
+
+    // $ANTLR start synpred223_InternalPerspectiveDsl
+    public final void synpred223_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20703:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )
+        // InternalPerspectiveDsl.g:20703:2: rule__PerspectivePart__UnorderedGroup_3__2
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__UnorderedGroup_3__2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred223_InternalPerspectiveDsl
+
+    // $ANTLR start synpred224_InternalPerspectiveDsl
+    public final void synpred224_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20715:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )
+        // InternalPerspectiveDsl.g:20715:2: rule__PerspectivePart__UnorderedGroup_3__3
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__UnorderedGroup_3__3();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred224_InternalPerspectiveDsl
+
+    // $ANTLR start synpred225_InternalPerspectiveDsl
+    public final void synpred225_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20727:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )
+        // InternalPerspectiveDsl.g:20727:2: rule__PerspectivePart__UnorderedGroup_3__4
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__UnorderedGroup_3__4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred225_InternalPerspectiveDsl
+
+    // $ANTLR start synpred226_InternalPerspectiveDsl
+    public final void synpred226_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20751:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )
+        // InternalPerspectiveDsl.g:20751:2: rule__PerspectiveSearch__UnorderedGroup_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSearch__UnorderedGroup_4__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred226_InternalPerspectiveDsl
+
+    // $ANTLR start synpred227_InternalPerspectiveDsl
+    public final void synpred227_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20766:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:20766:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:20766:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:20767:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred227_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)");
+        }
+        // InternalPerspectiveDsl.g:20767:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+        // InternalPerspectiveDsl.g:20768:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
+        // InternalPerspectiveDsl.g:20774:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+        // InternalPerspectiveDsl.g:20775:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0()); 
+        }
+        // InternalPerspectiveDsl.g:20776:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+        // InternalPerspectiveDsl.g:20776:7: rule__PerspectiveSearch__Group_4_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSearch__Group_4_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred227_InternalPerspectiveDsl
+
+    // $ANTLR start synpred228_InternalPerspectiveDsl
+    public final void synpred228_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:20810:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )
+        // InternalPerspectiveDsl.g:20810:2: rule__PerspectiveSearch__UnorderedGroup_4__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSearch__UnorderedGroup_4__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred228_InternalPerspectiveDsl
+
+    // Delegated rules
+
+    public final boolean synpred130_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred130_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred49_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred188_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred188_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred227_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred206_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred172_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred172_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred211_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred211_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred71_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred71_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred50_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred184_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred184_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred215_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred134_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred134_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred96_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred96_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred137_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred137_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred219_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred219_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred223_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred202_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred202_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred24_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred158_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred158_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred129_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred129_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred126_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred171_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred171_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred207_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred207_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred210_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred210_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred214_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred133_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred133_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred222_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred63_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred63_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred218_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred218_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred176_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred176_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred183_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred183_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred203_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred195_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred195_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred226_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred208_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred148_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred186_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred186_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred213_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred213_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred139_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred139_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred132_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred132_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred90_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred90_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred140_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred140_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred177_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred177_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred217_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred217_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred135_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred135_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred200_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred200_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred22_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred221_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred204_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred225_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred194_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred194_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred89_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred89_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred85_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred228_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred192_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred209_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred209_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred205_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred212_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred72_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred72_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred185_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred185_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred131_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred131_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred23_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred136_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred136_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred201_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred201_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred178_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred155_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred216_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred216_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred220_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred128_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred128_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred224_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+    protected DFA5 dfa5 = new DFA5(this);
+    protected DFA7 dfa7 = new DFA7(this);
+    protected DFA8 dfa8 = new DFA8(this);
+    protected DFA9 dfa9 = new DFA9(this);
+    protected DFA16 dfa16 = new DFA16(this);
+    protected DFA24 dfa24 = new DFA24(this);
+    protected DFA27 dfa27 = new DFA27(this);
+    protected DFA28 dfa28 = new DFA28(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA36 dfa36 = new DFA36(this);
+    protected DFA39 dfa39 = new DFA39(this);
+    protected DFA69 dfa69 = new DFA69(this);
+    protected DFA75 dfa75 = new DFA75(this);
+    protected DFA82 dfa82 = new DFA82(this);
+    protected DFA83 dfa83 = new DFA83(this);
+    protected DFA91 dfa91 = new DFA91(this);
+    protected DFA101 dfa101 = new DFA101(this);
+    protected DFA114 dfa114 = new DFA114(this);
+    protected DFA115 dfa115 = new DFA115(this);
+    protected DFA119 dfa119 = new DFA119(this);
+    protected DFA120 dfa120 = new DFA120(this);
+    protected DFA121 dfa121 = new DFA121(this);
+    protected DFA126 dfa126 = new DFA126(this);
+    protected DFA135 dfa135 = new DFA135(this);
+    protected DFA138 dfa138 = new DFA138(this);
+    static final String dfa_1s = "\10\uffff";
+    static final String dfa_2s = "\2\uffff\1\5\3\uffff\1\5\1\uffff";
+    static final String dfa_3s = "\1\4\1\uffff\1\53\1\uffff\1\4\1\uffff\1\53\1\uffff";
+    static final String dfa_4s = "\1\170\1\uffff\1\130\1\uffff\1\44\1\uffff\1\130\1\uffff";
+    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\uffff\1\3";
+    static final String dfa_6s = "\10\uffff}>";
+    static final String[] dfa_7s = {
+            "\1\2\51\uffff\1\1\111\uffff\1\3",
+            "",
+            "\1\4\3\uffff\1\5\5\uffff\1\5\42\uffff\1\5",
+            "",
+            "\1\6\37\uffff\1\7",
+            "",
+            "\1\4\3\uffff\1\5\5\uffff\1\5\42\uffff\1\5",
+            ""
+    };
+
+    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
+    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
+    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
+    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
+    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
+    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
+    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
+
+    class DFA5 extends DFA {
+
+        public DFA5(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 5;
+            this.eot = dfa_1;
+            this.eof = dfa_2;
+            this.min = dfa_3;
+            this.max = dfa_4;
+            this.accept = dfa_5;
+            this.special = dfa_6;
+            this.transition = dfa_7;
+        }
+        public String getDescription() {
+            return "2849: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\175\1\0\41\uffff";
+    static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\1";
+    static final String dfa_12s = "\1\uffff\1\0\41\uffff}>";
+    static final String[] dfa_13s = {
+            "\1\1\4\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\3\uffff\1\2\42\uffff\2\2\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_8 = DFA.unpackEncodedString(dfa_8s);
+    static final char[] dfa_9 = DFA.unpackEncodedStringToUnsignedChars(dfa_9s);
+    static final char[] dfa_10 = DFA.unpackEncodedStringToUnsignedChars(dfa_10s);
+    static final short[] dfa_11 = DFA.unpackEncodedString(dfa_11s);
+    static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
+    static final short[][] dfa_13 = unpackEncodedStringArray(dfa_13s);
+
+    class DFA7 extends DFA {
+
+        public DFA7(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 7;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_13;
+        }
+        public String getDescription() {
+            return "2903:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA7_1 = input.LA(1);
+
+                         
+                        int index7_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred22_InternalPerspectiveDsl()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index7_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 7, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_14s = {
+            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\3\uffff\1\2\42\uffff\2\2\3\uffff\1\1\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s);
+
+    class DFA8 extends DFA {
+
+        public DFA8(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 8;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_14;
+        }
+        public String getDescription() {
+            return "2924:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA8_1 = input.LA(1);
+
+                         
+                        int index8_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred23_InternalPerspectiveDsl()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index8_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 8, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA9 extends DFA {
+
+        public DFA9(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 9;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_14;
+        }
+        public String getDescription() {
+            return "2945:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA9_1 = input.LA(1);
+
+                         
+                        int index9_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred24_InternalPerspectiveDsl()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index9_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 9, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_15s = "\13\uffff";
+    static final String dfa_16s = "\1\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 DFA16 extends DFA {
+
+        public DFA16(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 16;
+            this.eot = dfa_15;
+            this.eof = dfa_15;
+            this.min = dfa_16;
+            this.max = dfa_17;
+            this.accept = dfa_18;
+            this.special = dfa_19;
+            this.transition = dfa_20;
+        }
+        public String getDescription() {
+            return "3146:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+        }
+    }
+    static final String dfa_21s = "\12\uffff";
+    static final String dfa_22s = "\4\uffff\5\3\1\uffff";
+    static final String dfa_23s = "\1\53\2\4\1\uffff\5\4\1\uffff";
+    static final String dfa_24s = "\1\172\2\61\1\uffff\5\175\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\115\uffff\1\2\1\3",
+            "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\40\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\40\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\40\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\40\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\40\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            ""
+    };
+
+    static final short[] dfa_21 = DFA.unpackEncodedString(dfa_21s);
+    static final short[] dfa_22 = DFA.unpackEncodedString(dfa_22s);
+    static final char[] dfa_23 = DFA.unpackEncodedStringToUnsignedChars(dfa_23s);
+    static final char[] dfa_24 = DFA.unpackEncodedStringToUnsignedChars(dfa_24s);
+    static final short[] dfa_25 = DFA.unpackEncodedString(dfa_25s);
+    static final short[] dfa_26 = DFA.unpackEncodedString(dfa_26s);
+    static final short[][] dfa_27 = unpackEncodedStringArray(dfa_27s);
+
+    class DFA24 extends DFA {
+
+        public DFA24(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 24;
+            this.eot = dfa_21;
+            this.eof = dfa_22;
+            this.min = dfa_23;
+            this.max = dfa_24;
+            this.accept = dfa_25;
+            this.special = dfa_26;
+            this.transition = dfa_27;
+        }
+        public String getDescription() {
+            return "3380: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\175\2\0\40\uffff";
+    static final String dfa_30s = "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String dfa_31s = "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] dfa_32s = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\3\uffff\1\5\43\uffff\1\2\3\uffff\2\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\uffff\1\3\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final char[] dfa_28 = DFA.unpackEncodedStringToUnsignedChars(dfa_28s);
+    static final char[] dfa_29 = DFA.unpackEncodedStringToUnsignedChars(dfa_29s);
+    static final short[] dfa_30 = DFA.unpackEncodedString(dfa_30s);
+    static final short[] dfa_31 = DFA.unpackEncodedString(dfa_31s);
+    static final short[][] dfa_32 = unpackEncodedStringArray(dfa_32s);
+
+    class DFA27 extends DFA {
+
+        public DFA27(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 27;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_28;
+            this.max = dfa_29;
+            this.accept = dfa_30;
+            this.special = dfa_31;
+            this.transition = dfa_32;
+        }
+        public String getDescription() {
+            return "3449:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA27_1 = input.LA(1);
+
+                         
+                        int index27_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred63_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index27_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA27_2 = input.LA(1);
+
+                         
+                        int index27_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred63_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index27_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 27, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_33s = "\40\uffff";
+    static final String dfa_34s = "\1\4\26\uffff\1\0\10\uffff";
+    static final String dfa_35s = "\1\175\26\uffff\1\0\10\uffff";
+    static final String dfa_36s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
+    static final String dfa_37s = "\27\uffff\1\0\10\uffff}>";
+    static final String[] dfa_38s = {
+            "\1\5\4\14\22\uffff\1\5\21\uffff\5\5\1\14\3\uffff\1\2\43\uffff\1\35\3\uffff\2\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\12\uffff\1\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_33 = DFA.unpackEncodedString(dfa_33s);
+    static final char[] dfa_34 = DFA.unpackEncodedStringToUnsignedChars(dfa_34s);
+    static final char[] dfa_35 = DFA.unpackEncodedStringToUnsignedChars(dfa_35s);
+    static final short[] dfa_36 = DFA.unpackEncodedString(dfa_36s);
+    static final short[] dfa_37 = DFA.unpackEncodedString(dfa_37s);
+    static final short[][] dfa_38 = unpackEncodedStringArray(dfa_38s);
+
+    class DFA28 extends DFA {
+
+        public DFA28(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 28;
+            this.eot = dfa_33;
+            this.eof = dfa_33;
+            this.min = dfa_34;
+            this.max = dfa_35;
+            this.accept = dfa_36;
+            this.special = dfa_37;
+            this.transition = dfa_38;
+        }
+        public String getDescription() {
+            return "3470:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA28_23 = input.LA(1);
+
+                         
+                        int index28_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred71_InternalPerspectiveDsl()) ) {s = 30;}
+
+                        else if ( (synpred72_InternalPerspectiveDsl()) ) {s = 31;}
+
+                         
+                        input.seek(index28_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 28, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_39s = {
+            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\3\uffff\1\2\43\uffff\1\1\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_39 = unpackEncodedStringArray(dfa_39s);
+
+    class DFA31 extends DFA {
+
+        public DFA31(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 31;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_39;
+        }
+        public String getDescription() {
+            return "3641:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA31_1 = input.LA(1);
+
+                         
+                        int index31_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred85_InternalPerspectiveDsl()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index31_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 31, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA36 extends DFA {
+
+        public DFA36(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 36;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_28;
+            this.max = dfa_29;
+            this.accept = dfa_30;
+            this.special = dfa_31;
+            this.transition = dfa_32;
+        }
+        public String getDescription() {
+            return "3746:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA36_1 = input.LA(1);
+
+                         
+                        int index36_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred90_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index36_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA36_2 = input.LA(1);
+
+                         
+                        int index36_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred90_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index36_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 36, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA39 extends DFA {
+
+        public DFA39(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 39;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_28;
+            this.max = dfa_29;
+            this.accept = dfa_30;
+            this.special = dfa_31;
+            this.transition = dfa_32;
+        }
+        public String getDescription() {
+            return "3827:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA39_1 = input.LA(1);
+
+                         
+                        int index39_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred96_InternalPerspectiveDsl()) ) {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 ( (synpred96_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index39_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 39, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_40s = "\1\10\11\uffff";
+    static final String dfa_41s = "\1\4\7\0\2\uffff";
+    static final String dfa_42s = "\1\175\7\0\2\uffff";
+    static final String dfa_43s = "\10\uffff\1\2\1\1";
+    static final String dfa_44s = "\1\uffff\1\2\1\5\1\0\1\1\1\3\1\6\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\3\uffff\2\10\40\uffff\1\10\1\uffff\32\10\5\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 DFA69 extends DFA {
+
+        public DFA69(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 69;
+            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 "8922: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 LA69_3 = input.LA(1);
+
+                         
+                        int index69_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred126_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index69_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA69_4 = input.LA(1);
+
+                         
+                        int index69_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred126_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index69_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA69_1 = input.LA(1);
+
+                         
+                        int index69_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred126_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index69_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA69_5 = input.LA(1);
+
+                         
+                        int index69_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred126_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index69_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA69_7 = input.LA(1);
+
+                         
+                        int index69_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred126_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index69_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA69_2 = input.LA(1);
+
+                         
+                        int index69_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred126_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index69_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA69_6 = input.LA(1);
+
+                         
+                        int index69_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred126_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index69_6);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 69, _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\175\1\uffff\10\0\1\uffff";
+    static final String dfa_49s = "\1\uffff\1\2\10\uffff\1\1";
+    static final String dfa_50s = "\2\uffff\1\1\1\2\1\7\1\3\1\5\1\4\1\6\1\0\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\3\uffff\2\1\40\uffff\1\1\1\uffff\32\1\5\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 DFA75 extends DFA {
+
+        public DFA75(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 75;
+            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 10218: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 LA75_9 = input.LA(1);
+
+                         
+                        int index75_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA75_2 = input.LA(1);
+
+                         
+                        int index75_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA75_3 = input.LA(1);
+
+                         
+                        int index75_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA75_5 = input.LA(1);
+
+                         
+                        int index75_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA75_7 = input.LA(1);
+
+                         
+                        int index75_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA75_6 = input.LA(1);
+
+                         
+                        int index75_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA75_8 = input.LA(1);
+
+                         
+                        int index75_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA75_4 = input.LA(1);
+
+                         
+                        int index75_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred132_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index75_4);
+                        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 = "\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\175\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\3\uffff\2\2\40\uffff\1\2\1\uffff\1\1\31\2\5\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 DFA82 extends DFA {
+
+        public DFA82(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 82;
+            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 "11812: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 LA82_1 = input.LA(1);
+
+                         
+                        int index82_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred139_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index82_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 82, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_59s = {
+            "\5\2\5\uffff\45\2\3\uffff\2\2\40\uffff\1\2\1\uffff\5\2\1\1\24\2\5\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_59 = unpackEncodedStringArray(dfa_59s);
+
+    class DFA83 extends DFA {
+
+        public DFA83(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 83;
+            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 "11838: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 LA83_1 = input.LA(1);
+
+                         
+                        int index83_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred140_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index83_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 83, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_60s = "\46\uffff";
+    static final String dfa_61s = "\1\4\2\0\43\uffff";
+    static final String dfa_62s = "\1\175\2\0\43\uffff";
+    static final String dfa_63s = "\3\uffff\1\1\1\uffff\1\2\40\uffff";
+    static final String dfa_64s = "\1\uffff\1\0\1\1\43\uffff}>";
+    static final String[] dfa_65s = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\3\uffff\1\5\43\uffff\1\2\2\uffff\3\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\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 DFA91 extends DFA {
+
+        public DFA91(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 91;
+            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 "12811: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 LA91_1 = input.LA(1);
+
+                         
+                        int index91_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred148_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index91_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA91_2 = input.LA(1);
+
+                         
+                        int index91_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred148_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index91_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 91, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_66s = "\42\uffff";
+    static final String dfa_67s = "\1\4\2\0\37\uffff";
+    static final String dfa_68s = "\1\175\2\0\37\uffff";
+    static final String dfa_69s = "\3\uffff\1\1\1\2\35\uffff";
+    static final String dfa_70s = "\1\uffff\1\0\1\1\37\uffff}>";
+    static final String[] dfa_71s = {
+            "\1\1\4\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\3\uffff\1\4\43\uffff\1\2\3\uffff\2\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\12\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 DFA101 extends DFA {
+
+        public DFA101(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 101;
+            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 "14242: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 LA101_1 = input.LA(1);
+
+                         
+                        int index101_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred158_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index101_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA101_2 = input.LA(1);
+
+                         
+                        int index101_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred158_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index101_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 101, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA114 extends DFA {
+
+        public DFA114(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 114;
+            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 "16375: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 LA114_1 = input.LA(1);
+
+                         
+                        int index114_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred171_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index114_1);
+                        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 DFA115 extends DFA {
+
+        public DFA115(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 115;
+            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 "16401: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 LA115_1 = input.LA(1);
+
+                         
+                        int index115_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred172_InternalPerspectiveDsl()) ) {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;
+        }
+    }
+    static final String[] dfa_72s = {
+            "\5\2\5\uffff\15\2\1\1\27\2\3\uffff\2\2\40\uffff\1\2\1\uffff\32\2\5\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_72 = unpackEncodedStringArray(dfa_72s);
+
+    class DFA119 extends DFA {
+
+        public DFA119(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 119;
+            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 "16861: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 LA119_1 = input.LA(1);
+
+                         
+                        int index119_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred176_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index119_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 119, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA120 extends DFA {
+
+        public DFA120(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 120;
+            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 "16888: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 LA120_1 = input.LA(1);
+
+                         
+                        int index120_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred177_InternalPerspectiveDsl()) ) {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 DFA121 extends DFA {
+
+        public DFA121(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 121;
+            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 "16914: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 LA121_1 = input.LA(1);
+
+                         
+                        int index121_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred178_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index121_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 121, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_73s = "\1\41\115\uffff";
+    static final String dfa_74s = "\1\4\40\0\55\uffff";
+    static final String dfa_75s = "\1\175\40\0\55\uffff";
+    static final String dfa_76s = "\41\uffff\1\2\53\uffff\1\1";
+    static final String dfa_77s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
+    static final String[] dfa_78s = {
+            "\1\1\1\27\1\23\1\24\1\25\5\uffff\15\41\1\15\6\41\1\10\1\7\4\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\3\uffff\1\12\1\41\40\uffff\1\41\1\uffff\1\40\3\41\1\17\1\20\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\5\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 DFA126 extends DFA {
+
+        public DFA126(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 126;
+            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 "17805: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 LA126_1 = input.LA(1);
+
+                         
+                        int index126_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA126_2 = input.LA(1);
+
+                         
+                        int index126_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA126_3 = input.LA(1);
+
+                         
+                        int index126_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA126_4 = input.LA(1);
+
+                         
+                        int index126_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA126_5 = input.LA(1);
+
+                         
+                        int index126_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA126_6 = input.LA(1);
+
+                         
+                        int index126_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA126_7 = input.LA(1);
+
+                         
+                        int index126_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA126_8 = input.LA(1);
+
+                         
+                        int index126_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA126_9 = input.LA(1);
+
+                         
+                        int index126_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA126_10 = input.LA(1);
+
+                         
+                        int index126_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA126_11 = input.LA(1);
+
+                         
+                        int index126_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA126_12 = input.LA(1);
+
+                         
+                        int index126_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA126_13 = input.LA(1);
+
+                         
+                        int index126_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA126_14 = input.LA(1);
+
+                         
+                        int index126_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA126_15 = input.LA(1);
+
+                         
+                        int index126_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA126_16 = input.LA(1);
+
+                         
+                        int index126_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA126_17 = input.LA(1);
+
+                         
+                        int index126_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA126_18 = input.LA(1);
+
+                         
+                        int index126_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA126_19 = input.LA(1);
+
+                         
+                        int index126_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA126_20 = input.LA(1);
+
+                         
+                        int index126_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA126_21 = input.LA(1);
+
+                         
+                        int index126_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA126_22 = input.LA(1);
+
+                         
+                        int index126_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA126_23 = input.LA(1);
+
+                         
+                        int index126_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA126_24 = input.LA(1);
+
+                         
+                        int index126_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA126_25 = input.LA(1);
+
+                         
+                        int index126_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA126_26 = input.LA(1);
+
+                         
+                        int index126_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA126_27 = input.LA(1);
+
+                         
+                        int index126_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA126_28 = input.LA(1);
+
+                         
+                        int index126_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA126_29 = input.LA(1);
+
+                         
+                        int index126_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA126_30 = input.LA(1);
+
+                         
+                        int index126_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA126_31 = input.LA(1);
+
+                         
+                        int index126_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA126_32 = input.LA(1);
+
+                         
+                        int index126_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred183_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index126_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 126, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_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\175\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\3\uffff\2\2\40\uffff\1\2\1\uffff\32\2\1\uffff\1\2\3\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 DFA135 extends DFA {
+
+        public DFA135(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 135;
+            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 "19162: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 LA135_1 = input.LA(1);
+
+                         
+                        int index135_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred192_InternalPerspectiveDsl()) ) {s = 78;}
+
+                        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 DFA138 extends DFA {
+
+        public DFA138(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 138;
+            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 "19432: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 LA138_1 = input.LA(1);
+
+                         
+                        int index138_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred195_InternalPerspectiveDsl()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index138_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 138, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000800000000002L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000012L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0020000000000000L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0020000000000002L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0040000000000000L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0180000000000000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0100000000000002L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0100000000000000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x3A00000000000000L,0x0040000000000000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x4080000000000000L,0x000000000000000CL});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x4000000000000002L,0x000000000000000CL});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0400000000000000L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x4000000000000000L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x9000000000000000L,0x0000000000000003L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0018000000000000L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x1000000000000000L,0x0000000000000003L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x4000000000000000L,0x000000000000000CL});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x1800000000000000L,0x0080000000000012L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x00000000008CFFE0L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000000600000L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000800000000000L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000400000000010L,0x0100000000000000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0001000000000010L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000001000000010L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0047E10C080001F0L,0x2005FF14CE000000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0047E10C080001F0L,0x2005FF14C6000000L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0047E10C080001F0L,0x2005FF14E6000000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0001E00000000010L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x000000000C1F0000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000006000000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000008002L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000001E00000L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000001E00002L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x000000000E000000L,0x0000000100000000L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x000000000E000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000080000010L,0x0000000004000000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x00000003FC000000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x00000003FC000002L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000000088000000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000C00000000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000C00000002L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x000000F000000000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x000000F000000002L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000010C00000000L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000060000000000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000080000000000L,0x0600000000000000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000080000000002L,0x0600000000000000L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000080000000000L,0x0200000000000000L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0003E00008000010L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000000000000L,0x0000000084000000L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000080000010L,0x0010000004000000L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000004000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0047E10C880001F0L,0x2805FF14CE000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x00C7E10C080001F0L,0x2005FF14C6000000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0047F10C880001F0L,0x3805FF14C6000000L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000080000010L,0x0800000004000000L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0047F10C080001F2L,0x3005FF14C6000000L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0047E10C880001F0L,0x2005FF14C6000000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0080000080000010L,0x000000E014000000L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000080000012L,0x000000A014000000L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000080000010L,0x000000A014000000L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0047F10C080001F0L,0x3005FF14C7000000L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0047E10C080001F0L,0x2005FF14C7000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0047F10C080001F0L,0x3005FF14C6000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x00C7F10C080001F0L,0x3005FF14C6000000L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000100000000000L,0x1000000000000000L});
+    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000008000000L,0x0000000084000000L});
+    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0004000000000000L,0x2000000000000000L});
+    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x00000000000001C0L});
+    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x00040000000001E0L,0x20003000C0000000L});
+    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0000000000000000L,0x0000000088000000L});
+    public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_124 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0000000000000000L,0x000A000000000000L});
+    public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_128 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_131 = new BitSet(new long[]{0x0000080000000002L});
+    public static final BitSet FOLLOW_132 = new BitSet(new long[]{0x0000000000000180L});
+    public static final BitSet FOLLOW_133 = new BitSet(new long[]{0x0000000080000010L,0x000000000C000000L});
+    public static final BitSet FOLLOW_134 = new BitSet(new long[]{0x0002200000000000L});
+    public static final BitSet FOLLOW_135 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_136 = new BitSet(new long[]{0x0000000000000002L,0x0020000000000000L});
+    public static final BitSet FOLLOW_137 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_138 = new BitSet(new long[]{0x3800000000000002L});
+    public static final BitSet FOLLOW_139 = new BitSet(new long[]{0x9000000000000002L,0x0000000000000003L});
+    public static final BitSet FOLLOW_140 = new BitSet(new long[]{0x1000000000000002L,0x0000000000000003L});
+    public static final BitSet FOLLOW_141 = new BitSet(new long[]{0x1800000000000002L,0x0080000000000012L});
+    public static final BitSet FOLLOW_142 = new BitSet(new long[]{0x0000000000000002L,0x0000000000600000L});
+
+}
diff --git a/org.eclipse.osbp.xtext.perspective.ide/src/org/eclipse/osbp/xtext/perspective/ide/PerspectiveDslIdeModule.java b/org.eclipse.osbp.xtext.perspective.ide/src/org/eclipse/osbp/xtext/perspective/ide/PerspectiveDslIdeModule.java
new file mode 100644
index 0000000..e2cbba4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src/org/eclipse/osbp/xtext/perspective/ide/PerspectiveDslIdeModule.java
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.perspective.ide;
+
+
+/**
+ * Use this class to register ide components.
+ */
+public class PerspectiveDslIdeModule extends AbstractPerspectiveDslIdeModule {
+}
diff --git a/org.eclipse.osbp.xtext.perspective.ide/src/org/eclipse/osbp/xtext/perspective/ide/PerspectiveDslIdeSetup.java b/org.eclipse.osbp.xtext.perspective.ide/src/org/eclipse/osbp/xtext/perspective/ide/PerspectiveDslIdeSetup.java
new file mode 100644
index 0000000..637e7ed
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ide/src/org/eclipse/osbp/xtext/perspective/ide/PerspectiveDslIdeSetup.java
@@ -0,0 +1,22 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.perspective.ide;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslRuntimeModule;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslStandaloneSetup;
+import org.eclipse.xtext.util.Modules2;
+
+/**
+ * Initialization support for running Xtext languages as language servers.
+ */
+public class PerspectiveDslIdeSetup extends PerspectiveDslStandaloneSetup {
+
+	@Override
+	public Injector createInjector() {
+		return Guice.createInjector(Modules2.mixin(new PerspectiveDslRuntimeModule(), new PerspectiveDslIdeModule()));
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.perspective.tests/.classpath b/org.eclipse.osbp.xtext.perspective.tests/.classpath
new file mode 100644
index 0000000..f24e8b2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.tests/.classpath
@@ -0,0 +1,7 @@
+<?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-gen"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.perspective.tests/.gitignore b/org.eclipse.osbp.xtext.perspective.tests/.gitignore
new file mode 100644
index 0000000..92145bc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.tests/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/target/
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective.tests/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.perspective.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.perspective.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.tests/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.perspective.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.tests/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.perspective.tests/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.perspective.tests/META-INF/MANIFEST.MF
index 237ba05..87dd9f8 100644
--- a/org.eclipse.osbp.xtext.perspective.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.perspective.tests/META-INF/MANIFEST.MF
@@ -8,9 +8,15 @@
 Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
  org.apache.log4j;bundle-version="1.2.15",
  org.eclipse.core.runtime,
- org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
- com.google.inject;bundle-version="3.0.0",
- org.eclipse.ui;bundle-version="3.106.1"
+ org.eclipse.xtext.junit4;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ com.google.inject;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.osbp.xtext.perspective;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.perspective.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtext.testing,
+ org.eclipse.xtext.xbase.testing
 Import-Package: javax.validation,
  javax.validation.constraints,
  org.eclipse.osbp.xtext.perspective;version="0.9.0",
@@ -23,4 +29,4 @@
  org.junit.runners;version="4.5.0",
  org.junit.runners.model;version="4.5.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.osbp.xtext.perspective;version="0.9.0"
+Export-Package: org.eclipse.osbp.xtext.perspective.tests;x-internal=true
diff --git a/org.eclipse.osbp.xtext.perspective.tests/src-gen/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslInjectorProvider.java b/org.eclipse.osbp.xtext.perspective.tests/src-gen/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslInjectorProvider.java
new file mode 100644
index 0000000..812e43c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.tests/src-gen/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslInjectorProvider.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.perspective.tests;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslRuntimeModule;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslStandaloneSetup;
+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 PerspectiveDslInjectorProvider 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 PerspectiveDslStandaloneSetup() {
+			@Override
+			public Injector createInjector() {
+				return Guice.createInjector(createRuntimeModule());
+			}
+		}.createInjectorAndDoEMFRegistration();
+	}
+
+	protected PerspectiveDslRuntimeModule createRuntimeModule() {
+		// make it work also with Maven/Tycho and OSGI
+		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=493672
+		return new PerspectiveDslRuntimeModule() {
+			@Override
+			public ClassLoader bindClassLoaderToInstance() {
+				return PerspectiveDslInjectorProvider.class
+						.getClassLoader();
+			}
+		};
+	}
+
+	@Override
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	@Override
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.perspective.tests/src/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslParsingTest.xtend b/org.eclipse.osbp.xtext.perspective.tests/src/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslParsingTest.xtend
new file mode 100644
index 0000000..1a5f115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.tests/src/org/eclipse/osbp/xtext/perspective/tests/PerspectiveDslParsingTest.xtend
@@ -0,0 +1,29 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.perspective.tests
+
+import com.google.inject.Inject
+import org.eclipse.osbp.xtext.perspective.PerspectiveModel
+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(PerspectiveDslInjectorProvider)
+class PerspectiveDslParsingTest {
+	@Inject
+	ParseHelper<PerspectiveModel> 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.perspective.ui/.classpath b/org.eclipse.osbp.xtext.perspective.ui/.classpath
new file mode 100644
index 0000000..0377d77
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ui/.gitignore b/org.eclipse.osbp.xtext.perspective.ui/.gitignore
new file mode 100644
index 0000000..92145bc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/target/
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.perspective.ui/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.perspective.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ui/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs b/org.eclipse.osbp.xtext.perspective.ui/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs
new file mode 100644
index 0000000..5b778ad
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/.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=./src-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.perspective.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.perspective.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ui/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.perspective.ui/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ui/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.perspective.ui/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..c0460c2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,12 @@
+//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.directory=xtend-gen
+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.perspective.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.perspective.ui/META-INF/MANIFEST.MF
index c87bd68..81d4781 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.perspective.ui/META-INF/MANIFEST.MF
@@ -7,41 +7,42 @@
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.apache.log4j,
  org.slf4j.api;bundle-version="1.7.2",
- javax.annotation;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ com.google.inject;bundle-version="3.0.0",
+ org.eclipse.xtext.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.ui.editors;bundle-version="3.5.0",
  org.eclipse.ui.ide;bundle-version="3.5.0",
- org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.ui,
- org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.builder;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
  org.antlr.runtime,
- org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.jdt.debug.ui,
- org.eclipse.xtext.ui.codetemplates.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.codetemplates.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.compare,
  org.eclipse.osbp.fork.mihalis.opal.imageSelector.osgi;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.perspective;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.perspective.ide;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.preferences;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.bpmn2.ecore;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.dsl.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.e4.ui.model.workbench;bundle-version="1.1.0"
+ org.eclipse.e4.ui.model.workbench;bundle-version="1.1.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
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.xtext.perspective.ui;version="0.9.0",
  org.eclipse.osbp.xtext.perspective.ui.contentassist;version="0.9.0",
- org.eclipse.osbp.xtext.perspective.ui.contentassist.antlr;version="0.9.0",
- org.eclipse.osbp.xtext.perspective.ui.contentassist.antlr.internal;version="0.9.0",
  org.eclipse.osbp.xtext.perspective.ui.internal;version="0.9.0",
  org.eclipse.osbp.xtext.perspective.ui.labeling;version="0.9.0",
  org.eclipse.osbp.xtext.perspective.ui.outline;version="0.9.0",
  org.eclipse.osbp.xtext.perspective.ui.quickfix;version="0.9.0"
-Bundle-Activator: org.eclipse.osbp.xtext.perspective.ui.internal.PerspectiveDslActivator
+Bundle-Activator: org.eclipse.osbp.xtext.perspective.ui.internal.PerspectiveActivator
 Import-Package: javax.validation,
  javax.validation.constraints,
  org.apache.commons.lang3;version="3.4.0",
- org.apache.log4j
+ org.apache.log4j,
+ javax.annotation
+Bundle-ClassPath: src/,src-gen/,xtend-gen/,.
diff --git a/org.eclipse.osbp.xtext.perspective.ui/build.properties b/org.eclipse.osbp.xtext.perspective.ui/build.properties
index fa26477..c7fe03b 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/build.properties
+++ b/org.eclipse.osbp.xtext.perspective.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/,\
                .,\
                .settings/,\
                plugin.xml,\
@@ -10,7 +14,10 @@
                license.html,\
                LICENSE.txt,\
                epl-v10.html,\
-               icons/
+               icons/,\
+               src/,\
+               src-gen/,\
+               xtend-gen/
 src.includes = about.properties,  about.mappings,  about.ini,  about.html,  templates/,\
                i18n/,\
                license.html,\
diff --git a/org.eclipse.osbp.xtext.perspective.ui/plugin.xml b/org.eclipse.osbp.xtext.perspective.ui/plugin.xml
index 80de0cc..e0f2f10 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/plugin.xml
+++ b/org.eclipse.osbp.xtext.perspective.ui/plugin.xml
@@ -602,5 +602,34 @@
             extensions="perspective">
     </provider>
   </extension>
+    <!-- Organize imports  -->
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.osbp.xtext.oxtype.ui.imports.OXTypeOrganizeImportsHandler"
+            commandId="org.eclipse.xtext.xbase.ui.organizeImports">
+               <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.Editor.opened">
+                    </reference>
+                </visibleWhen>
+            </command>  
+        </menuContribution>
+    </extension>
 
 </plugin>
diff --git a/org.eclipse.osbp.xtext.perspective.ui/plugin.xml_gen b/org.eclipse.osbp.xtext.perspective.ui/plugin.xml_gen
index f62b306..a1676e0 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/plugin.xml_gen
+++ b/org.eclipse.osbp.xtext.perspective.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.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
-            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
-            default="true"
-            extensions="perspective"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
-            matchingStrategy="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
-            name="PerspectiveDsl Editor">
-        </editor>
-    </extension>
-    <extension
-        point="org.eclipse.ui.handlers">
-        <handler
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
-            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
-            <activeWhen>
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
-            commandId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.validate">
-         <activeWhen>
-            <reference
-                    definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Editor.opened">
-            </reference>
-         </activeWhen>
-      	</handler>
-      	<!-- copy qualified name -->
-        <handler
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory: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.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+			contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+			default="true"
+			extensions="perspective"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
+			matchingStrategy="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+			name="PerspectiveDsl Editor">
+		</editor>
+	</extension>
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+			commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+			commandId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.validate">
+		<activeWhen>
+			<reference
+					definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Editor.opened">
+			</reference>
+		</activeWhen>
+		</handler>
+		<!-- copy qualified name -->
+		<handler
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+			<activeWhen>
 				<reference definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Editor.opened" />
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
-            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
-            <activeWhen>
-            	<and>
-            		<reference definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.XtextEditor.opened" />
-	                <iterate>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+			<activeWhen>
+				<and>
+					<reference definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.Editor.opened">
-            <and>
-                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.eclipse.osbp.xtext.perspective.PerspectiveDsl" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-        <definition id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.XtextEditor.opened">
-            <and>
-                <reference definitionId="isXtextEditorActive"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.eclipse.osbp.xtext.perspective.PerspectiveDsl" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-    </extension>
-    <extension
-            point="org.eclipse.ui.preferencePages">
-        <page
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
-            name="PerspectiveDsl">
-            <keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
-        </page>
-        <page
-            category="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.coloring"
-            name="Syntax Coloring">
-            <keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
-        </page>
-        <page
-            category="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.templates"
-            name="Templates">
-            <keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
-        </page>
-    </extension>
-    <extension
-            point="org.eclipse.ui.propertyPages">
-        <page
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
-            name="PerspectiveDsl">
-            <keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
-            <enabledWhen>
-	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Editor.opened">
+			<and>
+				<reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+		<definition id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.XtextEditor.opened">
+			<and>
+				<reference definitionId="isXtextEditorActive"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+	</extension>
+	<extension
+			point="org.eclipse.ui.preferencePages">
+		<page
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
+			name="PerspectiveDsl">
+			<keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
+		</page>
+		<page
+			category="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.coloring"
+			name="Syntax Coloring">
+			<keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
+		</page>
+		<page
+			category="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.templates"
+			name="Templates">
+			<keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
+		</page>
+	</extension>
+	<extension
+			point="org.eclipse.ui.propertyPages">
+		<page
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
+			name="PerspectiveDsl">
+			<keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
+			<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.perspective.ui.keyword_PerspectiveDsl"
-            label="PerspectiveDsl"/>
-    </extension>
-    <extension
-         point="org.eclipse.ui.commands">
-      <command
-            description="Trigger expensive validation"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.validate"
-                 style="push"
-                 tooltip="Trigger expensive validation">
-            <visibleWhen checkEnabled="false">
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.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.perspective.ui.keyword_PerspectiveDsl"
+			label="PerspectiveDsl"/>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+	<command
+			description="Trigger expensive validation"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.validate"
+				 style="push"
+				 tooltip="Trigger expensive validation">
+			<visibleWhen checkEnabled="false">
+				<reference
+					definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.XtextEditor.opened" />
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.Editor.opened">
-                	</reference>
-            	</visibleWhen>
+					<reference definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Editor.opened">
+					</reference>
+				</visibleWhen>
 			</command>
 		</menuContribution>
 	</extension>
 	<extension point="org.eclipse.ui.handlers">
-	    <handler
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
-            commandId="org.eclipse.xtext.ui.editor.FindReferences">
-            <activeWhen>
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-    </extension>   
-
-<!-- adding resource factories -->
-
+		<handler
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+			commandId="org.eclipse.xtext.ui.editor.FindReferences">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
-            uriExtension="perspective">
-        </resourceServiceProvider>
-    </extension>
-
-
+		<resourceServiceProvider
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+			uriExtension="perspective">
+		</resourceServiceProvider>
+	</extension>
 	<!-- marker definitions for org.eclipse.osbp.xtext.perspective.PerspectiveDsl -->
 	<extension
-	        id="perspectivedsl.check.fast"
-	        name="PerspectiveDsl Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.fast"/>
-	    <persistent value="true"/>
+			id="perspectivedsl.check.fast"
+			name="PerspectiveDsl Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.fast"/>
+		<persistent value="true"/>
 	</extension>
 	<extension
-	        id="perspectivedsl.check.normal"
-	        name="PerspectiveDsl Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.normal"/>
-	    <persistent value="true"/>
+			id="perspectivedsl.check.normal"
+			name="PerspectiveDsl Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.normal"/>
+		<persistent value="true"/>
 	</extension>
 	<extension
-	        id="perspectivedsl.check.expensive"
-	        name="PerspectiveDsl Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.expensive"/>
-	    <persistent value="true"/>
+			id="perspectivedsl.check.expensive"
+			name="PerspectiveDsl 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.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
-            fileExtensions="perspective"
-            >
-      </participant>
-   </extension>
-   <extension
-            point="org.eclipse.ui.preferencePages">
-        <page
-            category="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.compiler.preferencePage"
-            name="Compiler">
-            <keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
-        </page>
-    </extension>
-    <extension
-            point="org.eclipse.ui.propertyPages">
-        <page
-            category="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.compiler.propertyPage"
-            name="Compiler">
-            <keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
-            <enabledWhen>
-	            <adapt type="org.eclipse.core.resources.IProject"/>
+	<extension point="org.eclipse.xtext.builder.participant">
+		<participant
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+			fileExtensions="perspective"/>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.compiler.preferencePage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.ui.propertyPages">
+		<page
+			category="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.compiler.propertyPage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
+			<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.perspective.PerspectiveDsl.OpenGeneratedCode"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Editor.opened" />
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+			<activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl -->
-    <extension
-            point="org.eclipse.ui.ide.markerResolution">
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.perspective.ui.perspectivedsl.check.fast">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.perspective.ui.perspectivedsl.check.normal">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.perspective.ui.perspectivedsl.check.expensive">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-    </extension>
-   	<!-- Rename Refactoring -->
+	<!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.perspective.PerspectiveDsl -->
+	<extension
+			point="org.eclipse.ui.ide.markerResolution">
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.perspective.ui.perspectivedsl.check.fast">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.perspective.ui.perspectivedsl.check.normal">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.perspective.ui.perspectivedsl.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.perspective.ui.PerspectiveDslExecutableExtensionFactory: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.perspective.PerspectiveDsl.Editor.opened">
-               </reference>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-   <extension point="org.eclipse.ui.preferencePages">
-	    <page
-	        category="org.eclipse.osbp.xtext.perspective.PerspectiveDsl"
-	        class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
-	        id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.refactoring"
-	        name="Refactoring">
-	        <keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
-	    </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.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl"
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.refactoring"
+			name="Refactoring">
+			<keywordReference id="org.eclipse.osbp.xtext.perspective.ui.keyword_PerspectiveDsl"/>
+		</page>
+	</extension>
+	<!-- Type Hierarchy  -->
+	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory: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.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.imports.OrganizeImportsHandler"
+			commandId="org.eclipse.xtext.xbase.ui.organizeImports">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.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.perspective.ui.PerspectiveDslExecutableExtensionFactory: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.perspective.ui.PerspectiveDslExecutableExtensionFactory: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.perspective.PerspectiveDsl" 
-                          id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.rulerActions">
-	     <action
-	             label="Not Used"
-	             class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-	             style="push"
-	             actionID="RulerDoubleClick"
-	             id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.doubleClickBreakpointAction"/>
-	  </editorContribution>
-   </extension>
-   <extension point="org.eclipse.ui.popupMenus">
-      <viewerContribution
-         targetID="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.RulerContext"
-         id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.RulerPopupActions">
-         <action
-            label="Toggle Breakpoint"
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-            menubarPath="debug"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.rulerContextMenu.toggleBreakpointAction">
-         </action>
-         <action
-            label="Not used"
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
-            menubarPath="debug"
-            id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.rulerContextMenu.enableDisableBreakpointAction">
-         </action>
-         <action
-           label="Breakpoint Properties"
-           helpContextId="breakpoint_properties_action_context"
-           class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
-           menubarPath="group.properties"
-           id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.rulerContextMenu.openBreapointPropertiesAction">
-         </action>
-      </viewerContribution>
-   </extension>
-    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.core.runtime.adapters">
+		<factory class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory: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.perspective.PerspectiveDsl" 
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.rulerActions">
+			<action
+				label="Not Used"
+	 			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+				style="push"
+				actionID="RulerDoubleClick"
+				id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.doubleClickBreakpointAction"/>
+		</editorContribution>
+	</extension>
+	<extension point="org.eclipse.ui.popupMenus">
+		<viewerContribution
+			targetID="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.RulerContext"
+			id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.RulerPopupActions">
+			<action
+				label="Toggle Breakpoint"
+				class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+				menubarPath="debug"
+				id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.rulerContextMenu.toggleBreakpointAction">
+			</action>
+			<action
+				label="Not used"
+				class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
+				menubarPath="debug"
+				id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.rulerContextMenu.enableDisableBreakpointAction">
+			</action>
+			<action
+				label="Breakpoint Properties"
+				helpContextId="breakpoint_properties_action_context"
+				class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
+				menubarPath="group.properties"
+				id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.rulerContextMenu.openBreapointPropertiesAction">
+			</action>
+		</viewerContribution>
+	</extension>
+	<!-- Introduce Local Variable Refactoring -->
 	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory: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.perspective.PerspectiveDsl.Editor.opened">
-               </reference>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>  
-   <!-- Open implementation -->
-   <extension point="org.eclipse.ui.handlers">
-      <handler
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory: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.perspective.PerspectiveDsl.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Open implementation -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
+			commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+			<activeWhen>
 				<reference
 					definitionId="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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.perspective.PerspectiveDsl.Editor.opened">
-              </reference>
-		</visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-
-  <extension point="org.eclipse.compare.contentViewers">
-    <viewer id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.compare.contentViewers"
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
-            extensions="perspective">
-    </viewer>
-  </extension>
-  <extension point="org.eclipse.compare.contentMergeViewers">
-    <viewer id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.compare.contentMergeViewers"
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
-            extensions="perspective" label="PerspectiveDsl Compare">
-     </viewer>
-  </extension>
-  <extension point="org.eclipse.ui.editors.documentProviders">
-    <provider id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.editors.documentProviders"
-            class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
-            extensions="perspective">
-    </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.perspective.PerspectiveDsl.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.compare.contentViewers">
+		<viewer id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.compare.contentViewers"
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="perspective">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.compare.contentMergeViewers">
+		<viewer id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.compare.contentMergeViewers"
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="perspective" label="PerspectiveDsl Compare">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.ui.editors.documentProviders">
+		<provider id="org.eclipse.osbp.xtext.perspective.PerspectiveDsl.editors.documentProviders"
+			class="org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+			extensions="perspective">
+		</provider>
+	</extension>
+	<extension point="org.eclipse.team.core.fileTypes">
+		<fileTypes
+			extension="perspective"
+			type="text">
+		</fileTypes>
+	</extension>
 </plugin>
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/AbstractPerspectiveDslUiModule.java b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/AbstractPerspectiveDslUiModule.java
index 38a17eb..d411346 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/AbstractPerspectiveDslUiModule.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/AbstractPerspectiveDslUiModule.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.perspective.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.perspective.ide.contentassist.antlr.PartialPerspectiveDslContentAssistParser;
+import org.eclipse.osbp.xtext.perspective.ide.contentassist.antlr.PerspectiveDslParser;
+import org.eclipse.osbp.xtext.perspective.ide.contentassist.antlr.internal.InternalPerspectiveDslLexer;
+import org.eclipse.osbp.xtext.perspective.ui.contentassist.PerspectiveDslProposalProvider;
+import org.eclipse.osbp.xtext.perspective.ui.labeling.PerspectiveDslDescriptionLabelProvider;
+import org.eclipse.osbp.xtext.perspective.ui.labeling.PerspectiveDslLabelProvider;
+import org.eclipse.osbp.xtext.perspective.ui.outline.PerspectiveDslOutlineTreeProvider;
+import org.eclipse.osbp.xtext.perspective.ui.quickfix.PerspectiveDslQuickfixProvider;
+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.perspective.ui.PerspectiveDslUiModule}
+ * Manual modifications go to {@link PerspectiveDslUiModule}.
  */
 @SuppressWarnings("all")
-public abstract class AbstractPerspectiveDslUiModule extends DefaultUiModule {
-	
+public abstract class AbstractPerspectiveDslUiModule extends DefaultXbaseWithAnnotationsUiModule {
+
 	public AbstractPerspectiveDslUiModule(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.perspective.parser.antlr.internal.InternalPerspectiveDslLexer.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(InternalPerspectiveDslLexer.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.perspective.parser.antlr.internal.InternalPerspectiveDslLexer.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 PerspectiveDslParser.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(InternalPerspectiveDslLexer.class).toProvider(LexerProvider.create(InternalPerspectiveDslLexer.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.xtext.xbase.ui.labeling.XbaseLabelProvider.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.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider.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.perspective.ui.outline.PerspectiveDslOutlineTreeProvider.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.perspective.ui.outline.PerspectiveDslOutlineTreeProvider.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.perspective.ui.quickfix.PerspectiveDslQuickfixProvider.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.perspective.ui.contentassist.PerspectiveDslProposalProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2
+	public Class<? extends ILabelProvider> bindILabelProvider() {
+		return PerspectiveDslLabelProvider.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(PerspectiveDslDescriptionLabelProvider.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.perspective.ui.contentassist.antlr.PerspectiveDslParser.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return PerspectiveDslOutlineTreeProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
-	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.osbp.xtext.perspective.ui.contentassist.antlr.internal.InternalPerspectiveDslLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.perspective.ui.contentassist.antlr.internal.InternalPerspectiveDslLexer.class));
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return PerspectiveDslOutlineTreeProvider.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.perspective.ui.contentassist.antlr.internal.InternalPerspectiveDslLexer.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.quickfix.QuickfixProviderFragment2
+	public Class<? extends IssueResolutionProvider> bindIssueResolutionProvider() {
+		return PerspectiveDslQuickfixProvider.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 PerspectiveDslProposalProvider.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 PartialPerspectiveDslContentAssistParser.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.perspective.ui.contentassist.antlr.PartialPerspectiveDslContentAssistParser.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.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslExecutableExtensionFactory.java
index df9e920..1a9bd4b 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslExecutableExtensionFactory.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslExecutableExtensionFactory.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.perspective.ui;
 
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.perspective.ui.internal.PerspectiveActivator;
 import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
 import org.osgi.framework.Bundle;
 
-import com.google.inject.Injector;
-
-import org.eclipse.osbp.xtext.perspective.ui.internal.PerspectiveDslActivator;
-
 /**
  * This class was generated. Customizations should only happen in a newly
  * introduced subclass. 
@@ -28,12 +29,12 @@
 
 	@Override
 	protected Bundle getBundle() {
-		return PerspectiveDslActivator.getInstance().getBundle();
+		return PerspectiveActivator.getInstance().getBundle();
 	}
 	
 	@Override
 	protected Injector getInjector() {
-		return PerspectiveDslActivator.getInstance().getInjector(PerspectiveDslActivator.ORG_ECLIPSE_OSBP_XTEXT_PERSPECTIVE_PERSPECTIVEDSL);
+		return PerspectiveActivator.getInstance().getInjector(PerspectiveActivator.ORG_ECLIPSE_OSBP_XTEXT_PERSPECTIVE_PERSPECTIVEDSL);
 	}
 	
 }
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/AbstractPerspectiveDslProposalProvider.java b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/AbstractPerspectiveDslProposalProvider.java
index eebc2a3..51fe739 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/AbstractPerspectiveDslProposalProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/AbstractPerspectiveDslProposalProvider.java
@@ -10,37 +10,39 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.perspective.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 AbstractPerspectiveDslProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
-		
+public abstract class AbstractPerspectiveDslProposalProvider extends OXtypeProposalProvider {
+
+	public void completePerspectiveModel_ImportSection(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completePerspectiveModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completePerspectivePackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completePerspectivePackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
 	public void completePerspectivePackage_Perspectives(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completePerspectiveImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
 	public void completePerspective_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -104,12 +106,6 @@
 	public void completePerspectivePart_ElementId(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completePerspectivePart_Description(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
-	public void completePerspectivePart_DescriptionValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
 	public void completePerspectivePart_ContainerData(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -134,6 +130,9 @@
 	public void completePerspectiveGrid_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
+	public void completePerspectiveBean_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
 	public void completePerspectiveChart_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
@@ -149,16 +148,34 @@
 	public void completePerspectiveDialog_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
-    
+	public void completePerspectiveKanban_DtoRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePerspectiveKanban_CardRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePerspectiveKanban_DialogRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePerspectiveSearch_DtoRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePerspectiveSearch_Depth(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePerspectiveSearch_FilterCols(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePerspectiveDataInterchange_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+
 	public void complete_PerspectiveModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
 	public void complete_PerspectivePackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_PerspectiveImport(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_Perspective(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -186,6 +203,9 @@
 	public void complete_PerspectiveGrid(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_PerspectiveBean(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_PerspectiveChart(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -204,13 +224,16 @@
 	public void complete_PerspectiveBPMN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_PerspectiveQualifiedNameWithWildCard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_PerspectiveKanban(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_QualifiedName(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_PerspectiveWelcome(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_ValidID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_PerspectiveSearch(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PerspectiveDataInterchange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
 	public void complete_TRANSLATABLEID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/internal/PerspectiveActivator.java b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/internal/PerspectiveActivator.java
new file mode 100644
index 0000000..8c7fed0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/internal/PerspectiveActivator.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.perspective.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.perspective.PerspectiveDslRuntimeModule;
+import org.eclipse.osbp.xtext.perspective.ui.PerspectiveDslUiModule;
+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 PerspectiveActivator extends AbstractUIPlugin {
+
+	public static final String ORG_ECLIPSE_OSBP_XTEXT_PERSPECTIVE_PERSPECTIVEDSL = "org.eclipse.osbp.xtext.perspective.PerspectiveDsl";
+	
+	private static final Logger logger = Logger.getLogger(PerspectiveActivator.class);
+	
+	private static PerspectiveActivator 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 PerspectiveActivator 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_PERSPECTIVE_PERSPECTIVEDSL.equals(grammar)) {
+			return new PerspectiveDslRuntimeModule();
+		}
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_PERSPECTIVE_PERSPECTIVEDSL.equals(grammar)) {
+			return new PerspectiveDslUiModule(this);
+		}
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDSLDocumentationTranslator.java
index c45e7ae..2b85ff3 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDSLDocumentationTranslator.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDSLDocumentationTranslator.java
@@ -15,7 +15,6 @@
 
 import java.util.ResourceBundle;
 
-import org.eclipse.osbp.utils.constants.GeneratorConstants;
 import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
 
 public class PerspectiveDSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
@@ -28,6 +27,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.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslUiModule.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslUiModule.java
index 78e3ae4..4e62b01 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslUiModule.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/PerspectiveDslUiModule.java
@@ -11,27 +11,41 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.perspective.ui;
+package org.eclipse.osbp.xtext.perspective.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 PerspectiveDslUiModule extends
 		org.eclipse.osbp.xtext.perspective.ui.AbstractPerspectiveDslUiModule {
-	
-	private static Logger LOGGER = LoggerFactory.getLogger(PerspectiveDslUiModule.class);
-	
+
+	private static Logger LOGGER = LoggerFactory
+			.getLogger(PerspectiveDslUiModule.class);
+
 	public PerspectiveDslUiModule(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
@@ -51,7 +65,20 @@
 
 	@Override
 	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
-//		return org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider.class;
 		return org.eclipse.osbp.xtext.perspective.ui.labeling.PerspectiveDslLabelProvider.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.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.xtend
index f5a8955..ceff623 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.xtend
@@ -142,11 +142,6 @@
 		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
 	}
 
-	override public void complete_PerspectiveQualifiedNameWithWildCard(EObject model, RuleCall ruleCall,
-		ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
-	}
-
 	// ------------------------ delegates to TerminalsProposalProvider -----------------
 	override complete_ID(EObject model, RuleCall ruleCall, ContentAssistContext context,
 		ICompletionProposalAcceptor acceptor) {
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.xtend
index b294982..b11077b 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.xtend
@@ -14,7 +14,6 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.perspective.ui.converter
 
 import com.google.inject.Inject
@@ -51,6 +50,8 @@
 import org.eclipse.xtext.naming.QualifiedName
 import org.eclipse.xtext.resource.IResourceDescriptions
 import org.eclipse.osbp.xtext.perspective.PerspectiveGrid
+import org.eclipse.xtext.xtype.XtypeFactory
+import org.eclipse.osbp.xtext.oxtype.oxtype.OXtypeFactory
 
 /**
  * This class converts a given E4-Perspective to an OSBP perspective model or dsl text.
@@ -77,17 +78,21 @@
 		imports.clear
 
 		val oModel = pFactory.createPerspectiveModel
+		oModel.importSection = XtypeFactory.eINSTANCE.createXImportSection
+		val importSection = oModel.importSection
+		
 		val oPkg = pFactory.createPerspectivePackage
 		oPkg.name = "to.be.defined"
 		oModel.packages += oPkg
-
+		
 		val perspective = mPerspective.convertPerspective
 		oPkg.perspectives += perspective
 
 		imports.forEach [
-			val imp = OSBPTypesFactory.eINSTANCE.createLImport
+			val imp = OXtypeFactory.eINSTANCE.createOXImportDeclaration
 			imp.importedNamespace = it + ".*"
-			oPkg.imports += imp
+			imp.wildcard = true
+			importSection.importDeclarations += imp
 		]
 
 		return oModel
@@ -167,13 +172,12 @@
 		mElement.register(oElement)
 		oElement.accessibilityPhrase = mElement.accessibilityPhrase
 		oElement.containerData = mElement.containerData
-		if(mElement.label == null) {
+		if (mElement.label == null) {
 			oElement.elementId = toId
-		}else{
-			oElement.elementId = mElement.label.replaceAll(" ", "").replaceAll("(\\W)" ,"")
+		} else {
+			oElement.elementId = mElement.label.replaceAll(" ", "").replaceAll("(\\W)", "")
 		}
 		oElement.iconURI = mElement.iconURI
-		oElement.description = false
 		oElement.isClosable = mElement.closeable
 
 		ePkg.convertView(mElement, oElement)
@@ -202,7 +206,7 @@
 				val eObjectDesc = result.iterator.next
 				oTable.ref = eObjectDesc.EObjectOrProxy as Table
 			}
-		}else{
+		} else {
 			val PerspectiveTable oTable = pFactory.createPerspectiveTable
 			oPart.view = oTable
 			val String fqn = mPart.persistedState.get(OSBP_FQN);
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/handler/ConvertE4PerspectiveToOSBPHandler.java b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/handler/ConvertE4PerspectiveToOSBPHandler.java
index a2bf9b8..4b09465 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/handler/ConvertE4PerspectiveToOSBPHandler.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/handler/ConvertE4PerspectiveToOSBPHandler.java
@@ -11,9 +11,11 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.perspective.ui.handler;
+package org.eclipse.osbp.xtext.perspective.ui.handler;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
@@ -29,16 +31,17 @@
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.xtext.oxtype.oxtype.OXImportDeclaration;
 import org.eclipse.osbp.xtext.perspective.Perspective;
 import org.eclipse.osbp.xtext.perspective.PerspectiveModel;
 import org.eclipse.osbp.xtext.perspective.PerspectivePackage;
 import org.eclipse.osbp.xtext.perspective.ui.converter.E4PerspectiveToDSLConverter;
-import org.eclipse.osgi.service.datalocation.Location;
 import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.handlers.HandlerUtil;
 import org.eclipse.xtext.ui.resource.IResourceSetProvider;
+import org.eclipse.xtext.xtype.XImportDeclaration;
+import org.eclipse.xtext.xtype.XtypeFactory;
 
 import com.google.inject.Inject;
 
@@ -110,23 +113,53 @@
 										.getPackages().get(0);
 
 								// copy the missing packages
-								for (LImport convertedImport : newPkg
-										.getImports()) {
+								for (OXImportDeclaration convertedImport : getImportDeclarations(newPerspectiveModel)) {
 									boolean contains = false;
-									for (LImport currentImport : new ArrayList<>(
-											currentPkg.getImports())) {
-										if (convertedImport
-												.getImportedNamespace()
-												.equals(currentImport
-														.getImportedNamespace())) {
-											contains = true;
-											break;
+									for (OXImportDeclaration currentImport : new ArrayList<>(
+											getImportDeclarations(current))) {
+
+										if (convertedImport.isFqnImport()
+												&& currentImport.isFqnImport()) {
+											if (convertedImport
+													.getImportedFullyQualifiedName()
+													.equals(currentImport
+															.getImportedFullyQualifiedName())) {
+												contains = true;
+												break;
+											}
+										} else if (convertedImport.isWildcard()
+												&& currentImport.isWildcard()) {
+											if (convertedImport
+													.getImportedNamespace()
+													.equals(currentImport
+															.getImportedNamespace())) {
+												contains = true;
+												break;
+											}
+										} else if (convertedImport
+												.getImportedType() != null
+												&& currentImport
+														.getImportedType() != null) {
+											if (convertedImport
+													.getImportedType()
+													.getQualifiedName()
+													.equals(currentImport
+															.getImportedType()
+															.getQualifiedName())) {
+												contains = true;
+												break;
+											}
 										}
 									}
 
 									if (!contains) {
-										currentPkg.getImports().add(
-												convertedImport);
+										if (current.getImportSection() == null) {
+											current.setImportSection(XtypeFactory.eINSTANCE
+													.createXImportSection());
+										}
+										current.getImportSection()
+												.getImportDeclarations()
+												.add(convertedImport);
 									}
 								}
 
@@ -175,7 +208,7 @@
 
 	protected URI toPlatform(String fileURIString) {
 		URI path = URI.createFileURI(fileURIString);
-		
+
 		IProject project = null;
 		String modelFile = null;
 		// find the bundle segment
@@ -195,7 +228,20 @@
 			}
 		}
 		return project != null ? URI.createPlatformResourceURI(project
-				.getFullPath().toString()
-				+ modelFile, false) : null;
+				.getFullPath().toString() + modelFile, false) : null;
+	}
+
+	protected List<OXImportDeclaration> getImportDeclarations(
+			PerspectiveModel model) {
+		if (model.getImportSection() == null) {
+			return Collections.emptyList();
+		}
+
+		List<OXImportDeclaration> result = new ArrayList<>();
+		for (XImportDeclaration decl : model.getImportSection()
+				.getImportDeclarations()) {
+			result.add((OXImportDeclaration) decl);
+		}
+		return result;
 	}
 }
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.xtend
index 31408ae..5f475a5 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.xtend
@@ -53,7 +53,7 @@
 
 	 override text ( Object o ) {
 		switch (o) {
-			PerspectivePackage			: generateText( o, 'package'      , o.name )
+			PerspectivePackage			: generateText( o, 'package'      , o.name ) 
 			Perspective					: generateText( o, 'perspective'  , o.name )
 			PerspectiveSashContainer	: generateText( o, 'sashContainer', o.elementId )
 			PerspectivePartStack		: generateText( o, 'partStack'    , o.elementId )
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.xtend b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.xtend
index c1376c3..866f360 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective.ui/src/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.xtend
@@ -14,27 +14,26 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.perspective.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 PerspectiveDslQuickfixProvider 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 PerspectiveDslQuickfixProvider 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.perspective.ui/xtend-gen/.gitignore b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/.gitignore
new file mode 100644
index 0000000..0da172b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/.gitignore
@@ -0,0 +1,6 @@
+/.E4PerspectiveToDSLConverter.xtendbin
+/.PerspectiveDslDescriptionLabelProvider.xtendbin
+/.PerspectiveDslLabelProvider.xtendbin
+/.PerspectiveDslOutlineTreeProvider.xtendbin
+/.PerspectiveDslProposalProvider.xtendbin
+/.PerspectiveDslQuickfixProvider.xtendbin
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/.gitignore b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/.gitignore
new file mode 100644
index 0000000..69439fe
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/.gitignore
@@ -0,0 +1,2 @@
+/IconNameTextApplier.java
+/PerspectiveDslProposalProvider.java
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/IconNameTextApplier.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/IconNameTextApplier.java
index 003e303..aca0a16 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/IconNameTextApplier.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/IconNameTextApplier.java
@@ -14,9 +14,7 @@
  */
 package org.eclipse.osbp.xtext.perspective.ui.contentassist;
 
-import org.eclipse.jface.text.ITextViewer;
 import org.eclipse.osbp.fork.mihalis.opal.widgets.ImageSelectorDialog;
-import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
@@ -38,17 +36,15 @@
     return this.extensions = fileExtensions;
   }
   
+  @Override
   public String getActualReplacementString(final ConfigurableCompletionProposal proposal) {
-    ITextViewer _viewer = this.context.getViewer();
-    StyledText _textWidget = _viewer.getTextWidget();
-    Display display = _textWidget.getDisplay();
+    Display display = this.context.getViewer().getTextWidget().getDisplay();
     Shell shell = new Shell(display);
     FillLayout _fillLayout = new FillLayout();
     shell.setLayout(_fillLayout);
     ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(shell, 16);
     imageSelectorDialog.setFilterExtensions(this.extensions);
     String imageFileName = imageSelectorDialog.open(true);
-    String _concat = "\"".concat(imageFileName);
-    return _concat.concat("\"");
+    return "\"".concat(imageFileName).concat("\"");
   }
 }
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.java
index 2a0cfd2..dcc731b 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/PerspectiveDslProposalProvider.java
@@ -21,7 +21,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.perspective.PerspectivePart;
 import org.eclipse.osbp.xtext.perspective.PerspectivePartStack;
@@ -49,16 +48,17 @@
   public StyledString getProposalString(final ProcessImpl process, final UserTaskImpl userTask) {
     StringConcatenation _builder = new StringConcatenation();
     String _name = userTask.getName();
-    _builder.append(_name, "");
+    _builder.append(_name);
     _builder.append(" in process ");
     String _id = process.getId();
-    _builder.append(_id, "");
+    _builder.append(_id);
     return new StyledString(_builder.toString());
   }
   
   /**
    * This override will enable 1 length non letter characters as keyword.
    */
+  @Override
   protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
     return true;
   }
@@ -69,65 +69,46 @@
     boolean _notEquals = (!Objects.equal(fileName, null));
     if (_notEquals) {
       IconNameTextApplier applier = new IconNameTextApplier();
-      String[] _split = fileExtensions.split(",");
-      applier.setExtensions(_split);
+      applier.setExtensions(fileExtensions.split(","));
       applier.setContext(context);
       fileName.setTextApplier(applier);
     }
     acceptor.accept(fileName);
   }
   
+  @Override
   public void completePerspective_IconURI(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.iconPickerProposal(model, assignment, context, acceptor, ".png");
   }
   
+  @Override
   public void completePerspectivePart_IconURI(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.iconPickerProposal(model, assignment, context, acceptor, ".png");
   }
   
+  @Override
   public void complete_ValidID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.complete_ID(model, ruleCall, context, acceptor);
   }
   
+  @Override
   public void complete_TRANSLATABLEID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.complete_ID(model, ruleCall, context, acceptor);
   }
   
+  @Override
   protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
     boolean result = super.isValidProposal(proposal, prefix, context);
     EObject _currentModel = context.getCurrentModel();
     if ((_currentModel instanceof PerspectivePartStack)) {
-      boolean _or = false;
-      boolean _equals = "partStack".equals(proposal);
-      if (_equals) {
-        _or = true;
-      } else {
-        boolean _equals_1 = "sashContainer".equals(proposal);
-        _or = _equals_1;
-      }
-      if (_or) {
+      if (("partStack".equals(proposal) || "sashContainer".equals(proposal))) {
         return false;
       }
       return true;
     }
     EObject _currentModel_1 = context.getCurrentModel();
     if ((_currentModel_1 instanceof PerspectivePart)) {
-      boolean _or_1 = false;
-      boolean _or_2 = false;
-      boolean _equals_2 = "part".equals(proposal);
-      if (_equals_2) {
-        _or_2 = true;
-      } else {
-        boolean _equals_3 = "partStack".equals(proposal);
-        _or_2 = _equals_3;
-      }
-      if (_or_2) {
-        _or_1 = true;
-      } else {
-        boolean _equals_4 = "sashContainer".equals(proposal);
-        _or_1 = _equals_4;
-      }
-      if (_or_1) {
+      if ((("part".equals(proposal) || "partStack".equals(proposal)) || "sashContainer".equals(proposal))) {
         return false;
       }
       return true;
@@ -135,57 +116,64 @@
     return result;
   }
   
+  @Override
   protected StyledString getKeywordDisplayString(final Keyword keyword) {
-    BasicDSLDocumentationTranslator _instance = PerspectiveDSLDocumentationTranslator.instance();
-    return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, _instance);
+    return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, 
+      PerspectiveDSLDocumentationTranslator.instance());
   }
   
+  @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_PerspectiveQualifiedNameWithWildCard(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
-    this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
-  }
-  
+  @Override
   public void complete_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 completePerspectiveSashContainer_ContainerData(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);
   }
   
+  @Override
   public void completePerspectivePart_ContainerData(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);
   }
   
+  @Override
   public void completePerspectivePartStack_ContainerData(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);
   }
   
+  @Override
   public void completePerspective_AccessibilityPhrase(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);
   }
   
+  @Override
   public void completePerspectiveSashContainer_AccessibilityPhrase(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);
   }
   
+  @Override
   public void completePerspectivePart_AccessibilityPhrase(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);
   }
   
+  @Override
   public void completePerspectivePartStack_AccessibilityPhrase(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.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/.gitignore b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/.gitignore
new file mode 100644
index 0000000..b40fb63
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/.gitignore
@@ -0,0 +1 @@
+/E4PerspectiveToDSLConverter.java
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.java
index 30dbb98..068afee 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.java
@@ -17,8 +17,6 @@
 import com.google.common.base.Objects;
 import com.google.inject.Inject;
 import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.function.Consumer;
@@ -32,36 +30,27 @@
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.osbp.dsl.semantic.common.types.LImport;
-import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
-import org.eclipse.osbp.xtext.chart.Chart;
 import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
-import org.eclipse.osbp.xtext.dialogdsl.Dialog;
 import org.eclipse.osbp.xtext.dialogdsl.DialogDSLPackage;
+import org.eclipse.osbp.xtext.oxtype.oxtype.OXImportDeclaration;
+import org.eclipse.osbp.xtext.oxtype.oxtype.OXtypeFactory;
 import org.eclipse.osbp.xtext.perspective.Perspective;
-import org.eclipse.osbp.xtext.perspective.PerspectiveChart;
-import org.eclipse.osbp.xtext.perspective.PerspectiveDialog;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslFactory;
 import org.eclipse.osbp.xtext.perspective.PerspectiveElement;
-import org.eclipse.osbp.xtext.perspective.PerspectiveGrid;
 import org.eclipse.osbp.xtext.perspective.PerspectiveModel;
 import org.eclipse.osbp.xtext.perspective.PerspectivePackage;
 import org.eclipse.osbp.xtext.perspective.PerspectivePart;
 import org.eclipse.osbp.xtext.perspective.PerspectivePartStack;
-import org.eclipse.osbp.xtext.perspective.PerspectiveReport;
 import org.eclipse.osbp.xtext.perspective.PerspectiveSashContainer;
-import org.eclipse.osbp.xtext.perspective.PerspectiveTable;
 import org.eclipse.osbp.xtext.perspective.SashOrientation;
-import org.eclipse.osbp.xtext.reportdsl.Report;
 import org.eclipse.osbp.xtext.reportdsl.ReportDSLPackage;
-import org.eclipse.osbp.xtext.table.Table;
 import org.eclipse.osbp.xtext.table.TableDSLPackage;
 import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.naming.QualifiedName;
-import org.eclipse.xtext.resource.IEObjectDescription;
 import org.eclipse.xtext.resource.IResourceDescriptions;
 import org.eclipse.xtext.xbase.lib.CollectionLiterals;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtype.XImportDeclaration;
+import org.eclipse.xtext.xtype.XImportSection;
+import org.eclipse.xtext.xtype.XtypeFactory;
 
 /**
  * This class converts a given E4-Perspective to an OSBP perspective model or dsl text.
@@ -89,6 +78,8 @@
     this.counter = 0;
     this.imports.clear();
     final PerspectiveModel oModel = this.pFactory.createPerspectiveModel();
+    oModel.setImportSection(XtypeFactory.eINSTANCE.createXImportSection());
+    final XImportSection importSection = oModel.getImportSection();
     final PerspectivePackage oPkg = this.pFactory.createPerspectivePackage();
     oPkg.setName("to.be.defined");
     EList<PerspectivePackage> _packages = oModel.getPackages();
@@ -96,13 +87,12 @@
     final Perspective perspective = this.convertPerspective(mPerspective);
     EList<Perspective> _perspectives = oPkg.getPerspectives();
     _perspectives.add(perspective);
-    final Consumer<String> _function = new Consumer<String>() {
-      public void accept(final String it) {
-        final LImport imp = OSBPTypesFactory.eINSTANCE.createLImport();
-        imp.setImportedNamespace((it + ".*"));
-        EList<LImport> _imports = oPkg.getImports();
-        _imports.add(imp);
-      }
+    final Consumer<String> _function = (String it) -> {
+      final OXImportDeclaration imp = OXtypeFactory.eINSTANCE.createOXImportDeclaration();
+      imp.setImportedNamespace((it + ".*"));
+      imp.setWildcard(true);
+      EList<XImportDeclaration> _importDeclarations = importSection.getImportDeclarations();
+      _importDeclarations.add(imp);
     };
     this.imports.forEach(_function);
     return oModel;
@@ -111,24 +101,18 @@
   public Perspective convertPerspective(final MPerspective mPerspective) {
     final Perspective oPerspective = this.pFactory.createPerspective();
     this.register(mPerspective, oPerspective);
-    String _accessibilityPhrase = mPerspective.getAccessibilityPhrase();
-    oPerspective.setAccessibilityPhrase(_accessibilityPhrase);
-    String _iconURI = mPerspective.getIconURI();
-    oPerspective.setIconURI(_iconURI);
-    String _label = mPerspective.getLabel();
-    oPerspective.setName(_label);
-    List<MPartSashContainerElement> _children = mPerspective.getChildren();
-    final Consumer<MPartSashContainerElement> _function = new Consumer<MPartSashContainerElement>() {
-      public void accept(final MPartSashContainerElement it) {
-        final PerspectiveElement result = E4PerspectiveToDSLConverter.this.convert(it);
-        boolean _notEquals = (!Objects.equal(result, null));
-        if (_notEquals) {
-          EList<PerspectiveElement> _elements = oPerspective.getElements();
-          _elements.add(result);
-        }
+    oPerspective.setAccessibilityPhrase(mPerspective.getAccessibilityPhrase());
+    oPerspective.setIconURI(mPerspective.getIconURI());
+    oPerspective.setName(mPerspective.getLabel());
+    final Consumer<MPartSashContainerElement> _function = (MPartSashContainerElement it) -> {
+      final PerspectiveElement result = this.convert(it);
+      boolean _notEquals = (!Objects.equal(result, null));
+      if (_notEquals) {
+        EList<PerspectiveElement> _elements = oPerspective.getElements();
+        _elements.add(result);
       }
     };
-    _children.forEach(_function);
+    mPerspective.getChildren().forEach(_function);
     return oPerspective;
   }
   
@@ -143,27 +127,19 @@
   protected PerspectiveElement _convert(final MPartSashContainer mElement) {
     final PerspectiveSashContainer oElement = this.pFactory.createPerspectiveSashContainer();
     this.register(mElement, oElement);
-    String _accessibilityPhrase = mElement.getAccessibilityPhrase();
-    oElement.setAccessibilityPhrase(_accessibilityPhrase);
-    String _containerData = mElement.getContainerData();
-    oElement.setContainerData(_containerData);
-    String _id = this.toId();
-    oElement.setElementId(_id);
-    boolean _isHorizontal = mElement.isHorizontal();
-    SashOrientation _orientation = this.toOrientation(_isHorizontal);
-    oElement.setOrientation(_orientation);
-    List<MPartSashContainerElement> _children = mElement.getChildren();
-    final Consumer<MPartSashContainerElement> _function = new Consumer<MPartSashContainerElement>() {
-      public void accept(final MPartSashContainerElement it) {
-        final PerspectiveElement result = E4PerspectiveToDSLConverter.this.convert(it);
-        boolean _notEquals = (!Objects.equal(result, null));
-        if (_notEquals) {
-          EList<PerspectiveElement> _elements = oElement.getElements();
-          _elements.add(result);
-        }
+    oElement.setAccessibilityPhrase(mElement.getAccessibilityPhrase());
+    oElement.setContainerData(mElement.getContainerData());
+    oElement.setElementId(this.toId());
+    oElement.setOrientation(this.toOrientation(mElement.isHorizontal()));
+    final Consumer<MPartSashContainerElement> _function = (MPartSashContainerElement it) -> {
+      final PerspectiveElement result = this.convert(it);
+      boolean _notEquals = (!Objects.equal(result, null));
+      if (_notEquals) {
+        EList<PerspectiveElement> _elements = oElement.getElements();
+        _elements.add(result);
       }
     };
-    _children.forEach(_function);
+    mElement.getChildren().forEach(_function);
     return oElement;
   }
   
@@ -171,37 +147,30 @@
     StringConcatenation _builder = new StringConcatenation();
     _builder.append("e");
     int _plusPlus = this.counter++;
-    _builder.append(_plusPlus, "");
+    _builder.append(_plusPlus);
     return _builder.toString();
   }
   
   protected PerspectiveElement _convert(final MPartStack mElement) {
     final PerspectivePartStack oElement = this.pFactory.createPerspectivePartStack();
     this.register(mElement, oElement);
-    String _accessibilityPhrase = mElement.getAccessibilityPhrase();
-    oElement.setAccessibilityPhrase(_accessibilityPhrase);
-    String _containerData = mElement.getContainerData();
-    oElement.setContainerData(_containerData);
-    String _id = this.toId();
-    oElement.setElementId(_id);
-    List<MStackElement> _children = mElement.getChildren();
-    final Consumer<MStackElement> _function = new Consumer<MStackElement>() {
-      public void accept(final MStackElement it) {
-        final PerspectiveElement result = E4PerspectiveToDSLConverter.this.convert(it);
-        boolean _notEquals = (!Objects.equal(result, null));
-        if (_notEquals) {
-          EList<PerspectiveElement> _elements = oElement.getElements();
-          _elements.add(result);
-        }
+    oElement.setAccessibilityPhrase(mElement.getAccessibilityPhrase());
+    oElement.setContainerData(mElement.getContainerData());
+    oElement.setElementId(this.toId());
+    final Consumer<MStackElement> _function = (MStackElement it) -> {
+      final PerspectiveElement result = this.convert(it);
+      boolean _notEquals = (!Objects.equal(result, null));
+      if (_notEquals) {
+        EList<PerspectiveElement> _elements = oElement.getElements();
+        _elements.add(result);
       }
     };
-    _children.forEach(_function);
+    mElement.getChildren().forEach(_function);
     return oElement;
   }
   
   protected PerspectiveElement _convert(final MPart mElement) {
-    Map<String, String> _persistedState = mElement.getPersistedState();
-    final String nsURI = _persistedState.get(E4PerspectiveToDSLConverter.OSBP_NS_URI);
+    final String nsURI = mElement.getPersistedState().get(E4PerspectiveToDSLConverter.OSBP_NS_URI);
     final EPackage ePkg = EPackage.Registry.INSTANCE.getEPackage(nsURI);
     boolean _equals = Objects.equal(ePkg, null);
     if (_equals) {
@@ -209,26 +178,17 @@
     }
     final PerspectivePart oElement = this.pFactory.createPerspectivePart();
     this.register(mElement, oElement);
-    String _accessibilityPhrase = mElement.getAccessibilityPhrase();
-    oElement.setAccessibilityPhrase(_accessibilityPhrase);
-    String _containerData = mElement.getContainerData();
-    oElement.setContainerData(_containerData);
+    oElement.setAccessibilityPhrase(mElement.getAccessibilityPhrase());
+    oElement.setContainerData(mElement.getContainerData());
     String _label = mElement.getLabel();
     boolean _equals_1 = Objects.equal(_label, null);
     if (_equals_1) {
-      String _id = this.toId();
-      oElement.setElementId(_id);
+      oElement.setElementId(this.toId());
     } else {
-      String _label_1 = mElement.getLabel();
-      String _replaceAll = _label_1.replaceAll(" ", "");
-      String _replaceAll_1 = _replaceAll.replaceAll("(\\W)", "");
-      oElement.setElementId(_replaceAll_1);
+      oElement.setElementId(mElement.getLabel().replaceAll(" ", "").replaceAll("(\\W)", ""));
     }
-    String _iconURI = mElement.getIconURI();
-    oElement.setIconURI(_iconURI);
-    oElement.setDescription(false);
-    boolean _isCloseable = mElement.isCloseable();
-    oElement.setIsClosable(_isCloseable);
+    oElement.setIconURI(mElement.getIconURI());
+    oElement.setIsClosable(mElement.isCloseable());
     this.convertView(ePkg, mElement, oElement);
     return oElement;
   }
@@ -237,141 +197,24 @@
   }
   
   protected void _convertView(final TableDSLPackage ePackage, final MPart mPart, final PerspectivePart oPart) {
-    Map<String, String> _persistedState = mPart.getPersistedState();
-    final String flavor = _persistedState.get(E4PerspectiveToDSLConverter.OSBP_FLAVOR);
-    boolean _and = false;
-    boolean _notEquals = (!Objects.equal(flavor, null));
-    if (!_notEquals) {
-      _and = false;
-    } else {
-      boolean _equals = flavor.equals("grid");
-      _and = _equals;
-    }
-    if (_and) {
-      final PerspectiveGrid oTable = this.pFactory.createPerspectiveGrid();
-      oPart.setView(oTable);
-      Map<String, String> _persistedState_1 = mPart.getPersistedState();
-      final String fqn = _persistedState_1.get(E4PerspectiveToDSLConverter.OSBP_FQN);
-      boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(fqn);
-      if (_isNullOrEmpty) {
-        return;
-      }
-      int _lastIndexOf = fqn.lastIndexOf(".");
-      String _substring = fqn.substring(0, _lastIndexOf);
-      this.imports.add(_substring);
-      String[] _split = fqn.split("\\.");
-      QualifiedName _create = QualifiedName.create(_split);
-      final Iterable<IEObjectDescription> result = this.descriptions.getExportedObjects(TableDSLPackage.Literals.TABLE, _create, false);
-      Iterator<IEObjectDescription> _iterator = result.iterator();
-      boolean _hasNext = _iterator.hasNext();
-      if (_hasNext) {
-        Iterator<IEObjectDescription> _iterator_1 = result.iterator();
-        final IEObjectDescription eObjectDesc = _iterator_1.next();
-        EObject _eObjectOrProxy = eObjectDesc.getEObjectOrProxy();
-        oTable.setRef(((Table) _eObjectOrProxy));
-      }
-    } else {
-      final PerspectiveTable oTable_1 = this.pFactory.createPerspectiveTable();
-      oPart.setView(oTable_1);
-      Map<String, String> _persistedState_2 = mPart.getPersistedState();
-      final String fqn_1 = _persistedState_2.get(E4PerspectiveToDSLConverter.OSBP_FQN);
-      boolean _isNullOrEmpty_1 = StringExtensions.isNullOrEmpty(fqn_1);
-      if (_isNullOrEmpty_1) {
-        return;
-      }
-      int _lastIndexOf_1 = fqn_1.lastIndexOf(".");
-      String _substring_1 = fqn_1.substring(0, _lastIndexOf_1);
-      this.imports.add(_substring_1);
-      String[] _split_1 = fqn_1.split("\\.");
-      QualifiedName _create_1 = QualifiedName.create(_split_1);
-      final Iterable<IEObjectDescription> result_1 = this.descriptions.getExportedObjects(TableDSLPackage.Literals.TABLE, _create_1, false);
-      Iterator<IEObjectDescription> _iterator_2 = result_1.iterator();
-      boolean _hasNext_1 = _iterator_2.hasNext();
-      if (_hasNext_1) {
-        Iterator<IEObjectDescription> _iterator_3 = result_1.iterator();
-        final IEObjectDescription eObjectDesc_1 = _iterator_3.next();
-        EObject _eObjectOrProxy_1 = eObjectDesc_1.getEObjectOrProxy();
-        oTable_1.setRef(((Table) _eObjectOrProxy_1));
-      }
-    }
+    throw new Error("Unresolved compilation problems:"
+      + "\nType mismatch: cannot convert from Table to Table"
+      + "\nType mismatch: cannot convert from Table to Table");
   }
   
   protected void _convertView(final ChartDSLPackage ePackage, final MPart mPart, final PerspectivePart oPart) {
-    final PerspectiveChart oChart = this.pFactory.createPerspectiveChart();
-    oPart.setView(oChart);
-    Map<String, String> _persistedState = mPart.getPersistedState();
-    final String fqn = _persistedState.get(E4PerspectiveToDSLConverter.OSBP_FQN);
-    boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(fqn);
-    if (_isNullOrEmpty) {
-      return;
-    }
-    int _lastIndexOf = fqn.lastIndexOf(".");
-    String _substring = fqn.substring(0, _lastIndexOf);
-    this.imports.add(_substring);
-    final String[] tokens = fqn.split("\\.");
-    int _length = tokens.length;
-    int _minus = (_length - 1);
-    String _get = tokens[_minus];
-    QualifiedName _create = QualifiedName.create(_get);
-    final Iterable<IEObjectDescription> result = this.descriptions.getExportedObjects(ChartDSLPackage.Literals.CHART, _create, false);
-    Iterator<IEObjectDescription> _iterator = result.iterator();
-    boolean _hasNext = _iterator.hasNext();
-    if (_hasNext) {
-      Iterator<IEObjectDescription> _iterator_1 = result.iterator();
-      final IEObjectDescription eObjectDesc = _iterator_1.next();
-      EObject _eObjectOrProxy = eObjectDesc.getEObjectOrProxy();
-      oChart.setRef(((Chart) _eObjectOrProxy));
-    }
+    throw new Error("Unresolved compilation problems:"
+      + "\nType mismatch: cannot convert from Chart to Chart");
   }
   
   protected void _convertView(final ReportDSLPackage ePackage, final MPart mPart, final PerspectivePart oPart) {
-    final PerspectiveReport oReport = this.pFactory.createPerspectiveReport();
-    oPart.setView(oReport);
-    Map<String, String> _persistedState = mPart.getPersistedState();
-    final String fqn = _persistedState.get(E4PerspectiveToDSLConverter.OSBP_FQN);
-    boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(fqn);
-    if (_isNullOrEmpty) {
-      return;
-    }
-    int _lastIndexOf = fqn.lastIndexOf(".");
-    String _substring = fqn.substring(0, _lastIndexOf);
-    this.imports.add(_substring);
-    String[] _split = fqn.split("\\.");
-    QualifiedName _create = QualifiedName.create(_split);
-    final Iterable<IEObjectDescription> result = this.descriptions.getExportedObjects(ReportDSLPackage.Literals.REPORT, _create, false);
-    Iterator<IEObjectDescription> _iterator = result.iterator();
-    boolean _hasNext = _iterator.hasNext();
-    if (_hasNext) {
-      Iterator<IEObjectDescription> _iterator_1 = result.iterator();
-      final IEObjectDescription eObjectDesc = _iterator_1.next();
-      EObject _eObjectOrProxy = eObjectDesc.getEObjectOrProxy();
-      oReport.setRef(((Report) _eObjectOrProxy));
-    }
+    throw new Error("Unresolved compilation problems:"
+      + "\nType mismatch: cannot convert from Report to Report");
   }
   
   protected void _convertView(final DialogDSLPackage ePackage, final MPart mPart, final PerspectivePart oPart) {
-    final PerspectiveDialog oDialog = this.pFactory.createPerspectiveDialog();
-    oPart.setView(oDialog);
-    Map<String, String> _persistedState = mPart.getPersistedState();
-    final String fqn = _persistedState.get(E4PerspectiveToDSLConverter.OSBP_FQN);
-    boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(fqn);
-    if (_isNullOrEmpty) {
-      return;
-    }
-    int _lastIndexOf = fqn.lastIndexOf(".");
-    String _substring = fqn.substring(0, _lastIndexOf);
-    this.imports.add(_substring);
-    String[] _split = fqn.split("\\.");
-    QualifiedName _create = QualifiedName.create(_split);
-    final Iterable<IEObjectDescription> result = this.descriptions.getExportedObjects(DialogDSLPackage.Literals.DIALOG, _create, false);
-    Iterator<IEObjectDescription> _iterator = result.iterator();
-    boolean _hasNext = _iterator.hasNext();
-    if (_hasNext) {
-      Iterator<IEObjectDescription> _iterator_1 = result.iterator();
-      final IEObjectDescription eObjectDesc = _iterator_1.next();
-      EObject _eObjectOrProxy = eObjectDesc.getEObjectOrProxy();
-      oDialog.setRef(((Dialog) _eObjectOrProxy));
-    }
+    throw new Error("Unresolved compilation problems:"
+      + "\nType mismatch: cannot convert from Dialog to Dialog");
   }
   
   public SashOrientation toOrientation(final boolean isHorizontal) {
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/.gitignore b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/.gitignore
new file mode 100644
index 0000000..813d87d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/.gitignore
@@ -0,0 +1,2 @@
+/PerspectiveDslDescriptionLabelProvider.java
+/PerspectiveDslLabelProvider.java
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.java
index 6d017c6..fab13fd 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/labeling/PerspectiveDslLabelProvider.java
@@ -17,9 +17,6 @@
 import com.google.inject.Inject;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
 import org.eclipse.osbp.xtext.basic.ui.labeling.BasicDSLLabelProvider;
-import org.eclipse.osbp.xtext.chart.Chart;
-import org.eclipse.osbp.xtext.dialogdsl.Dialog;
-import org.eclipse.osbp.xtext.organizationdsl.Organization;
 import org.eclipse.osbp.xtext.perspective.Perspective;
 import org.eclipse.osbp.xtext.perspective.PerspectiveBPMN;
 import org.eclipse.osbp.xtext.perspective.PerspectiveChart;
@@ -35,9 +32,6 @@
 import org.eclipse.osbp.xtext.perspective.PerspectiveSelection;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTable;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTopology;
-import org.eclipse.osbp.xtext.reportdsl.Report;
-import org.eclipse.osbp.xtext.table.Table;
-import org.eclipse.osbp.xtext.topologydsl.Topology;
 
 /**
  * Provides labels for a EObjects.
@@ -51,106 +45,84 @@
     super(delegate);
   }
   
+  @Override
   public Object text(final Object o) {
     Object _switchResult = null;
     boolean _matched = false;
-    if (!_matched) {
-      if (o instanceof PerspectivePackage) {
-        _matched=true;
-        String _name = ((PerspectivePackage)o).getName();
-        _switchResult = this.generateText(o, "package", _name);
-      }
+    if (o instanceof PerspectivePackage) {
+      _matched=true;
+      _switchResult = this.generateText(o, "package", ((PerspectivePackage)o).getName());
     }
     if (!_matched) {
       if (o instanceof Perspective) {
         _matched=true;
-        String _name = ((Perspective)o).getName();
-        _switchResult = this.generateText(o, "perspective", _name);
+        _switchResult = this.generateText(o, "perspective", ((Perspective)o).getName());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveSashContainer) {
         _matched=true;
-        String _elementId = ((PerspectiveSashContainer)o).getElementId();
-        _switchResult = this.generateText(o, "sashContainer", _elementId);
+        _switchResult = this.generateText(o, "sashContainer", ((PerspectiveSashContainer)o).getElementId());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectivePartStack) {
         _matched=true;
-        String _elementId = ((PerspectivePartStack)o).getElementId();
-        _switchResult = this.generateText(o, "partStack", _elementId);
+        _switchResult = this.generateText(o, "partStack", ((PerspectivePartStack)o).getElementId());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectivePart) {
         _matched=true;
-        String _elementId = ((PerspectivePart)o).getElementId();
-        _switchResult = this.generateText(o, "part", _elementId);
+        _switchResult = this.generateText(o, "part", ((PerspectivePart)o).getElementId());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveSelection) {
         _matched=true;
-        Table _ref = ((PerspectiveSelection)o).getRef();
-        String _name = _ref.getName();
-        _switchResult = this.generateText(o, "select", _name);
+        _switchResult = this.generateText(o, "select", ((PerspectiveSelection)o).getRef().getName());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveTable) {
         _matched=true;
-        Table _ref = ((PerspectiveTable)o).getRef();
-        String _name = _ref.getName();
-        _switchResult = this.generateText(o, "table", _name);
+        _switchResult = this.generateText(o, "table", ((PerspectiveTable)o).getRef().getName());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveGrid) {
         _matched=true;
-        Table _ref = ((PerspectiveGrid)o).getRef();
-        String _name = _ref.getName();
-        _switchResult = this.generateText(o, "grid", _name);
+        _switchResult = this.generateText(o, "grid", ((PerspectiveGrid)o).getRef().getName());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveChart) {
         _matched=true;
-        Chart _ref = ((PerspectiveChart)o).getRef();
-        String _name = _ref.getName();
-        _switchResult = this.generateText(o, "chart", _name);
+        _switchResult = this.generateText(o, "chart", ((PerspectiveChart)o).getRef().getName());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveReport) {
         _matched=true;
-        Report _ref = ((PerspectiveReport)o).getRef();
-        String _name = _ref.getName();
-        _switchResult = this.generateText(o, "report", _name);
+        _switchResult = this.generateText(o, "report", ((PerspectiveReport)o).getRef().getName());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveOrganization) {
         _matched=true;
-        Organization _ref = ((PerspectiveOrganization)o).getRef();
-        String _name = _ref.getName();
-        _switchResult = this.generateText(o, "organigram", _name);
+        _switchResult = this.generateText(o, "organigram", ((PerspectiveOrganization)o).getRef().getName());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveTopology) {
         _matched=true;
-        Topology _ref = ((PerspectiveTopology)o).getRef();
-        String _name = _ref.getName();
-        _switchResult = this.generateText(o, "topology", _name);
+        _switchResult = this.generateText(o, "topology", ((PerspectiveTopology)o).getRef().getName());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveDialog) {
         _matched=true;
-        Dialog _ref = ((PerspectiveDialog)o).getRef();
-        String _name = _ref.getName();
-        _switchResult = this.generateText(o, "dialog", _name);
+        _switchResult = this.generateText(o, "dialog", ((PerspectiveDialog)o).getRef().getName());
       }
     }
     if (!_matched) {
@@ -165,84 +137,72 @@
     return _switchResult;
   }
   
+  @Override
   public Object image(final Object o) {
     Object _switchResult = null;
     boolean _matched = false;
-    if (!_matched) {
-      if (o instanceof PerspectiveModel) {
-        _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("model.png", _class);
-      }
+    if (o instanceof PerspectiveModel) {
+      _matched=true;
+      _switchResult = this.getInternalImage("model.png", this.getClass());
     }
     if (!_matched) {
       if (o instanceof PerspectivePackage) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("package.gif", _class);
+        _switchResult = this.getInternalImage("package.gif", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof Perspective) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_perspective.png", _class);
+        _switchResult = this.getInternalImage("dsl_perspective.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveSelection) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_select.png", _class);
+        _switchResult = this.getInternalImage("dsl_select.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveTable) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_table.png", _class);
+        _switchResult = this.getInternalImage("dsl_table.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveGrid) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("CxGridSourceInput.png", _class);
+        _switchResult = this.getInternalImage("CxGridSourceInput.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveChart) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_chart.png", _class);
+        _switchResult = this.getInternalImage("dsl_chart.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveReport) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_report.gif", _class);
+        _switchResult = this.getInternalImage("dsl_report.gif", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveOrganization) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_organigram.png", _class);
+        _switchResult = this.getInternalImage("dsl_organigram.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveTopology) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_topology.png", _class);
+        _switchResult = this.getInternalImage("dsl_topology.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof PerspectiveDialog) {
         _matched=true;
-        Class<? extends PerspectiveDslLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_dialog.gif", _class);
+        _switchResult = this.getInternalImage("dsl_dialog.gif", this.getClass());
       }
     }
     if (!_matched) {
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/outline/.gitignore b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/outline/.gitignore
new file mode 100644
index 0000000..76dc2c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/outline/.gitignore
@@ -0,0 +1 @@
+/PerspectiveDslOutlineTreeProvider.java
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/.gitignore b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/.gitignore
new file mode 100644
index 0000000..5e936d6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/.gitignore
@@ -0,0 +1 @@
+/PerspectiveDslQuickfixProvider.java
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.java
index c03895e..b587ae8 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/quickfix/PerspectiveDslQuickfixProvider.java
@@ -14,7 +14,7 @@
  */
 package org.eclipse.osbp.xtext.perspective.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 PerspectiveDslQuickfixProvider extends XbaseWithAnnotationsQuickfixProvider {
+public class PerspectiveDslQuickfixProvider extends OXtypeQuickfixProvider {
 }
diff --git a/org.eclipse.osbp.xtext.perspective/.classpath b/org.eclipse.osbp.xtext.perspective/.classpath
new file mode 100644
index 0000000..252db78
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.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="emf-gen/"/>
+	<classpathentry kind="src" path="xtend-gen/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.perspective/.gitignore b/org.eclipse.osbp.xtext.perspective/.gitignore
new file mode 100644
index 0000000..09e3bc9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/target/
diff --git a/org.eclipse.osbp.xtext.perspective/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.xtext.perspective/.settings/com.vaadin.integration.eclipse.prefs
new file mode 100644
index 0000000..0904e44
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.settings/com.vaadin.integration.eclipse.prefs
@@ -0,0 +1,2 @@
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.7"]
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.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.perspective/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs b/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs
new file mode 100644
index 0000000..5e53854
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.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.perspective/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.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.perspective/.settings/org.eclipse.ltk.core.refactoring.prefs b/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..b196c64
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.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.perspective/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..e697c89
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,23 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+autobuilding=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.cleanDirectory=false
+outlet.DEFAULT_OUTPUT.cleanupDerived=true
+outlet.DEFAULT_OUTPUT.createDirectory=true
+outlet.DEFAULT_OUTPUT.derived=true
+outlet.DEFAULT_OUTPUT.directory=./xtend-gen
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.keepLocalHistory=false
+outlet.DEFAULT_OUTPUT.override=true
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.ignore=
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.ignore=
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.ignore=
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.ignore=
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.xtext.perspective/.settings/org.lunifera.dsl.common.xtext.CommonGrammar.prefs b/org.eclipse.osbp.xtext.perspective/.settings/org.lunifera.dsl.common.xtext.CommonGrammar.prefs
new file mode 100644
index 0000000..5b778ad
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/.settings/org.lunifera.dsl.common.xtext.CommonGrammar.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=./src-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.perspective/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.perspective/META-INF/MANIFEST.MF
index ba559d2..364894a 100644
--- a/org.eclipse.osbp.xtext.perspective/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.perspective/META-INF/MANIFEST.MF
@@ -7,14 +7,13 @@
 Bundle-ClassPath: .
 Bundle-SymbolicName: org.eclipse.osbp.xtext.perspective;singleton:=true
 Bundle-ActivationPolicy: lazy
-Require-Bundle: org.eclipse.osbp.dsl.xtext.lazyresolver.api;bundle-version="[0.9.0,0.10.0)",
- org.slf4j.api;bundle-version="1.7.2",
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
  org.apache.xerces;bundle-version="2.9.0",
  org.apache.log4j;bundle-version="1.2.15",
  org.antlr.runtime,
  org.eclipse.core.runtime,
- org.eclipse.core.databinding,
- org.eclipse.core.databinding.beans,
+ org.eclipse.core.databinding;bundle-version="[1.6.0,1.7.0)",
+ org.eclipse.core.databinding.beans;bundle-version="[1.3.100,1.4.0)",
  org.eclipse.osgi.services,
  org.eclipse.emf.ecore;visibility:=reexport,
  org.eclipse.emf.common,
@@ -25,35 +24,32 @@
  org.eclipse.e4.core.services,
  org.eclipse.e4.ui.model.workbench,
  org.eclipse.e4.ui.workbench;bundle-version="1.2.1",
- org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.util;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.xbase;bundle-version="[2.11.0,2.12.0)";visibility:=reexport,
  org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
- org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
- org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
- org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.generator;bundle-version="[2.11.0,2.12.0)";resolution:=optional,
+ org.eclipse.xtext.common.types;bundle-version="[2.11.0,2.12.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.emf.ecore.xcore,
  org.eclipse.emf.ecore.xcore.lib,
  org.eclipse.osbp.infogrid.model;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
  org.objectweb.asm;bundle-version="[5.0.1,6.0.0)",
- com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
  org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.builder.xbase.setups;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.builder.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.infogrid.model;visibility:=reexport,
  org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.dto.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.dsl.xtext.lazyresolver;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.blip;visibility:=reexport,
+ org.eclipse.osbp.xtext.blip;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
  multifileupload.osgi;bundle-version="[1.10,1.11)",
  sizereporter.osgi;bundle-version="[0.1.4,0.1.5)",
  org.eclipse.osbp.ecview.dsl;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.eventbroker;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.utils;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.action;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
@@ -68,18 +64,20 @@
  org.eclipse.osbp.xtext.datamartdsl;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,
- org.eclipse.emf.mwe2.launch;bundle-version="2.7.1";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="[2.9.0,2.10.0)";resolution:=optional,
  org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.bpmn2.ecore,
- org.eclipse.osbp.xtext.datainterchange;bundle-version="0.9.0"
+ org.eclipse.osbp.bpmn2.ecore;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datainterchange;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
 Import-Package: javax.validation,
  javax.validation.constraints,
  org.apache.commons.lang,
  org.apache.log4j,
  org.eclipse.e4.core.di.annotations,
  org.eclipse.e4.ui.workbench,
- org.eclipse.osbp.bpm.api;version="0.9.0"
+ org.eclipse.osbp.bpm.api
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.xtext.perspective;version="0.9.0",
  org.eclipse.osbp.xtext.perspective.derivedstate;version="0.9.0",
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/Perspective.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/Perspective.java
index f3b4e0c..b2fb924 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/Perspective.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/Perspective.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.perspective;
@@ -29,6 +29,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.Perspective#isDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.Perspective#getDescriptionValue <em>Description Value</em>}</li>
@@ -40,7 +41,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.perspective.Perspective#getToolbarTypeJvm <em>Toolbar Type Jvm</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.Perspective#getElements <em>Elements</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspective()
  * @model
@@ -240,7 +240,7 @@
 	 * @return the value of the '<em>Toolbar Type Jvm</em>' containment reference.
 	 * @see #setToolbarTypeJvm(JvmTypeReference)
 	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspective_ToolbarTypeJvm()
-	 * @model containment="true" resolveProxies="true" transient="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	JvmTypeReference getToolbarTypeJvm();
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBPMN.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBPMN.java
index 6378b53..6b68573 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBPMN.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBPMN.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.perspective;
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBase.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBase.java
index 6ac0e36..6a12592 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBase.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBase.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.perspective;
@@ -21,10 +21,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveBase#getName <em>Name</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveBase()
  * @model
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBean.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBean.java
new file mode 100644
index 0000000..5bb8443
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveBean.java
@@ -0,0 +1,90 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective;
+
+import org.eclipse.osbp.xtext.table.Table;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Perspective Bean</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRef <em>Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveBean()
+ * @model
+ * @generated
+ */
+public interface PerspectiveBean extends PerspectiveView {
+	/**
+	 * Returns the value of the '<em><b>Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ref</em>' reference.
+	 * @see #setRef(Table)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveBean_Ref()
+	 * @model
+	 * @generated
+	 */
+	Table getRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRef <em>Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ref</em>' reference.
+	 * @see #getRef()
+	 * @generated
+	 */
+	void setRef(Table value);
+
+	/**
+	 * Returns the value of the '<em><b>Ref Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ref Type Jvm</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>Ref Type Jvm</em>' containment reference.
+	 * @see #setRefTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveBean_RefTypeJvm()
+	 * @model containment="true" resolveProxies="true"
+	 * @generated
+	 */
+	JvmTypeReference getRefTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRefTypeJvm <em>Ref Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ref Type Jvm</em>' containment reference.
+	 * @see #getRefTypeJvm()
+	 * @generated
+	 */
+	void setRefTypeJvm(JvmTypeReference value);
+
+} // PerspectiveBean
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveChart.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveChart.java
index b21053f..0238189 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveChart.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveChart.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.perspective;
@@ -24,11 +24,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveChart#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveChart#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveChart()
  * @model
@@ -72,7 +72,7 @@
 	 * @return the value of the '<em>Ref Type Jvm</em>' containment reference.
 	 * @see #setRefTypeJvm(JvmTypeReference)
 	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveChart_RefTypeJvm()
-	 * @model containment="true" resolveProxies="true" transient="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	JvmTypeReference getRefTypeJvm();
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDataInterchange.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDataInterchange.java
new file mode 100644
index 0000000..98b4f45
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDataInterchange.java
@@ -0,0 +1,90 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective;
+
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Perspective Data Interchange</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange#getRef <em>Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveDataInterchange()
+ * @model
+ * @generated
+ */
+public interface PerspectiveDataInterchange extends PerspectiveView {
+	/**
+	 * Returns the value of the '<em><b>Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ref</em>' reference.
+	 * @see #setRef(DataInterchangePackage)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveDataInterchange_Ref()
+	 * @model
+	 * @generated
+	 */
+	DataInterchangePackage getRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange#getRef <em>Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ref</em>' reference.
+	 * @see #getRef()
+	 * @generated
+	 */
+	void setRef(DataInterchangePackage value);
+
+	/**
+	 * Returns the value of the '<em><b>Ref Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ref Type Jvm</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>Ref Type Jvm</em>' containment reference.
+	 * @see #setRefTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveDataInterchange_RefTypeJvm()
+	 * @model containment="true" resolveProxies="true"
+	 * @generated
+	 */
+	JvmTypeReference getRefTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange#getRefTypeJvm <em>Ref Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ref Type Jvm</em>' containment reference.
+	 * @see #getRefTypeJvm()
+	 * @generated
+	 */
+	void setRefTypeJvm(JvmTypeReference value);
+
+} // PerspectiveDataInterchange
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDialog.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDialog.java
index e4f0669..5112494 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDialog.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDialog.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.perspective;
@@ -24,11 +24,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveDialog#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveDialog#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveDialog()
  * @model
@@ -72,7 +72,7 @@
 	 * @return the value of the '<em>Ref Type Jvm</em>' containment reference.
 	 * @see #setRefTypeJvm(JvmTypeReference)
 	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveDialog_RefTypeJvm()
-	 * @model containment="true" resolveProxies="true" transient="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	JvmTypeReference getRefTypeJvm();
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslFactory.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslFactory.java
index 7441e5b..7e6550f 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslFactory.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslFactory.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.perspective;
@@ -141,6 +141,15 @@
 	PerspectiveGrid createPerspectiveGrid();
 
 	/**
+	 * Returns a new object of class '<em>Perspective Bean</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Perspective Bean</em>'.
+	 * @generated
+	 */
+	PerspectiveBean createPerspectiveBean();
+
+	/**
 	 * Returns a new object of class '<em>Perspective Chart</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -195,6 +204,42 @@
 	PerspectiveBPMN createPerspectiveBPMN();
 
 	/**
+	 * Returns a new object of class '<em>Perspective Kanban</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Perspective Kanban</em>'.
+	 * @generated
+	 */
+	PerspectiveKanban createPerspectiveKanban();
+
+	/**
+	 * Returns a new object of class '<em>Perspective Welcome</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Perspective Welcome</em>'.
+	 * @generated
+	 */
+	PerspectiveWelcome createPerspectiveWelcome();
+
+	/**
+	 * Returns a new object of class '<em>Perspective Search</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Perspective Search</em>'.
+	 * @generated
+	 */
+	PerspectiveSearch createPerspectiveSearch();
+
+	/**
+	 * Returns a new object of class '<em>Perspective Data Interchange</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Perspective Data Interchange</em>'.
+	 * @generated
+	 */
+	PerspectiveDataInterchange createPerspectiveDataInterchange();
+
+	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.java
index b4048d5..628a09b 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.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.perspective;
@@ -37,7 +37,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslFactory
  * @model kind="package"
- *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='perspective' modelName='PerspectiveDsl' prefix='PerspectiveDsl' updateClasspath='false' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials \r\n are made available under the terms of the Eclipse Public License v1.0 \r\n which accompanies this distribution, and is available at \r\n http{//www.eclipse.org/legal/epl-v10.html \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors{  \r\n \t\tChristophe Loetz (Loetz GmbH&Co.KG) - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='perspective' modelName='PerspectiveDsl' prefix='PerspectiveDsl' updateClasspath='false' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\n All rights reserved. This program and the accompanying materials \n are made available under the terms of the Eclipse Public License v1.0 \n which accompanies this distribution, and is available at \n http{//www.eclipse.org/legal/epl-v10.html \n\n Based on ideas from Xtext, Xtend, Xcore\n  \n Contributors{  \n \t\tJoerg Riegel - Initial implementation \n ' basePackage='org.eclipse.osbp.xtext'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='perspectivedsl'"
  * @generated
  */
@@ -85,13 +85,22 @@
 	int PERSPECTIVE_MODEL = 0;
 
 	/**
+	 * The feature id for the '<em><b>Import Section</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_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 PERSPECTIVE_MODEL__PACKAGES = 0;
+	int PERSPECTIVE_MODEL__PACKAGES = 1;
 
 	/**
 	 * The number of structural features of the '<em>Perspective Model</em>' class.
@@ -100,7 +109,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PERSPECTIVE_MODEL_FEATURE_COUNT = 1;
+	int PERSPECTIVE_MODEL_FEATURE_COUNT = 2;
 
 	/**
 	 * The number of operations of the '<em>Perspective Model</em>' class.
@@ -168,15 +177,6 @@
 	int PERSPECTIVE_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 PERSPECTIVE_PACKAGE__IMPORTS = OSBPTypesPackage.LPACKAGE__IMPORTS;
-
-	/**
 	 * The feature id for the '<em><b>Perspectives</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -596,31 +596,13 @@
 	int PERSPECTIVE_PART__ELEMENTS = PERSPECTIVE_ELEMENT__ELEMENTS;
 
 	/**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERSPECTIVE_PART__DESCRIPTION = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Description Value</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PERSPECTIVE_PART__DESCRIPTION_VALUE = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
 	 * The feature id for the '<em><b>Icon URI</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PERSPECTIVE_PART__ICON_URI = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 2;
+	int PERSPECTIVE_PART__ICON_URI = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>View</b></em>' containment reference.
@@ -629,7 +611,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PERSPECTIVE_PART__VIEW = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 3;
+	int PERSPECTIVE_PART__VIEW = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Is Closable</b></em>' attribute.
@@ -638,7 +620,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PERSPECTIVE_PART__IS_CLOSABLE = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 4;
+	int PERSPECTIVE_PART__IS_CLOSABLE = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Perspective Part</em>' class.
@@ -647,7 +629,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PERSPECTIVE_PART_FEATURE_COUNT = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 5;
+	int PERSPECTIVE_PART_FEATURE_COUNT = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -952,6 +934,61 @@
 	int PERSPECTIVE_GRID_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl <em>Perspective Bean</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveBean()
+	 * @generated
+	 */
+	int PERSPECTIVE_BEAN = 13;
+
+	/**
+	 * The feature id for the '<em><b>Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_BEAN__REF = PERSPECTIVE_VIEW_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Ref Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_BEAN__REF_TYPE_JVM = PERSPECTIVE_VIEW_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Perspective Bean</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_BEAN_FEATURE_COUNT = PERSPECTIVE_VIEW_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_BEAN___ERESOLVE_PROXY__INTERNALEOBJECT = PERSPECTIVE_VIEW___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Perspective Bean</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_BEAN_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveChartImpl <em>Perspective Chart</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -959,7 +996,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveChart()
 	 * @generated
 	 */
-	int PERSPECTIVE_CHART = 13;
+	int PERSPECTIVE_CHART = 14;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1014,7 +1051,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveReport()
 	 * @generated
 	 */
-	int PERSPECTIVE_REPORT = 14;
+	int PERSPECTIVE_REPORT = 15;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1069,7 +1106,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveOrganization()
 	 * @generated
 	 */
-	int PERSPECTIVE_ORGANIZATION = 15;
+	int PERSPECTIVE_ORGANIZATION = 16;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1115,7 +1152,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveTopology()
 	 * @generated
 	 */
-	int PERSPECTIVE_TOPOLOGY = 16;
+	int PERSPECTIVE_TOPOLOGY = 17;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1170,7 +1207,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveDialog()
 	 * @generated
 	 */
-	int PERSPECTIVE_DIALOG = 17;
+	int PERSPECTIVE_DIALOG = 18;
 
 	/**
 	 * The feature id for the '<em><b>Ref</b></em>' reference.
@@ -1225,7 +1262,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveBPMN()
 	 * @generated
 	 */
-	int PERSPECTIVE_BPMN = 18;
+	int PERSPECTIVE_BPMN = 19;
 
 	/**
 	 * The number of structural features of the '<em>Perspective BPMN</em>' class.
@@ -1255,6 +1292,226 @@
 	int PERSPECTIVE_BPMN_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveKanbanImpl <em>Perspective Kanban</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveKanbanImpl
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveKanban()
+	 * @generated
+	 */
+	int PERSPECTIVE_KANBAN = 20;
+
+	/**
+	 * The feature id for the '<em><b>Dto Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_KANBAN__DTO_REF = PERSPECTIVE_VIEW_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Card Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_KANBAN__CARD_REF = PERSPECTIVE_VIEW_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Dialog Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_KANBAN__DIALOG_REF = PERSPECTIVE_VIEW_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Perspective Kanban</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_KANBAN_FEATURE_COUNT = PERSPECTIVE_VIEW_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_KANBAN___ERESOLVE_PROXY__INTERNALEOBJECT = PERSPECTIVE_VIEW___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Perspective Kanban</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_KANBAN_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveWelcomeImpl <em>Perspective Welcome</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveWelcomeImpl
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveWelcome()
+	 * @generated
+	 */
+	int PERSPECTIVE_WELCOME = 21;
+
+	/**
+	 * The number of structural features of the '<em>Perspective Welcome</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_WELCOME_FEATURE_COUNT = PERSPECTIVE_VIEW_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_WELCOME___ERESOLVE_PROXY__INTERNALEOBJECT = PERSPECTIVE_VIEW___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Perspective Welcome</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_WELCOME_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveSearchImpl <em>Perspective Search</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveSearchImpl
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveSearch()
+	 * @generated
+	 */
+	int PERSPECTIVE_SEARCH = 22;
+
+	/**
+	 * The feature id for the '<em><b>Dto Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_SEARCH__DTO_REF = PERSPECTIVE_VIEW_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Depth</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_SEARCH__DEPTH = PERSPECTIVE_VIEW_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Filter Cols</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_SEARCH__FILTER_COLS = PERSPECTIVE_VIEW_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Perspective Search</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_SEARCH_FEATURE_COUNT = PERSPECTIVE_VIEW_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_SEARCH___ERESOLVE_PROXY__INTERNALEOBJECT = PERSPECTIVE_VIEW___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Perspective Search</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_SEARCH_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveDataInterchangeImpl <em>Perspective Data Interchange</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDataInterchangeImpl
+	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveDataInterchange()
+	 * @generated
+	 */
+	int PERSPECTIVE_DATA_INTERCHANGE = 23;
+
+	/**
+	 * The feature id for the '<em><b>Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_DATA_INTERCHANGE__REF = PERSPECTIVE_VIEW_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Ref Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM = PERSPECTIVE_VIEW_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Perspective Data Interchange</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_DATA_INTERCHANGE_FEATURE_COUNT = PERSPECTIVE_VIEW_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_DATA_INTERCHANGE___ERESOLVE_PROXY__INTERNALEOBJECT = PERSPECTIVE_VIEW___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Perspective Data Interchange</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_DATA_INTERCHANGE_OPERATION_COUNT = PERSPECTIVE_VIEW_OPERATION_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.perspective.SashOrientation <em>Sash Orientation</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1262,7 +1519,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getSashOrientation()
 	 * @generated
 	 */
-	int SASH_ORIENTATION = 19;
+	int SASH_ORIENTATION = 24;
 
 	/**
 	 * The meta object id for the '<em>Internal EObject</em>' data type.
@@ -1272,7 +1529,7 @@
 	 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getInternalEObject()
 	 * @generated
 	 */
-	int INTERNAL_EOBJECT = 20;
+	int INTERNAL_EOBJECT = 25;
 
 
 	/**
@@ -1286,6 +1543,17 @@
 	EClass getPerspectiveModel();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveModel#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.perspective.PerspectiveModel#getImportSection()
+	 * @see #getPerspectiveModel()
+	 * @generated
+	 */
+	EReference getPerspectiveModel_ImportSection();
+
+	/**
 	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.perspective.PerspectiveModel#getPackages <em>Packages</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1564,28 +1832,6 @@
 	EClass getPerspectivePart();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#isDescription <em>Description</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectivePart#isDescription()
-	 * @see #getPerspectivePart()
-	 * @generated
-	 */
-	EAttribute getPerspectivePart_Description();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#getDescriptionValue <em>Description Value</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description Value</em>'.
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectivePart#getDescriptionValue()
-	 * @see #getPerspectivePart()
-	 * @generated
-	 */
-	EAttribute getPerspectivePart_DescriptionValue();
-
-	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#getIconURI <em>Icon URI</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1746,6 +1992,38 @@
 	EReference getPerspectiveGrid_RefTypeJvm();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean <em>Perspective Bean</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Perspective Bean</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBean
+	 * @generated
+	 */
+	EClass getPerspectiveBean();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRef <em>Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRef()
+	 * @see #getPerspectiveBean()
+	 * @generated
+	 */
+	EReference getPerspectiveBean_Ref();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRefTypeJvm <em>Ref Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Ref Type Jvm</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBean#getRefTypeJvm()
+	 * @see #getPerspectiveBean()
+	 * @generated
+	 */
+	EReference getPerspectiveBean_RefTypeJvm();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveChart <em>Perspective Chart</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1905,6 +2183,134 @@
 	EClass getPerspectiveBPMN();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban <em>Perspective Kanban</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Perspective Kanban</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveKanban
+	 * @generated
+	 */
+	EClass getPerspectiveKanban();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getDtoRef <em>Dto Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Dto Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getDtoRef()
+	 * @see #getPerspectiveKanban()
+	 * @generated
+	 */
+	EReference getPerspectiveKanban_DtoRef();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getCardRef <em>Card Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Card Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getCardRef()
+	 * @see #getPerspectiveKanban()
+	 * @generated
+	 */
+	EReference getPerspectiveKanban_CardRef();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getDialogRef <em>Dialog Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Dialog Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getDialogRef()
+	 * @see #getPerspectiveKanban()
+	 * @generated
+	 */
+	EReference getPerspectiveKanban_DialogRef();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveWelcome <em>Perspective Welcome</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Perspective Welcome</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveWelcome
+	 * @generated
+	 */
+	EClass getPerspectiveWelcome();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch <em>Perspective Search</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Perspective Search</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveSearch
+	 * @generated
+	 */
+	EClass getPerspectiveSearch();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getDtoRef <em>Dto Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Dto Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getDtoRef()
+	 * @see #getPerspectiveSearch()
+	 * @generated
+	 */
+	EReference getPerspectiveSearch_DtoRef();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getDepth <em>Depth</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Depth</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getDepth()
+	 * @see #getPerspectiveSearch()
+	 * @generated
+	 */
+	EAttribute getPerspectiveSearch_Depth();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getFilterCols <em>Filter Cols</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Filter Cols</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getFilterCols()
+	 * @see #getPerspectiveSearch()
+	 * @generated
+	 */
+	EAttribute getPerspectiveSearch_FilterCols();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange <em>Perspective Data Interchange</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Perspective Data Interchange</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange
+	 * @generated
+	 */
+	EClass getPerspectiveDataInterchange();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange#getRef <em>Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange#getRef()
+	 * @see #getPerspectiveDataInterchange()
+	 * @generated
+	 */
+	EReference getPerspectiveDataInterchange_Ref();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange#getRefTypeJvm <em>Ref Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Ref Type Jvm</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange#getRefTypeJvm()
+	 * @see #getPerspectiveDataInterchange()
+	 * @generated
+	 */
+	EReference getPerspectiveDataInterchange_RefTypeJvm();
+
+	/**
 	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.perspective.SashOrientation <em>Sash Orientation</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1959,6 +2365,14 @@
 		EClass PERSPECTIVE_MODEL = eINSTANCE.getPerspectiveModel();
 
 		/**
+		 * The meta object literal for the '<em><b>Import Section</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_MODEL__IMPORT_SECTION = eINSTANCE.getPerspectiveModel_ImportSection();
+
+		/**
 		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2181,22 +2595,6 @@
 		EClass PERSPECTIVE_PART = eINSTANCE.getPerspectivePart();
 
 		/**
-		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute PERSPECTIVE_PART__DESCRIPTION = eINSTANCE.getPerspectivePart_Description();
-
-		/**
-		 * The meta object literal for the '<em><b>Description Value</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute PERSPECTIVE_PART__DESCRIPTION_VALUE = eINSTANCE.getPerspectivePart_DescriptionValue();
-
-		/**
 		 * The meta object literal for the '<em><b>Icon URI</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2327,6 +2725,32 @@
 		EReference PERSPECTIVE_GRID__REF_TYPE_JVM = eINSTANCE.getPerspectiveGrid_RefTypeJvm();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl <em>Perspective Bean</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveBean()
+		 * @generated
+		 */
+		EClass PERSPECTIVE_BEAN = eINSTANCE.getPerspectiveBean();
+
+		/**
+		 * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_BEAN__REF = eINSTANCE.getPerspectiveBean_Ref();
+
+		/**
+		 * The meta object literal for the '<em><b>Ref Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_BEAN__REF_TYPE_JVM = eINSTANCE.getPerspectiveBean_RefTypeJvm();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveChartImpl <em>Perspective Chart</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2459,6 +2883,110 @@
 		EClass PERSPECTIVE_BPMN = eINSTANCE.getPerspectiveBPMN();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveKanbanImpl <em>Perspective Kanban</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveKanbanImpl
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveKanban()
+		 * @generated
+		 */
+		EClass PERSPECTIVE_KANBAN = eINSTANCE.getPerspectiveKanban();
+
+		/**
+		 * The meta object literal for the '<em><b>Dto Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_KANBAN__DTO_REF = eINSTANCE.getPerspectiveKanban_DtoRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Card Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_KANBAN__CARD_REF = eINSTANCE.getPerspectiveKanban_CardRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Dialog Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_KANBAN__DIALOG_REF = eINSTANCE.getPerspectiveKanban_DialogRef();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveWelcomeImpl <em>Perspective Welcome</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveWelcomeImpl
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveWelcome()
+		 * @generated
+		 */
+		EClass PERSPECTIVE_WELCOME = eINSTANCE.getPerspectiveWelcome();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveSearchImpl <em>Perspective Search</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveSearchImpl
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveSearch()
+		 * @generated
+		 */
+		EClass PERSPECTIVE_SEARCH = eINSTANCE.getPerspectiveSearch();
+
+		/**
+		 * The meta object literal for the '<em><b>Dto Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_SEARCH__DTO_REF = eINSTANCE.getPerspectiveSearch_DtoRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Depth</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PERSPECTIVE_SEARCH__DEPTH = eINSTANCE.getPerspectiveSearch_Depth();
+
+		/**
+		 * The meta object literal for the '<em><b>Filter Cols</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PERSPECTIVE_SEARCH__FILTER_COLS = eINSTANCE.getPerspectiveSearch_FilterCols();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveDataInterchangeImpl <em>Perspective Data Interchange</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDataInterchangeImpl
+		 * @see org.eclipse.osbp.xtext.perspective.impl.PerspectiveDslPackageImpl#getPerspectiveDataInterchange()
+		 * @generated
+		 */
+		EClass PERSPECTIVE_DATA_INTERCHANGE = eINSTANCE.getPerspectiveDataInterchange();
+
+		/**
+		 * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_DATA_INTERCHANGE__REF = eINSTANCE.getPerspectiveDataInterchange_Ref();
+
+		/**
+		 * The meta object literal for the '<em><b>Ref Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM = eINSTANCE.getPerspectiveDataInterchange_RefTypeJvm();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.SashOrientation <em>Sash Orientation</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveElement.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveElement.java
index cb3fe11..e589de8 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveElement.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveElement.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.perspective;
@@ -22,13 +22,13 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveElement#getElementId <em>Element Id</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveElement#getAccessibilityPhrase <em>Accessibility Phrase</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveElement#getContainerData <em>Container Data</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveElement#getElements <em>Elements</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveElement()
  * @model
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveGrid.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveGrid.java
index 5732f40..e81f102 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveGrid.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveGrid.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.perspective;
@@ -24,11 +24,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveGrid#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveGrid#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveGrid()
  * @model
@@ -72,7 +72,7 @@
 	 * @return the value of the '<em>Ref Type Jvm</em>' containment reference.
 	 * @see #setRefTypeJvm(JvmTypeReference)
 	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveGrid_RefTypeJvm()
-	 * @model containment="true" resolveProxies="true" transient="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	JvmTypeReference getRefTypeJvm();
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveKanban.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveKanban.java
new file mode 100644
index 0000000..f46e893
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveKanban.java
@@ -0,0 +1,117 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+import org.eclipse.osbp.xtext.dialogdsl.Dialog;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Perspective Kanban</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getDtoRef <em>Dto Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getCardRef <em>Card Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getDialogRef <em>Dialog Ref</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveKanban()
+ * @model
+ * @generated
+ */
+public interface PerspectiveKanban extends PerspectiveView {
+	/**
+	 * Returns the value of the '<em><b>Dto Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dto Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dto Ref</em>' reference.
+	 * @see #setDtoRef(LDto)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveKanban_DtoRef()
+	 * @model
+	 * @generated
+	 */
+	LDto getDtoRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getDtoRef <em>Dto Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dto Ref</em>' reference.
+	 * @see #getDtoRef()
+	 * @generated
+	 */
+	void setDtoRef(LDto value);
+
+	/**
+	 * Returns the value of the '<em><b>Card Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Card Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Card Ref</em>' reference.
+	 * @see #setCardRef(Dialog)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveKanban_CardRef()
+	 * @model
+	 * @generated
+	 */
+	Dialog getCardRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getCardRef <em>Card Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Card Ref</em>' reference.
+	 * @see #getCardRef()
+	 * @generated
+	 */
+	void setCardRef(Dialog value);
+
+	/**
+	 * Returns the value of the '<em><b>Dialog Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dialog Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dialog Ref</em>' reference.
+	 * @see #setDialogRef(Dialog)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveKanban_DialogRef()
+	 * @model
+	 * @generated
+	 */
+	Dialog getDialogRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban#getDialogRef <em>Dialog Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dialog Ref</em>' reference.
+	 * @see #getDialogRef()
+	 * @generated
+	 */
+	void setDialogRef(Dialog value);
+
+} // PerspectiveKanban
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveLazyResolver.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveLazyResolver.java
index 5048019..b015f1c 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveLazyResolver.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveLazyResolver.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.perspective;
@@ -31,7 +31,7 @@
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @model unique="false" proxyDataType="org.eclipse.osbp.xtext.perspective.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.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveModel.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveModel.java
index 5d3f73a..79549f2 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveModel.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveModel.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.perspective;
@@ -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>Perspective Model</b></em>'.
@@ -24,10 +26,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveModel#getImportSection <em>Import Section</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveModel#getPackages <em>Packages</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveModel()
  * @model
@@ -35,6 +38,32 @@
  */
 public interface PerspectiveModel 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.perspective.PerspectiveDslPackage#getPerspectiveModel_ImportSection()
+	 * @model containment="true"
+	 * @generated
+	 */
+	XImportSection getImportSection();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveModel#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.perspective.PerspectivePackage}.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveOrganization.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveOrganization.java
index 876384a..aea46e1 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveOrganization.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveOrganization.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.perspective;
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveOrganization#getRef <em>Ref</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveOrganization()
  * @model
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePackage.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePackage.java
index 5f8b102..4985578 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePackage.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePackage.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.perspective;
@@ -24,10 +24,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectivePackage#getPerspectives <em>Perspectives</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectivePackage()
  * @model
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePart.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePart.java
index 7f346ea..7ae959e 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePart.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePart.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.perspective;
@@ -21,14 +21,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#isDescription <em>Description</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#getDescriptionValue <em>Description Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#getIconURI <em>Icon URI</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#getView <em>View</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#isIsClosable <em>Is Closable</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectivePart()
  * @model
@@ -36,58 +34,6 @@
  */
 public interface PerspectivePart extends PerspectiveElement {
 	/**
-	 * Returns the value of the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Description</em>' attribute.
-	 * @see #setDescription(boolean)
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectivePart_Description()
-	 * @model unique="false"
-	 * @generated
-	 */
-	boolean isDescription();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#isDescription <em>Description</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Description</em>' attribute.
-	 * @see #isDescription()
-	 * @generated
-	 */
-	void setDescription(boolean value);
-
-	/**
-	 * Returns the value of the '<em><b>Description Value</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Description Value</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Description Value</em>' attribute.
-	 * @see #setDescriptionValue(String)
-	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectivePart_DescriptionValue()
-	 * @model unique="false"
-	 * @generated
-	 */
-	String getDescriptionValue();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectivePart#getDescriptionValue <em>Description Value</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Description Value</em>' attribute.
-	 * @see #getDescriptionValue()
-	 * @generated
-	 */
-	void setDescriptionValue(String value);
-
-	/**
 	 * Returns the value of the '<em><b>Icon URI</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePartStack.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePartStack.java
index 026cb0a..52fb005 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePartStack.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePartStack.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.perspective;
@@ -21,10 +21,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectivePartStack#getSelectedElement <em>Selected Element</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectivePartStack()
  * @model
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveReport.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveReport.java
index 0e32c3d..503678c 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveReport.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveReport.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.perspective;
@@ -24,11 +24,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveReport#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveReport#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveReport()
  * @model
@@ -72,7 +72,7 @@
 	 * @return the value of the '<em>Ref Type Jvm</em>' containment reference.
 	 * @see #setRefTypeJvm(JvmTypeReference)
 	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveReport_RefTypeJvm()
-	 * @model containment="true" resolveProxies="true" transient="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	JvmTypeReference getRefTypeJvm();
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSashContainer.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSashContainer.java
index 2ae574e..0a5825b 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSashContainer.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSashContainer.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.perspective;
@@ -21,11 +21,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveSashContainer#getOrientation <em>Orientation</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveSashContainer#getSelectedElement <em>Selected Element</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveSashContainer()
  * @model
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSearch.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSearch.java
new file mode 100644
index 0000000..46e4b57
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSearch.java
@@ -0,0 +1,115 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Perspective Search</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getDtoRef <em>Dto Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getDepth <em>Depth</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getFilterCols <em>Filter Cols</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveSearch()
+ * @model
+ * @generated
+ */
+public interface PerspectiveSearch extends PerspectiveView {
+	/**
+	 * Returns the value of the '<em><b>Dto Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dto Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dto Ref</em>' reference.
+	 * @see #setDtoRef(LDto)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveSearch_DtoRef()
+	 * @model
+	 * @generated
+	 */
+	LDto getDtoRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getDtoRef <em>Dto Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dto Ref</em>' reference.
+	 * @see #getDtoRef()
+	 * @generated
+	 */
+	void setDtoRef(LDto value);
+
+	/**
+	 * Returns the value of the '<em><b>Depth</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Depth</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Depth</em>' attribute.
+	 * @see #setDepth(int)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveSearch_Depth()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getDepth();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getDepth <em>Depth</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Depth</em>' attribute.
+	 * @see #getDepth()
+	 * @generated
+	 */
+	void setDepth(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Filter Cols</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filter Cols</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filter Cols</em>' attribute.
+	 * @see #setFilterCols(int)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveSearch_FilterCols()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getFilterCols();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch#getFilterCols <em>Filter Cols</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filter Cols</em>' attribute.
+	 * @see #getFilterCols()
+	 * @generated
+	 */
+	void setFilterCols(int value);
+
+} // PerspectiveSearch
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSelection.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSelection.java
index 91e724e..fde4950 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSelection.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveSelection.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.perspective;
@@ -24,11 +24,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveSelection#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveSelection#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveSelection()
  * @model
@@ -72,7 +72,7 @@
 	 * @return the value of the '<em>Ref Type Jvm</em>' containment reference.
 	 * @see #setRefTypeJvm(JvmTypeReference)
 	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveSelection_RefTypeJvm()
-	 * @model containment="true" resolveProxies="true" transient="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	JvmTypeReference getRefTypeJvm();
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTable.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTable.java
index c6fc434..612d997 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTable.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTable.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.perspective;
@@ -24,11 +24,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveTable#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveTable#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveTable()
  * @model
@@ -72,7 +72,7 @@
 	 * @return the value of the '<em>Ref Type Jvm</em>' containment reference.
 	 * @see #setRefTypeJvm(JvmTypeReference)
 	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveTable_RefTypeJvm()
-	 * @model containment="true" resolveProxies="true" transient="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	JvmTypeReference getRefTypeJvm();
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTopology.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTopology.java
index 3429751..0b35123 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTopology.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveTopology.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.perspective;
@@ -24,11 +24,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveTopology#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectiveTopology#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveTopology()
  * @model
@@ -72,7 +72,7 @@
 	 * @return the value of the '<em>Ref Type Jvm</em>' containment reference.
 	 * @see #setRefTypeJvm(JvmTypeReference)
 	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveTopology_RefTypeJvm()
-	 * @model containment="true" resolveProxies="true" transient="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	JvmTypeReference getRefTypeJvm();
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveView.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveView.java
index 4e1705b..4479aa2 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveView.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveView.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.perspective;
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveWelcome.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveWelcome.java
new file mode 100644
index 0000000..77d3ba9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveWelcome.java
@@ -0,0 +1,28 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Perspective Welcome</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectiveWelcome()
+ * @model
+ * @generated
+ */
+public interface PerspectiveWelcome extends PerspectiveView {
+} // PerspectiveWelcome
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/SashOrientation.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/SashOrientation.java
index 2f680a8..a13d308 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/SashOrientation.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/SashOrientation.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.perspective;
@@ -103,6 +103,8 @@
 	 * Returns the '<em><b>Sash Orientation</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 SashOrientation get(String literal) {
@@ -119,6 +121,8 @@
 	 * Returns the '<em><b>Sash Orientation</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 SashOrientation getByName(String name) {
@@ -135,6 +139,8 @@
 	 * Returns the '<em><b>Sash Orientation</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 SashOrientation get(int value) {
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBPMNImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBPMNImpl.java
index 670db67..101c84e 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBPMNImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBPMNImpl.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.perspective.impl;
@@ -22,8 +22,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Perspective BPMN</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBaseImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBaseImpl.java
index f5f398f..69da3fb 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBaseImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBaseImpl.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.perspective.impl;
@@ -28,10 +28,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBaseImpl#getName <em>Name</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBeanImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBeanImpl.java
new file mode 100644
index 0000000..c8d9813
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveBeanImpl.java
@@ -0,0 +1,273 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.perspective.PerspectiveBean;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+
+import org.eclipse.osbp.xtext.table.Table;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Perspective Bean</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl#getRef <em>Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveBeanImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PerspectiveBeanImpl extends PerspectiveLazyResolverImpl implements PerspectiveBean {
+	/**
+	 * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected Table ref;
+
+	/**
+	 * The cached value of the '{@link #getRefTypeJvm() <em>Ref Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRefTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference refTypeJvm;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveBeanImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Table getRef() {
+		if (ref != null && ref.eIsProxy()) {
+			InternalEObject oldRef = (InternalEObject)ref;
+			ref = (Table)eResolveProxy(oldRef);
+			if (ref != oldRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF, oldRef, ref));
+			}
+		}
+		return ref;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Table basicGetRef() {
+		return ref;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRef(Table newRef) {
+		Table oldRef = ref;
+		ref = newRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF, oldRef, ref));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getRefTypeJvm() {
+		if (refTypeJvm != null && refTypeJvm.eIsProxy()) {
+			InternalEObject oldRefTypeJvm = (InternalEObject)refTypeJvm;
+			refTypeJvm = (JvmTypeReference)eResolveProxy(oldRefTypeJvm);
+			if (refTypeJvm != oldRefTypeJvm) {
+				InternalEObject newRefTypeJvm = (InternalEObject)refTypeJvm;
+				NotificationChain msgs = oldRefTypeJvm.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, null, null);
+				if (newRefTypeJvm.eInternalContainer() == null) {
+					msgs = newRefTypeJvm.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, null, msgs);
+				}
+				if (msgs != null) msgs.dispatch();
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, oldRefTypeJvm, refTypeJvm));
+			}
+		}
+		return refTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference basicGetRefTypeJvm() {
+		return refTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRefTypeJvm(JvmTypeReference newRefTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldRefTypeJvm = refTypeJvm;
+		refTypeJvm = newRefTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, oldRefTypeJvm, newRefTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRefTypeJvm(JvmTypeReference newRefTypeJvm) {
+		if (newRefTypeJvm != refTypeJvm) {
+			NotificationChain msgs = null;
+			if (refTypeJvm != null)
+				msgs = ((InternalEObject)refTypeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, null, msgs);
+			if (newRefTypeJvm != null)
+				msgs = ((InternalEObject)newRefTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, null, msgs);
+			msgs = basicSetRefTypeJvm(newRefTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM, newRefTypeJvm, newRefTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
+				return basicSetRefTypeJvm(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF:
+				if (resolve) return getRef();
+				return basicGetRef();
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
+				if (resolve) return getRefTypeJvm();
+				return basicGetRefTypeJvm();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF:
+				setRef((Table)newValue);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
+				setRefTypeJvm((JvmTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF:
+				setRef((Table)null);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
+				setRefTypeJvm((JvmTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF:
+				return ref != null;
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN__REF_TYPE_JVM:
+				return refTypeJvm != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PerspectiveBeanImpl
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveChartImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveChartImpl.java
index dbdc09b..633a60d 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveChartImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveChartImpl.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.perspective.impl;
@@ -34,11 +34,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveChartImpl#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveChartImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDataInterchangeImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDataInterchangeImpl.java
new file mode 100644
index 0000000..7e506f5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDataInterchangeImpl.java
@@ -0,0 +1,273 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage;
+
+import org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Perspective Data Interchange</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveDataInterchangeImpl#getRef <em>Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveDataInterchangeImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PerspectiveDataInterchangeImpl extends PerspectiveLazyResolverImpl implements PerspectiveDataInterchange {
+	/**
+	 * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected DataInterchangePackage ref;
+
+	/**
+	 * The cached value of the '{@link #getRefTypeJvm() <em>Ref Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRefTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference refTypeJvm;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveDataInterchangeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PerspectiveDslPackage.Literals.PERSPECTIVE_DATA_INTERCHANGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DataInterchangePackage getRef() {
+		if (ref != null && ref.eIsProxy()) {
+			InternalEObject oldRef = (InternalEObject)ref;
+			ref = (DataInterchangePackage)eResolveProxy(oldRef);
+			if (ref != oldRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF, oldRef, ref));
+			}
+		}
+		return ref;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DataInterchangePackage basicGetRef() {
+		return ref;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRef(DataInterchangePackage newRef) {
+		DataInterchangePackage oldRef = ref;
+		ref = newRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF, oldRef, ref));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getRefTypeJvm() {
+		if (refTypeJvm != null && refTypeJvm.eIsProxy()) {
+			InternalEObject oldRefTypeJvm = (InternalEObject)refTypeJvm;
+			refTypeJvm = (JvmTypeReference)eResolveProxy(oldRefTypeJvm);
+			if (refTypeJvm != oldRefTypeJvm) {
+				InternalEObject newRefTypeJvm = (InternalEObject)refTypeJvm;
+				NotificationChain msgs = oldRefTypeJvm.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM, null, null);
+				if (newRefTypeJvm.eInternalContainer() == null) {
+					msgs = newRefTypeJvm.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM, null, msgs);
+				}
+				if (msgs != null) msgs.dispatch();
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM, oldRefTypeJvm, refTypeJvm));
+			}
+		}
+		return refTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference basicGetRefTypeJvm() {
+		return refTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRefTypeJvm(JvmTypeReference newRefTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldRefTypeJvm = refTypeJvm;
+		refTypeJvm = newRefTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM, oldRefTypeJvm, newRefTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRefTypeJvm(JvmTypeReference newRefTypeJvm) {
+		if (newRefTypeJvm != refTypeJvm) {
+			NotificationChain msgs = null;
+			if (refTypeJvm != null)
+				msgs = ((InternalEObject)refTypeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM, null, msgs);
+			if (newRefTypeJvm != null)
+				msgs = ((InternalEObject)newRefTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM, null, msgs);
+			msgs = basicSetRefTypeJvm(newRefTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM, newRefTypeJvm, newRefTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM:
+				return basicSetRefTypeJvm(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF:
+				if (resolve) return getRef();
+				return basicGetRef();
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM:
+				if (resolve) return getRefTypeJvm();
+				return basicGetRefTypeJvm();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF:
+				setRef((DataInterchangePackage)newValue);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM:
+				setRefTypeJvm((JvmTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF:
+				setRef((DataInterchangePackage)null);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM:
+				setRefTypeJvm((JvmTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF:
+				return ref != null;
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM:
+				return refTypeJvm != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PerspectiveDataInterchangeImpl
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDialogImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDialogImpl.java
index b01b690..320e52c 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDialogImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDialogImpl.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.perspective.impl;
@@ -34,11 +34,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveDialogImpl#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveDialogImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslFactoryImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslFactoryImpl.java
index 757d62a..92ffd2c 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslFactoryImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslFactoryImpl.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.perspective.impl;
@@ -81,12 +81,17 @@
 			case PerspectiveDslPackage.PERSPECTIVE_SELECTION: return createPerspectiveSelection();
 			case PerspectiveDslPackage.PERSPECTIVE_TABLE: return createPerspectiveTable();
 			case PerspectiveDslPackage.PERSPECTIVE_GRID: return createPerspectiveGrid();
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN: return createPerspectiveBean();
 			case PerspectiveDslPackage.PERSPECTIVE_CHART: return createPerspectiveChart();
 			case PerspectiveDslPackage.PERSPECTIVE_REPORT: return createPerspectiveReport();
 			case PerspectiveDslPackage.PERSPECTIVE_ORGANIZATION: return createPerspectiveOrganization();
 			case PerspectiveDslPackage.PERSPECTIVE_TOPOLOGY: return createPerspectiveTopology();
 			case PerspectiveDslPackage.PERSPECTIVE_DIALOG: return createPerspectiveDialog();
 			case PerspectiveDslPackage.PERSPECTIVE_BPMN: return createPerspectiveBPMN();
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN: return createPerspectiveKanban();
+			case PerspectiveDslPackage.PERSPECTIVE_WELCOME: return createPerspectiveWelcome();
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH: return createPerspectiveSearch();
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE: return createPerspectiveDataInterchange();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -251,6 +256,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public PerspectiveBean createPerspectiveBean() {
+		PerspectiveBeanImpl perspectiveBean = new PerspectiveBeanImpl();
+		return perspectiveBean;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public PerspectiveChart createPerspectiveChart() {
 		PerspectiveChartImpl perspectiveChart = new PerspectiveChartImpl();
 		return perspectiveChart;
@@ -311,6 +326,46 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public PerspectiveKanban createPerspectiveKanban() {
+		PerspectiveKanbanImpl perspectiveKanban = new PerspectiveKanbanImpl();
+		return perspectiveKanban;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PerspectiveWelcome createPerspectiveWelcome() {
+		PerspectiveWelcomeImpl perspectiveWelcome = new PerspectiveWelcomeImpl();
+		return perspectiveWelcome;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PerspectiveSearch createPerspectiveSearch() {
+		PerspectiveSearchImpl perspectiveSearch = new PerspectiveSearchImpl();
+		return perspectiveSearch;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PerspectiveDataInterchange createPerspectiveDataInterchange() {
+		PerspectiveDataInterchangeImpl perspectiveDataInterchange = new PerspectiveDataInterchangeImpl();
+		return perspectiveDataInterchange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public SashOrientation createSashOrientationFromString(EDataType eDataType, String initialValue) {
 		SashOrientation result = SashOrientation.get(initialValue);
 		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.java
index 8b19b8a..26bca70 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.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.perspective.impl;
@@ -27,12 +27,16 @@
 
 import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
 
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
 import org.eclipse.osbp.xtext.action.ActionDSLPackage;
 
 import org.eclipse.osbp.xtext.blip.BlipDSLPackage;
 
 import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
 
+import org.eclipse.osbp.xtext.datainterchange.DataDSLPackage;
+
 import org.eclipse.osbp.xtext.dialogdsl.DialogDSLPackage;
 
 import org.eclipse.osbp.xtext.organizationdsl.OrganizationDSLPackage;
@@ -40,12 +44,15 @@
 import org.eclipse.osbp.xtext.perspective.Perspective;
 import org.eclipse.osbp.xtext.perspective.PerspectiveBPMN;
 import org.eclipse.osbp.xtext.perspective.PerspectiveBase;
+import org.eclipse.osbp.xtext.perspective.PerspectiveBean;
 import org.eclipse.osbp.xtext.perspective.PerspectiveChart;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDialog;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslFactory;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
 import org.eclipse.osbp.xtext.perspective.PerspectiveElement;
 import org.eclipse.osbp.xtext.perspective.PerspectiveGrid;
+import org.eclipse.osbp.xtext.perspective.PerspectiveKanban;
 import org.eclipse.osbp.xtext.perspective.PerspectiveLazyResolver;
 import org.eclipse.osbp.xtext.perspective.PerspectiveModel;
 import org.eclipse.osbp.xtext.perspective.PerspectiveOrganization;
@@ -54,10 +61,12 @@
 import org.eclipse.osbp.xtext.perspective.PerspectivePartStack;
 import org.eclipse.osbp.xtext.perspective.PerspectiveReport;
 import org.eclipse.osbp.xtext.perspective.PerspectiveSashContainer;
+import org.eclipse.osbp.xtext.perspective.PerspectiveSearch;
 import org.eclipse.osbp.xtext.perspective.PerspectiveSelection;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTable;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTopology;
 import org.eclipse.osbp.xtext.perspective.PerspectiveView;
+import org.eclipse.osbp.xtext.perspective.PerspectiveWelcome;
 import org.eclipse.osbp.xtext.perspective.SashOrientation;
 
 import org.eclipse.osbp.xtext.reportdsl.ReportDSLPackage;
@@ -68,6 +77,8 @@
 
 import org.eclipse.xtext.common.types.TypesPackage;
 
+import org.eclipse.xtext.xtype.XtypePackage;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Package</b>.
@@ -171,6 +182,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass perspectiveBeanEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EClass perspectiveChartEClass = null;
 
 	/**
@@ -213,6 +231,34 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass perspectiveKanbanEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass perspectiveWelcomeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass perspectiveSearchEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass perspectiveDataInterchangeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EEnum sashOrientationEEnum = null;
 
 	/**
@@ -270,11 +316,11 @@
 
 		// Initialize simple dependencies
 		TableDSLPackage.eINSTANCE.eClass();
-		DialogDSLPackage.eINSTANCE.eClass();
+		ChartDSLPackage.eINSTANCE.eClass();
 		ReportDSLPackage.eINSTANCE.eClass();
 		OrganizationDSLPackage.eINSTANCE.eClass();
-		ChartDSLPackage.eINSTANCE.eClass();
 		TopologyDSLPackage.eINSTANCE.eClass();
+		DialogDSLPackage.eINSTANCE.eClass();
 
 		// Create package meta-data objects
 		thePerspectiveDslPackage.createPackageContents();
@@ -305,7 +351,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getPerspectiveModel_Packages() {
+	public EReference getPerspectiveModel_ImportSection() {
 		return (EReference)perspectiveModelEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -314,6 +360,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getPerspectiveModel_Packages() {
+		return (EReference)perspectiveModelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getPerspectiveLazyResolver() {
 		return perspectiveLazyResolverEClass;
 	}
@@ -539,7 +594,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getPerspectivePart_Description() {
+	public EAttribute getPerspectivePart_IconURI() {
 		return (EAttribute)perspectivePartEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -548,26 +603,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getPerspectivePart_DescriptionValue() {
-		return (EAttribute)perspectivePartEClass.getEStructuralFeatures().get(1);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EAttribute getPerspectivePart_IconURI() {
-		return (EAttribute)perspectivePartEClass.getEStructuralFeatures().get(2);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public EReference getPerspectivePart_View() {
-		return (EReference)perspectivePartEClass.getEStructuralFeatures().get(3);
+		return (EReference)perspectivePartEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -576,7 +613,7 @@
 	 * @generated
 	 */
 	public EAttribute getPerspectivePart_IsClosable() {
-		return (EAttribute)perspectivePartEClass.getEStructuralFeatures().get(4);
+		return (EAttribute)perspectivePartEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -692,6 +729,33 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getPerspectiveBean() {
+		return perspectiveBeanEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerspectiveBean_Ref() {
+		return (EReference)perspectiveBeanEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerspectiveBean_RefTypeJvm() {
+		return (EReference)perspectiveBeanEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getPerspectiveChart() {
 		return perspectiveChartEClass;
 	}
@@ -827,6 +891,114 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getPerspectiveKanban() {
+		return perspectiveKanbanEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerspectiveKanban_DtoRef() {
+		return (EReference)perspectiveKanbanEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerspectiveKanban_CardRef() {
+		return (EReference)perspectiveKanbanEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerspectiveKanban_DialogRef() {
+		return (EReference)perspectiveKanbanEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPerspectiveWelcome() {
+		return perspectiveWelcomeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPerspectiveSearch() {
+		return perspectiveSearchEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerspectiveSearch_DtoRef() {
+		return (EReference)perspectiveSearchEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPerspectiveSearch_Depth() {
+		return (EAttribute)perspectiveSearchEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPerspectiveSearch_FilterCols() {
+		return (EAttribute)perspectiveSearchEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPerspectiveDataInterchange() {
+		return perspectiveDataInterchangeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerspectiveDataInterchange_Ref() {
+		return (EReference)perspectiveDataInterchangeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPerspectiveDataInterchange_RefTypeJvm() {
+		return (EReference)perspectiveDataInterchangeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EEnum getSashOrientation() {
 		return sashOrientationEEnum;
 	}
@@ -869,6 +1041,7 @@
 
 		// Create classes and their features
 		perspectiveModelEClass = createEClass(PERSPECTIVE_MODEL);
+		createEReference(perspectiveModelEClass, PERSPECTIVE_MODEL__IMPORT_SECTION);
 		createEReference(perspectiveModelEClass, PERSPECTIVE_MODEL__PACKAGES);
 
 		perspectiveLazyResolverEClass = createEClass(PERSPECTIVE_LAZY_RESOLVER);
@@ -902,8 +1075,6 @@
 		createEReference(perspectiveSashContainerEClass, PERSPECTIVE_SASH_CONTAINER__SELECTED_ELEMENT);
 
 		perspectivePartEClass = createEClass(PERSPECTIVE_PART);
-		createEAttribute(perspectivePartEClass, PERSPECTIVE_PART__DESCRIPTION);
-		createEAttribute(perspectivePartEClass, PERSPECTIVE_PART__DESCRIPTION_VALUE);
 		createEAttribute(perspectivePartEClass, PERSPECTIVE_PART__ICON_URI);
 		createEReference(perspectivePartEClass, PERSPECTIVE_PART__VIEW);
 		createEAttribute(perspectivePartEClass, PERSPECTIVE_PART__IS_CLOSABLE);
@@ -925,6 +1096,10 @@
 		createEReference(perspectiveGridEClass, PERSPECTIVE_GRID__REF);
 		createEReference(perspectiveGridEClass, PERSPECTIVE_GRID__REF_TYPE_JVM);
 
+		perspectiveBeanEClass = createEClass(PERSPECTIVE_BEAN);
+		createEReference(perspectiveBeanEClass, PERSPECTIVE_BEAN__REF);
+		createEReference(perspectiveBeanEClass, PERSPECTIVE_BEAN__REF_TYPE_JVM);
+
 		perspectiveChartEClass = createEClass(PERSPECTIVE_CHART);
 		createEReference(perspectiveChartEClass, PERSPECTIVE_CHART__REF);
 		createEReference(perspectiveChartEClass, PERSPECTIVE_CHART__REF_TYPE_JVM);
@@ -946,6 +1121,22 @@
 
 		perspectiveBPMNEClass = createEClass(PERSPECTIVE_BPMN);
 
+		perspectiveKanbanEClass = createEClass(PERSPECTIVE_KANBAN);
+		createEReference(perspectiveKanbanEClass, PERSPECTIVE_KANBAN__DTO_REF);
+		createEReference(perspectiveKanbanEClass, PERSPECTIVE_KANBAN__CARD_REF);
+		createEReference(perspectiveKanbanEClass, PERSPECTIVE_KANBAN__DIALOG_REF);
+
+		perspectiveWelcomeEClass = createEClass(PERSPECTIVE_WELCOME);
+
+		perspectiveSearchEClass = createEClass(PERSPECTIVE_SEARCH);
+		createEReference(perspectiveSearchEClass, PERSPECTIVE_SEARCH__DTO_REF);
+		createEAttribute(perspectiveSearchEClass, PERSPECTIVE_SEARCH__DEPTH);
+		createEAttribute(perspectiveSearchEClass, PERSPECTIVE_SEARCH__FILTER_COLS);
+
+		perspectiveDataInterchangeEClass = createEClass(PERSPECTIVE_DATA_INTERCHANGE);
+		createEReference(perspectiveDataInterchangeEClass, PERSPECTIVE_DATA_INTERCHANGE__REF);
+		createEReference(perspectiveDataInterchangeEClass, PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM);
+
 		// Create enums
 		sashOrientationEEnum = createEEnum(SASH_ORIENTATION);
 
@@ -977,6 +1168,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);
 		BlipDSLPackage theBlipDSLPackage = (BlipDSLPackage)EPackage.Registry.INSTANCE.getEPackage(BlipDSLPackage.eNS_URI);
@@ -988,6 +1180,8 @@
 		OrganizationDSLPackage theOrganizationDSLPackage = (OrganizationDSLPackage)EPackage.Registry.INSTANCE.getEPackage(OrganizationDSLPackage.eNS_URI);
 		TopologyDSLPackage theTopologyDSLPackage = (TopologyDSLPackage)EPackage.Registry.INSTANCE.getEPackage(TopologyDSLPackage.eNS_URI);
 		DialogDSLPackage theDialogDSLPackage = (DialogDSLPackage)EPackage.Registry.INSTANCE.getEPackage(DialogDSLPackage.eNS_URI);
+		OSBPDtoPackage theOSBPDtoPackage = (OSBPDtoPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPDtoPackage.eNS_URI);
+		DataDSLPackage theDataDSLPackage = (DataDSLPackage)EPackage.Registry.INSTANCE.getEPackage(DataDSLPackage.eNS_URI);
 
 		// Create type parameters
 
@@ -1005,15 +1199,21 @@
 		perspectiveSelectionEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveTableEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveGridEClass.getESuperTypes().add(this.getPerspectiveView());
+		perspectiveBeanEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveChartEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveReportEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveOrganizationEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveTopologyEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveDialogEClass.getESuperTypes().add(this.getPerspectiveView());
 		perspectiveBPMNEClass.getESuperTypes().add(this.getPerspectiveView());
+		perspectiveKanbanEClass.getESuperTypes().add(this.getPerspectiveView());
+		perspectiveWelcomeEClass.getESuperTypes().add(this.getPerspectiveView());
+		perspectiveSearchEClass.getESuperTypes().add(this.getPerspectiveView());
+		perspectiveDataInterchangeEClass.getESuperTypes().add(this.getPerspectiveView());
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(perspectiveModelEClass, PerspectiveModel.class, "PerspectiveModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPerspectiveModel_ImportSection(), theXtypePackage.getXImportSection(), null, "importSection", null, 0, 1, PerspectiveModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspectiveModel_Packages(), this.getPerspectivePackage(), null, "packages", null, 0, -1, PerspectiveModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveLazyResolverEClass, PerspectiveLazyResolver.class, "PerspectiveLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1035,7 +1235,7 @@
 		initEReference(getPerspective_Process(), theBlipDSLPackage.getBlip(), null, "process", null, 0, 1, Perspective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspective_UserTask(), theBlipDSLPackage.getBlipUserTask(), null, "userTask", null, 0, 1, Perspective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspective_Toolbar(), theActionDSLPackage.getActionToolbar(), null, "toolbar", null, 0, 1, Perspective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getPerspective_ToolbarTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "toolbarTypeJvm", null, 0, 1, Perspective.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspective_ToolbarTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "toolbarTypeJvm", null, 0, 1, Perspective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspective_Elements(), this.getPerspectiveElement(), null, "elements", null, 0, -1, Perspective.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveElementEClass, PerspectiveElement.class, "PerspectiveElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1049,8 +1249,6 @@
 		initEReference(getPerspectiveSashContainer_SelectedElement(), this.getPerspectiveElement(), null, "selectedElement", null, 0, 1, PerspectiveSashContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectivePartEClass, PerspectivePart.class, "PerspectivePart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getPerspectivePart_Description(), theEcorePackage.getEBoolean(), "description", null, 0, 1, PerspectivePart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getPerspectivePart_DescriptionValue(), theEcorePackage.getEString(), "descriptionValue", null, 0, 1, PerspectivePart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getPerspectivePart_IconURI(), theEcorePackage.getEString(), "iconURI", null, 0, 1, PerspectivePart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getPerspectivePart_View(), this.getPerspectiveView(), null, "view", null, 0, 1, PerspectivePart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getPerspectivePart_IsClosable(), theEcorePackage.getEBoolean(), "isClosable", null, 0, 1, PerspectivePart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -1062,37 +1260,57 @@
 
 		initEClass(perspectiveSelectionEClass, PerspectiveSelection.class, "PerspectiveSelection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveSelection_Ref(), theTableDSLPackage.getTable(), null, "ref", null, 0, 1, PerspectiveSelection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getPerspectiveSelection_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveSelection.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveSelection_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveSelection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveTableEClass, PerspectiveTable.class, "PerspectiveTable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveTable_Ref(), theTableDSLPackage.getTable(), null, "ref", null, 0, 1, PerspectiveTable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getPerspectiveTable_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveTable.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveTable_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveTable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveGridEClass, PerspectiveGrid.class, "PerspectiveGrid", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveGrid_Ref(), theTableDSLPackage.getTable(), null, "ref", null, 0, 1, PerspectiveGrid.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getPerspectiveGrid_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveGrid.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveGrid_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveGrid.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(perspectiveBeanEClass, PerspectiveBean.class, "PerspectiveBean", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPerspectiveBean_Ref(), theTableDSLPackage.getTable(), null, "ref", null, 0, 1, PerspectiveBean.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveBean_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveBean.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveChartEClass, PerspectiveChart.class, "PerspectiveChart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveChart_Ref(), theChartDSLPackage.getChart(), null, "ref", null, 0, 1, PerspectiveChart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getPerspectiveChart_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveChart.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveChart_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveChart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveReportEClass, PerspectiveReport.class, "PerspectiveReport", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveReport_Ref(), theReportDSLPackage.getReport(), null, "ref", null, 0, 1, PerspectiveReport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getPerspectiveReport_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveReport.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveReport_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveReport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveOrganizationEClass, PerspectiveOrganization.class, "PerspectiveOrganization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveOrganization_Ref(), theOrganizationDSLPackage.getOrganization(), null, "ref", null, 0, 1, PerspectiveOrganization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveTopologyEClass, PerspectiveTopology.class, "PerspectiveTopology", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveTopology_Ref(), theTopologyDSLPackage.getTopology(), null, "ref", null, 0, 1, PerspectiveTopology.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getPerspectiveTopology_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveTopology.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveTopology_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveTopology.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveDialogEClass, PerspectiveDialog.class, "PerspectiveDialog", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectiveDialog_Ref(), theDialogDSLPackage.getDialog(), null, "ref", null, 0, 1, PerspectiveDialog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getPerspectiveDialog_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveDialog.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveDialog_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveDialog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveBPMNEClass, PerspectiveBPMN.class, "PerspectiveBPMN", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
+		initEClass(perspectiveKanbanEClass, PerspectiveKanban.class, "PerspectiveKanban", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPerspectiveKanban_DtoRef(), theOSBPDtoPackage.getLDto(), null, "dtoRef", null, 0, 1, PerspectiveKanban.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveKanban_CardRef(), theDialogDSLPackage.getDialog(), null, "cardRef", null, 0, 1, PerspectiveKanban.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveKanban_DialogRef(), theDialogDSLPackage.getDialog(), null, "dialogRef", null, 0, 1, PerspectiveKanban.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(perspectiveWelcomeEClass, PerspectiveWelcome.class, "PerspectiveWelcome", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(perspectiveSearchEClass, PerspectiveSearch.class, "PerspectiveSearch", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPerspectiveSearch_DtoRef(), theOSBPDtoPackage.getLDto(), null, "dtoRef", null, 0, 1, PerspectiveSearch.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPerspectiveSearch_Depth(), theEcorePackage.getEInt(), "depth", null, 0, 1, PerspectiveSearch.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPerspectiveSearch_FilterCols(), theEcorePackage.getEInt(), "filterCols", null, 0, 1, PerspectiveSearch.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(perspectiveDataInterchangeEClass, PerspectiveDataInterchange.class, "PerspectiveDataInterchange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPerspectiveDataInterchange_Ref(), theDataDSLPackage.getDataInterchangePackage(), null, "ref", null, 0, 1, PerspectiveDataInterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectiveDataInterchange_RefTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "refTypeJvm", null, 0, 1, PerspectiveDataInterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		// Initialize enums and add enum literals
 		initEEnum(sashOrientationEEnum, SashOrientation.class, "SashOrientation");
 		addEEnumLiteral(sashOrientationEEnum, SashOrientation.HORIZONTAL);
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveElementImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveElementImpl.java
index e1df868..0d795b7 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveElementImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveElementImpl.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.perspective.impl;
@@ -37,13 +37,13 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveElementImpl#getElementId <em>Element Id</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveElementImpl#getAccessibilityPhrase <em>Accessibility Phrase</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveElementImpl#getContainerData <em>Container Data</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveElementImpl#getElements <em>Elements</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveGridImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveGridImpl.java
index 6b0bb32..0460e9d 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveGridImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveGridImpl.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.perspective.impl;
@@ -34,11 +34,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveGridImpl#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveGridImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveImpl.java
index 37e8a75..532c0ec 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveImpl.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.perspective.impl;
@@ -45,6 +45,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveImpl#isDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveImpl#getDescriptionValue <em>Description Value</em>}</li>
@@ -56,7 +57,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveImpl#getToolbarTypeJvm <em>Toolbar Type Jvm</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveImpl#getElements <em>Elements</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveKanbanImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveKanbanImpl.java
new file mode 100644
index 0000000..d5f6021
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveKanbanImpl.java
@@ -0,0 +1,290 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+import org.eclipse.osbp.xtext.dialogdsl.Dialog;
+
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+import org.eclipse.osbp.xtext.perspective.PerspectiveKanban;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Perspective Kanban</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveKanbanImpl#getDtoRef <em>Dto Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveKanbanImpl#getCardRef <em>Card Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveKanbanImpl#getDialogRef <em>Dialog Ref</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PerspectiveKanbanImpl extends PerspectiveLazyResolverImpl implements PerspectiveKanban {
+	/**
+	 * The cached value of the '{@link #getDtoRef() <em>Dto Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDtoRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDto dtoRef;
+
+	/**
+	 * The cached value of the '{@link #getCardRef() <em>Card Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCardRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected Dialog cardRef;
+
+	/**
+	 * The cached value of the '{@link #getDialogRef() <em>Dialog Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDialogRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected Dialog dialogRef;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveKanbanImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto getDtoRef() {
+		if (dtoRef != null && dtoRef.eIsProxy()) {
+			InternalEObject oldDtoRef = (InternalEObject)dtoRef;
+			dtoRef = (LDto)eResolveProxy(oldDtoRef);
+			if (dtoRef != oldDtoRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_KANBAN__DTO_REF, oldDtoRef, dtoRef));
+			}
+		}
+		return dtoRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto basicGetDtoRef() {
+		return dtoRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDtoRef(LDto newDtoRef) {
+		LDto oldDtoRef = dtoRef;
+		dtoRef = newDtoRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_KANBAN__DTO_REF, oldDtoRef, dtoRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Dialog getCardRef() {
+		if (cardRef != null && cardRef.eIsProxy()) {
+			InternalEObject oldCardRef = (InternalEObject)cardRef;
+			cardRef = (Dialog)eResolveProxy(oldCardRef);
+			if (cardRef != oldCardRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_KANBAN__CARD_REF, oldCardRef, cardRef));
+			}
+		}
+		return cardRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Dialog basicGetCardRef() {
+		return cardRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCardRef(Dialog newCardRef) {
+		Dialog oldCardRef = cardRef;
+		cardRef = newCardRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_KANBAN__CARD_REF, oldCardRef, cardRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Dialog getDialogRef() {
+		if (dialogRef != null && dialogRef.eIsProxy()) {
+			InternalEObject oldDialogRef = (InternalEObject)dialogRef;
+			dialogRef = (Dialog)eResolveProxy(oldDialogRef);
+			if (dialogRef != oldDialogRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_KANBAN__DIALOG_REF, oldDialogRef, dialogRef));
+			}
+		}
+		return dialogRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Dialog basicGetDialogRef() {
+		return dialogRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDialogRef(Dialog newDialogRef) {
+		Dialog oldDialogRef = dialogRef;
+		dialogRef = newDialogRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_KANBAN__DIALOG_REF, oldDialogRef, dialogRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__DTO_REF:
+				if (resolve) return getDtoRef();
+				return basicGetDtoRef();
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__CARD_REF:
+				if (resolve) return getCardRef();
+				return basicGetCardRef();
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__DIALOG_REF:
+				if (resolve) return getDialogRef();
+				return basicGetDialogRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__DTO_REF:
+				setDtoRef((LDto)newValue);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__CARD_REF:
+				setCardRef((Dialog)newValue);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__DIALOG_REF:
+				setDialogRef((Dialog)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__DTO_REF:
+				setDtoRef((LDto)null);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__CARD_REF:
+				setCardRef((Dialog)null);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__DIALOG_REF:
+				setDialogRef((Dialog)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__DTO_REF:
+				return dtoRef != null;
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__CARD_REF:
+				return cardRef != null;
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN__DIALOG_REF:
+				return dialogRef != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PerspectiveKanbanImpl
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveLazyResolverImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveLazyResolverImpl.java
index a55c86d..a0c5782 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveLazyResolverImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveLazyResolverImpl.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.perspective.impl;
@@ -23,10 +23,7 @@
 
 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.oxtype.resource.EcoreUtil3;
 
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
 import org.eclipse.osbp.xtext.perspective.PerspectiveLazyResolver;
@@ -35,8 +32,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Perspective 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.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveModelImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveModelImpl.java
index 6a13586..d009684 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveModelImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveModelImpl.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.perspective.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.perspective.PerspectiveModel;
 import org.eclipse.osbp.xtext.perspective.PerspectivePackage;
 
+import org.eclipse.xtext.xtype.XImportSection;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Perspective Model</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveModelImpl#getImportSection <em>Import Section</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveModelImpl#getPackages <em>Packages</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
 public class PerspectiveModelImpl extends MinimalEObjectImpl.Container implements PerspectiveModel {
 	/**
+	 * 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, PerspectiveDslPackage.PERSPECTIVE_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 - PerspectiveDslPackage.PERSPECTIVE_MODEL__IMPORT_SECTION, null, msgs);
+			if (newImportSection != null)
+				msgs = ((InternalEObject)newImportSection).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PerspectiveDslPackage.PERSPECTIVE_MODEL__IMPORT_SECTION, null, msgs);
+			msgs = basicSetImportSection(newImportSection, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_MODEL__IMPORT_SECTION, newImportSection, newImportSection));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EList<PerspectivePackage> getPackages() {
 		if (packages == null) {
 			packages = new EObjectContainmentEList<PerspectivePackage>(PerspectivePackage.class, this, PerspectiveDslPackage.PERSPECTIVE_MODEL__PACKAGES);
@@ -94,6 +152,8 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_MODEL__IMPORT_SECTION:
+				return basicSetImportSection(null, msgs);
 			case PerspectiveDslPackage.PERSPECTIVE_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 PerspectiveDslPackage.PERSPECTIVE_MODEL__IMPORT_SECTION:
+				return getImportSection();
 			case PerspectiveDslPackage.PERSPECTIVE_MODEL__PACKAGES:
 				return getPackages();
 		}
@@ -123,6 +185,9 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_MODEL__IMPORT_SECTION:
+				setImportSection((XImportSection)newValue);
+				return;
 			case PerspectiveDslPackage.PERSPECTIVE_MODEL__PACKAGES:
 				getPackages().clear();
 				getPackages().addAll((Collection<? extends PerspectivePackage>)newValue);
@@ -139,6 +204,9 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_MODEL__IMPORT_SECTION:
+				setImportSection((XImportSection)null);
+				return;
 			case PerspectiveDslPackage.PERSPECTIVE_MODEL__PACKAGES:
 				getPackages().clear();
 				return;
@@ -154,6 +222,8 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_MODEL__IMPORT_SECTION:
+				return importSection != null;
 			case PerspectiveDslPackage.PERSPECTIVE_MODEL__PACKAGES:
 				return packages != null && !packages.isEmpty();
 		}
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveOrganizationImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveOrganizationImpl.java
index 4e9d779..c0bd443 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveOrganizationImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveOrganizationImpl.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.perspective.impl;
@@ -31,10 +31,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveOrganizationImpl#getRef <em>Ref</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePackageImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePackageImpl.java
index 187d154..031c2a6 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePackageImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePackageImpl.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.perspective.impl;
@@ -37,10 +37,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectivePackageImpl#getPerspectives <em>Perspectives</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartImpl.java
index a778d52..28a3c4c 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartImpl.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.perspective.impl;
@@ -31,59 +31,17 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectivePartImpl#isDescription <em>Description</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectivePartImpl#getDescriptionValue <em>Description Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectivePartImpl#getIconURI <em>Icon URI</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectivePartImpl#getView <em>View</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectivePartImpl#isIsClosable <em>Is Closable</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
 public class PerspectivePartImpl extends PerspectiveElementImpl implements PerspectivePart {
 	/**
-	 * The default value of the '{@link #isDescription() <em>Description</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #isDescription()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final boolean DESCRIPTION_EDEFAULT = false;
-
-	/**
-	 * The cached value of the '{@link #isDescription() <em>Description</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #isDescription()
-	 * @generated
-	 * @ordered
-	 */
-	protected boolean description = DESCRIPTION_EDEFAULT;
-
-	/**
-	 * The default value of the '{@link #getDescriptionValue() <em>Description Value</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getDescriptionValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String DESCRIPTION_VALUE_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getDescriptionValue() <em>Description Value</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getDescriptionValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected String descriptionValue = DESCRIPTION_VALUE_EDEFAULT;
-
-	/**
 	 * The default value of the '{@link #getIconURI() <em>Icon URI</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -157,48 +115,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean isDescription() {
-		return description;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setDescription(boolean newDescription) {
-		boolean oldDescription = description;
-		description = newDescription;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION, oldDescription, description));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getDescriptionValue() {
-		return descriptionValue;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setDescriptionValue(String newDescriptionValue) {
-		String oldDescriptionValue = descriptionValue;
-		descriptionValue = newDescriptionValue;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION_VALUE, oldDescriptionValue, descriptionValue));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public String getIconURI() {
 		return iconURI;
 	}
@@ -301,10 +217,6 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION:
-				return isDescription();
-			case PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION_VALUE:
-				return getDescriptionValue();
 			case PerspectiveDslPackage.PERSPECTIVE_PART__ICON_URI:
 				return getIconURI();
 			case PerspectiveDslPackage.PERSPECTIVE_PART__VIEW:
@@ -323,12 +235,6 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION:
-				setDescription((Boolean)newValue);
-				return;
-			case PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION_VALUE:
-				setDescriptionValue((String)newValue);
-				return;
 			case PerspectiveDslPackage.PERSPECTIVE_PART__ICON_URI:
 				setIconURI((String)newValue);
 				return;
@@ -350,12 +256,6 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION:
-				setDescription(DESCRIPTION_EDEFAULT);
-				return;
-			case PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION_VALUE:
-				setDescriptionValue(DESCRIPTION_VALUE_EDEFAULT);
-				return;
 			case PerspectiveDslPackage.PERSPECTIVE_PART__ICON_URI:
 				setIconURI(ICON_URI_EDEFAULT);
 				return;
@@ -377,10 +277,6 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION:
-				return description != DESCRIPTION_EDEFAULT;
-			case PerspectiveDslPackage.PERSPECTIVE_PART__DESCRIPTION_VALUE:
-				return DESCRIPTION_VALUE_EDEFAULT == null ? descriptionValue != null : !DESCRIPTION_VALUE_EDEFAULT.equals(descriptionValue);
 			case PerspectiveDslPackage.PERSPECTIVE_PART__ICON_URI:
 				return ICON_URI_EDEFAULT == null ? iconURI != null : !ICON_URI_EDEFAULT.equals(iconURI);
 			case PerspectiveDslPackage.PERSPECTIVE_PART__VIEW:
@@ -401,11 +297,7 @@
 		if (eIsProxy()) return super.toString();
 
 		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (description: ");
-		result.append(description);
-		result.append(", descriptionValue: ");
-		result.append(descriptionValue);
-		result.append(", iconURI: ");
+		result.append(" (iconURI: ");
 		result.append(iconURI);
 		result.append(", isClosable: ");
 		result.append(isClosable);
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartStackImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartStackImpl.java
index f529aed..9e57d10 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartStackImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartStackImpl.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.perspective.impl;
@@ -30,10 +30,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectivePartStackImpl#getSelectedElement <em>Selected Element</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveReportImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveReportImpl.java
index 91f6f2b..d32e76f 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveReportImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveReportImpl.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.perspective.impl;
@@ -34,11 +34,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveReportImpl#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveReportImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSashContainerImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSashContainerImpl.java
index d61c2ae..3b1eac4 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSashContainerImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSashContainerImpl.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.perspective.impl;
@@ -31,11 +31,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveSashContainerImpl#getOrientation <em>Orientation</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveSashContainerImpl#getSelectedElement <em>Selected Element</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSearchImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSearchImpl.java
new file mode 100644
index 0000000..980e88d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSearchImpl.java
@@ -0,0 +1,290 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+import org.eclipse.osbp.xtext.perspective.PerspectiveSearch;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Perspective Search</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveSearchImpl#getDtoRef <em>Dto Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveSearchImpl#getDepth <em>Depth</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveSearchImpl#getFilterCols <em>Filter Cols</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PerspectiveSearchImpl extends PerspectiveLazyResolverImpl implements PerspectiveSearch {
+	/**
+	 * The cached value of the '{@link #getDtoRef() <em>Dto Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDtoRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDto dtoRef;
+
+	/**
+	 * The default value of the '{@link #getDepth() <em>Depth</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepth()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DEPTH_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDepth() <em>Depth</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepth()
+	 * @generated
+	 * @ordered
+	 */
+	protected int depth = DEPTH_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getFilterCols() <em>Filter Cols</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilterCols()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int FILTER_COLS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getFilterCols() <em>Filter Cols</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilterCols()
+	 * @generated
+	 * @ordered
+	 */
+	protected int filterCols = FILTER_COLS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveSearchImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PerspectiveDslPackage.Literals.PERSPECTIVE_SEARCH;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto getDtoRef() {
+		if (dtoRef != null && dtoRef.eIsProxy()) {
+			InternalEObject oldDtoRef = (InternalEObject)dtoRef;
+			dtoRef = (LDto)eResolveProxy(oldDtoRef);
+			if (dtoRef != oldDtoRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_SEARCH__DTO_REF, oldDtoRef, dtoRef));
+			}
+		}
+		return dtoRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto basicGetDtoRef() {
+		return dtoRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDtoRef(LDto newDtoRef) {
+		LDto oldDtoRef = dtoRef;
+		dtoRef = newDtoRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_SEARCH__DTO_REF, oldDtoRef, dtoRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getDepth() {
+		return depth;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDepth(int newDepth) {
+		int oldDepth = depth;
+		depth = newDepth;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_SEARCH__DEPTH, oldDepth, depth));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getFilterCols() {
+		return filterCols;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFilterCols(int newFilterCols) {
+		int oldFilterCols = filterCols;
+		filterCols = newFilterCols;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_SEARCH__FILTER_COLS, oldFilterCols, filterCols));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__DTO_REF:
+				if (resolve) return getDtoRef();
+				return basicGetDtoRef();
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__DEPTH:
+				return getDepth();
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__FILTER_COLS:
+				return getFilterCols();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__DTO_REF:
+				setDtoRef((LDto)newValue);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__DEPTH:
+				setDepth((Integer)newValue);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__FILTER_COLS:
+				setFilterCols((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__DTO_REF:
+				setDtoRef((LDto)null);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__DEPTH:
+				setDepth(DEPTH_EDEFAULT);
+				return;
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__FILTER_COLS:
+				setFilterCols(FILTER_COLS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__DTO_REF:
+				return dtoRef != null;
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__DEPTH:
+				return depth != DEPTH_EDEFAULT;
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH__FILTER_COLS:
+				return filterCols != FILTER_COLS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (depth: ");
+		result.append(depth);
+		result.append(", filterCols: ");
+		result.append(filterCols);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PerspectiveSearchImpl
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSelectionImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSelectionImpl.java
index f67e6f0..d4be362 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSelectionImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveSelectionImpl.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.perspective.impl;
@@ -34,11 +34,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveSelectionImpl#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveSelectionImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTableImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTableImpl.java
index 6e932bb..9781b0d 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTableImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTableImpl.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.perspective.impl;
@@ -34,11 +34,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveTableImpl#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveTableImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTopologyImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTopologyImpl.java
index 838b794..57450aa 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTopologyImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveTopologyImpl.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.perspective.impl;
@@ -34,11 +34,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveTopologyImpl#getRef <em>Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectiveTopologyImpl#getRefTypeJvm <em>Ref Type Jvm</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveWelcomeImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveWelcomeImpl.java
new file mode 100644
index 0000000..85ebdbe
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveWelcomeImpl.java
@@ -0,0 +1,48 @@
+/**
+ * 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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors{  
+ *  		Joerg Riegel - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.perspective.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+import org.eclipse.osbp.xtext.perspective.PerspectiveWelcome;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Perspective Welcome</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PerspectiveWelcomeImpl extends PerspectiveLazyResolverImpl implements PerspectiveWelcome {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PerspectiveWelcomeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return PerspectiveDslPackage.Literals.PERSPECTIVE_WELCOME;
+	}
+
+} //PerspectiveWelcomeImpl
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslAdapterFactory.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslAdapterFactory.java
index e872e9e..f27e05e 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslAdapterFactory.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslAdapterFactory.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.perspective.util;
@@ -134,6 +134,10 @@
 				return createPerspectiveGridAdapter();
 			}
 			@Override
+			public Adapter casePerspectiveBean(PerspectiveBean object) {
+				return createPerspectiveBeanAdapter();
+			}
+			@Override
 			public Adapter casePerspectiveChart(PerspectiveChart object) {
 				return createPerspectiveChartAdapter();
 			}
@@ -158,6 +162,22 @@
 				return createPerspectiveBPMNAdapter();
 			}
 			@Override
+			public Adapter casePerspectiveKanban(PerspectiveKanban object) {
+				return createPerspectiveKanbanAdapter();
+			}
+			@Override
+			public Adapter casePerspectiveWelcome(PerspectiveWelcome object) {
+				return createPerspectiveWelcomeAdapter();
+			}
+			@Override
+			public Adapter casePerspectiveSearch(PerspectiveSearch object) {
+				return createPerspectiveSearchAdapter();
+			}
+			@Override
+			public Adapter casePerspectiveDataInterchange(PerspectiveDataInterchange object) {
+				return createPerspectiveDataInterchangeAdapter();
+			}
+			@Override
 			public Adapter caseLLazyResolver(LLazyResolver object) {
 				return createLLazyResolverAdapter();
 			}
@@ -368,6 +388,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveBean <em>Perspective Bean</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveBean
+	 * @generated
+	 */
+	public Adapter createPerspectiveBeanAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveChart <em>Perspective Chart</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
@@ -452,6 +486,62 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveKanban <em>Perspective Kanban</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveKanban
+	 * @generated
+	 */
+	public Adapter createPerspectiveKanbanAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveWelcome <em>Perspective Welcome</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveWelcome
+	 * @generated
+	 */
+	public Adapter createPerspectiveWelcomeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveSearch <em>Perspective Search</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveSearch
+	 * @generated
+	 */
+	public Adapter createPerspectiveSearchAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange <em>Perspective Data Interchange</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange
+	 * @generated
+	 */
+	public Adapter createPerspectiveDataInterchangeAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver <em>LLazy Resolver</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslSwitch.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslSwitch.java
index a5cbd74..0af7974 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslSwitch.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/util/PerspectiveDslSwitch.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.perspective.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
 	 */
@@ -177,6 +177,14 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN: {
+				PerspectiveBean perspectiveBean = (PerspectiveBean)theEObject;
+				T result = casePerspectiveBean(perspectiveBean);
+				if (result == null) result = casePerspectiveView(perspectiveBean);
+				if (result == null) result = casePerspectiveLazyResolver(perspectiveBean);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case PerspectiveDslPackage.PERSPECTIVE_CHART: {
 				PerspectiveChart perspectiveChart = (PerspectiveChart)theEObject;
 				T result = casePerspectiveChart(perspectiveChart);
@@ -225,6 +233,38 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN: {
+				PerspectiveKanban perspectiveKanban = (PerspectiveKanban)theEObject;
+				T result = casePerspectiveKanban(perspectiveKanban);
+				if (result == null) result = casePerspectiveView(perspectiveKanban);
+				if (result == null) result = casePerspectiveLazyResolver(perspectiveKanban);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case PerspectiveDslPackage.PERSPECTIVE_WELCOME: {
+				PerspectiveWelcome perspectiveWelcome = (PerspectiveWelcome)theEObject;
+				T result = casePerspectiveWelcome(perspectiveWelcome);
+				if (result == null) result = casePerspectiveView(perspectiveWelcome);
+				if (result == null) result = casePerspectiveLazyResolver(perspectiveWelcome);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH: {
+				PerspectiveSearch perspectiveSearch = (PerspectiveSearch)theEObject;
+				T result = casePerspectiveSearch(perspectiveSearch);
+				if (result == null) result = casePerspectiveView(perspectiveSearch);
+				if (result == null) result = casePerspectiveLazyResolver(perspectiveSearch);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE: {
+				PerspectiveDataInterchange perspectiveDataInterchange = (PerspectiveDataInterchange)theEObject;
+				T result = casePerspectiveDataInterchange(perspectiveDataInterchange);
+				if (result == null) result = casePerspectiveView(perspectiveDataInterchange);
+				if (result == null) result = casePerspectiveLazyResolver(perspectiveDataInterchange);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -425,6 +465,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Perspective Bean</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Perspective Bean</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePerspectiveBean(PerspectiveBean object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Perspective Chart</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
@@ -515,6 +570,66 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Perspective Kanban</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Perspective Kanban</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePerspectiveKanban(PerspectiveKanban object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Perspective Welcome</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Perspective Welcome</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePerspectiveWelcome(PerspectiveWelcome object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Perspective Search</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Perspective Search</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePerspectiveSearch(PerspectiveSearch object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Perspective Data Interchange</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Perspective Data Interchange</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePerspectiveDataInterchange(PerspectiveDataInterchange object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>LLazy Resolver</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore b/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore
index ab6abcb..554e41f 100644
--- a/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore
+++ b/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore
@@ -2,6 +2,9 @@
 @GenModel(modelName="PerspectiveDsl")
 @GenModel(prefix="PerspectiveDsl")
 @GenModel(updateClasspath="false")
+// 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 
@@ -17,23 +20,27 @@
 @Ecore(nsPrefix="perspectivedsl")
 @Ecore(rootPackage="perspectivedsl")
 package org.eclipse.osbp.xtext.perspective
-
+ 
 import org.eclipse.osbp.xtext.chart.Chart
 import org.eclipse.osbp.xtext.dialogdsl.Dialog
 import org.eclipse.osbp.xtext.organizationdsl.Organization
 import org.eclipse.osbp.xtext.reportdsl.Report
 import org.eclipse.osbp.xtext.table.Table
 import org.eclipse.osbp.xtext.topologydsl.Topology
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage
 import org.eclipse.osbp.xtext.action.ActionToolbar
+import org.eclipse.osbp.dsl.semantic.dto.LDto
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.emf.ecore.InternalEObject
 import org.eclipse.xtext.common.types.JvmTypeReference
-import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
+import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3
 import org.eclipse.osbp.dsl.semantic.common.types.LPackage
 import org.eclipse.osbp.xtext.blip.Blip
 import org.eclipse.osbp.xtext.blip.BlipUserTask
+import org.eclipse.xtext.xtype.XImportSection
 
 class PerspectiveModel{
+	contains XImportSection importSection
 	contains PerspectivePackage[] packages
 }
 
@@ -61,7 +68,7 @@
 	refers Blip process
 	refers BlipUserTask userTask
 	refers ActionToolbar toolbar
-	contains resolving transient JvmTypeReference toolbarTypeJvm
+	contains resolving  JvmTypeReference toolbarTypeJvm
 	contains PerspectiveElement[] elements
 }
 
@@ -78,8 +85,6 @@
 }
 
 class PerspectivePart extends PerspectiveElement {
-	boolean description
-	String descriptionValue
 	String iconURI
 	contains PerspectiveView view
 	boolean isClosable
@@ -94,27 +99,32 @@
 
 class PerspectiveSelection extends PerspectiveView {
 	refers Table ref
-	contains resolving transient JvmTypeReference refTypeJvm
+	contains resolving  JvmTypeReference refTypeJvm
 }
 
 class PerspectiveTable extends PerspectiveView {
 	refers Table ref
-	contains resolving transient JvmTypeReference refTypeJvm
+	contains resolving  JvmTypeReference refTypeJvm
 }
 
 class PerspectiveGrid extends PerspectiveView {
 	refers Table ref
-	contains resolving transient JvmTypeReference refTypeJvm
+	contains resolving  JvmTypeReference refTypeJvm
+}
+
+class PerspectiveBean extends PerspectiveView {
+	refers Table ref
+	contains resolving  JvmTypeReference refTypeJvm
 }
 
 class PerspectiveChart extends PerspectiveView {
 	refers Chart ref
-	contains resolving transient  JvmTypeReference refTypeJvm
+	contains resolving   JvmTypeReference refTypeJvm
 }
 
 class PerspectiveReport extends PerspectiveView {
 	refers Report ref
-	contains resolving transient JvmTypeReference refTypeJvm
+	contains resolving  JvmTypeReference refTypeJvm
 }
 
 class PerspectiveOrganization extends PerspectiveView {
@@ -123,17 +133,37 @@
 
 class PerspectiveTopology extends PerspectiveView {
 	refers Topology ref
-	contains resolving transient JvmTypeReference refTypeJvm
+	contains resolving  JvmTypeReference refTypeJvm
 }
 
 class PerspectiveDialog extends PerspectiveView {
 	refers Dialog ref
-	contains resolving transient JvmTypeReference refTypeJvm
+	contains resolving  JvmTypeReference refTypeJvm
 }
 
 class PerspectiveBPMN extends PerspectiveView {
 }
 
+class PerspectiveKanban extends PerspectiveView {
+	refers LDto dtoRef
+	refers Dialog cardRef
+	refers Dialog dialogRef
+}
+
+class PerspectiveWelcome extends PerspectiveView {
+}
+
+class PerspectiveSearch extends PerspectiveView {
+	refers LDto dtoRef
+	int depth
+	int filterCols
+}
+
+class PerspectiveDataInterchange extends PerspectiveView {
+	refers DataInterchangePackage ref
+	contains resolving  JvmTypeReference refTypeJvm
+}
+
 enum SashOrientation {
 	HORIZONTAL as 'horizontal'
 	VERTICAL as 'vertical'
diff --git a/org.eclipse.osbp.xtext.perspective/pom.xml b/org.eclipse.osbp.xtext.perspective/pom.xml
index 55911da..26ad089 100644
--- a/org.eclipse.osbp.xtext.perspective/pom.xml
+++ b/org.eclipse.osbp.xtext.perspective/pom.xml
@@ -20,5 +20,13 @@
 	</parent>
 	<artifactId>org.eclipse.osbp.xtext.perspective</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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/AbstractPerspectiveDslRuntimeModule.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/AbstractPerspectiveDslRuntimeModule.java
index 99f131a..12230bd 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/AbstractPerspectiveDslRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/AbstractPerspectiveDslRuntimeModule.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.perspective;
 
-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.perspective.jvmmodel.PerspectiveDslJvmModelInferrer;
+import org.eclipse.osbp.xtext.perspective.parser.antlr.PerspectiveDslAntlrTokenFileProvider;
+import org.eclipse.osbp.xtext.perspective.parser.antlr.PerspectiveDslParser;
+import org.eclipse.osbp.xtext.perspective.parser.antlr.internal.InternalPerspectiveDslLexer;
+import org.eclipse.osbp.xtext.perspective.scoping.PerspectiveDslScopeProvider;
+import org.eclipse.osbp.xtext.perspective.serializer.PerspectiveDslSemanticSequencer;
+import org.eclipse.osbp.xtext.perspective.serializer.PerspectiveDslSyntacticSequencer;
+import org.eclipse.osbp.xtext.perspective.services.PerspectiveDslGrammarAccess;
+import org.eclipse.osbp.xtext.perspective.validation.PerspectiveDslValidator;
+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.perspective.PerspectiveDslRuntimeModule}
+ * Manual modifications go to {@link PerspectiveDslRuntimeModule}.
  */
- @SuppressWarnings("all")
-public abstract class AbstractPerspectiveDslRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractPerspectiveDslRuntimeModule extends DefaultXbaseWithAnnotationsRuntimeModule {
 
 	protected Properties properties = null;
 
@@ -44,309 +99,152 @@
 			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("perspective");
 	}
 	
-	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
-		return org.eclipse.osbp.xtext.perspective.serializer.PerspectiveDslSemanticSequencer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
-		return org.eclipse.osbp.xtext.perspective.serializer.PerspectiveDslSyntacticSequencer.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.perspective.parser.antlr.PerspectiveDslParser.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.perspective.parser.antlr.PerspectiveDslAntlrTokenFileProvider.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.perspective.parser.antlr.internal.InternalPerspectiveDslLexer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public com.google.inject.Provider<org.eclipse.osbp.xtext.perspective.parser.antlr.internal.InternalPerspectiveDslLexer> provideInternalPerspectiveDslLexer() {
-		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.perspective.parser.antlr.internal.InternalPerspectiveDslLexer.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.perspective.parser.antlr.internal.InternalPerspectiveDslLexer.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.perspective.validation.PerspectiveDslValidator> bindPerspectiveDslValidator() {
-		return org.eclipse.osbp.xtext.perspective.validation.PerspectiveDslValidator.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.perspective.formatting.PerspectiveDslFormatter.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.perspective.jvmmodel.PerspectiveDslJvmModelInferrer.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.perspective.services.PerspectiveDslGrammarAccess.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
+	public Class<? extends IGrammarAccess> bindIGrammarAccess() {
+		return PerspectiveDslGrammarAccess.class;
 	}
-
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISemanticSequencer> bindISemanticSequencer() {
+		return PerspectiveDslSemanticSequencer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISyntacticSequencer> bindISyntacticSequencer() {
+		return PerspectiveDslSyntacticSequencer.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 PerspectiveDslParser.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 PerspectiveDslAntlrTokenFileProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends Lexer> bindLexer() {
+		return InternalPerspectiveDslLexer.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 InternalPerspectiveDslLexer> provideInternalPerspectiveDslLexer() {
+		return LexerProvider.create(InternalPerspectiveDslLexer.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(InternalPerspectiveDslLexer.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 PerspectiveDslValidator> bindPerspectiveDslValidator() {
+		return PerspectiveDslValidator.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public Class<? extends IBatchScopeProvider> bindIBatchScopeProvider() {
+		return PerspectiveDslScopeProvider.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 PerspectiveDslJvmModelInferrer.class;
+	}
+	
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtextbin b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtextbin
new file mode 100644
index 0000000..e66d5e3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtextbin
Binary files differ
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetupGenerated.java
index f8a3e67..6c80302 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetupGenerated.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslStandaloneSetupGenerated.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.perspective;
 
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.xtext.ISetup;
-import org.eclipse.emf.ecore.resource.Resource;
+package org.eclipse.osbp.xtext.perspective;
 
 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 PerspectiveDslStandaloneSetupGenerated 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.perspective.PerspectiveDslRuntimeModule());
+		return Guice.createInjector(new PerspectiveDslRuntimeModule());
 	}
 	
 	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("perspective", resourceFactory);
-		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("perspective", serviceProvider);
+		IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class);
+		IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class);
 		
-
-
-
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("perspective", resourceFactory);
+		IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("perspective", serviceProvider);
 	}
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslAntlrTokenFileProvider.java
index e36ef28..75d4fa9 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslAntlrTokenFileProvider.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslAntlrTokenFileProvider.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.perspective.parser.antlr;
 
 import java.io.InputStream;
 import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
 
 public class PerspectiveDslAntlrTokenFileProvider implements IAntlrTokenFileProvider {
-	
+
+	@Override
 	public InputStream getAntlrTokenFile() {
 		ClassLoader classLoader = getClass().getClassLoader();
-    	return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens");
+		return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens");
 	}
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslParser.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslParser.java
index c4ff4ed..f22478e 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslParser.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/PerspectiveDslParser.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.perspective.parser.antlr;
 
 import com.google.inject.Inject;
-
-import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.xtext.perspective.parser.antlr.internal.InternalPerspectiveDslParser;
 import org.eclipse.osbp.xtext.perspective.services.PerspectiveDslGrammarAccess;
+import org.eclipse.xtext.parser.antlr.AbstractAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
 
-public class PerspectiveDslParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
-	
+public class PerspectiveDslParser extends AbstractAntlrParser {
+
 	@Inject
 	private PerspectiveDslGrammarAccess grammarAccess;
-	
+
 	@Override
 	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
 		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
 	}
 	
+
 	@Override
-	protected org.eclipse.osbp.xtext.perspective.parser.antlr.internal.InternalPerspectiveDslParser createParser(XtextTokenStream stream) {
-		return new org.eclipse.osbp.xtext.perspective.parser.antlr.internal.InternalPerspectiveDslParser(stream, getGrammarAccess());
+	protected InternalPerspectiveDslParser createParser(XtextTokenStream stream) {
+		return new InternalPerspectiveDslParser(stream, getGrammarAccess());
 	}
-	
+
 	@Override 
 	protected String getDefaultRuleName() {
 		return "PerspectiveModel";
 	}
-	
+
 	public PerspectiveDslGrammarAccess getGrammarAccess() {
 		return this.grammarAccess;
 	}
-	
+
 	public void setGrammarAccess(PerspectiveDslGrammarAccess grammarAccess) {
 		this.grammarAccess = grammarAccess;
 	}
-	
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g
index a9e6617..313e1b8 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g
@@ -10,12 +10,14 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 grammar InternalPerspectiveDsl;
 
 options {
 	superClass=AbstractInternalAntlrParser;
-	
 }
 
 @lexer::header {
@@ -27,7 +29,7 @@
 }
 
 @parser::header {
-package org.eclipse.osbp.xtext.perspective.parser.antlr.internal; 
+package org.eclipse.osbp.xtext.perspective.parser.antlr.internal;
 
 import org.eclipse.xtext.*;
 import org.eclipse.xtext.parser.*;
@@ -46,8203 +48,8863 @@
 @parser::members {
 
  	private PerspectiveDslGrammarAccess grammarAccess;
- 	
+
     public InternalPerspectiveDslParser(TokenStream input, PerspectiveDslGrammarAccess grammarAccess) {
         this(input);
         this.grammarAccess = grammarAccess;
         registerRules(grammarAccess.getGrammar());
     }
-    
+
     @Override
     protected String getFirstRuleName() {
-    	return "PerspectiveModel";	
+    	return "PerspectiveModel";
    	}
-   	
+
    	@Override
    	protected PerspectiveDslGrammarAccess getGrammarAccess() {
    		return grammarAccess;
    	}
+
 }
 
-@rulecatch { 
-    catch (RecognitionException re) { 
-        recover(input,re); 
+@rulecatch {
+    catch (RecognitionException re) {
+        recover(input,re);
         appendSkippedTokens();
-    } 
+    }
 }
 
-
-
-
 // Entry rule entryRulePerspectiveModel
-entryRulePerspectiveModel returns [EObject current=null] 
-	:
+entryRulePerspectiveModel returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveModelRule()); }
-	 iv_rulePerspectiveModel=rulePerspectiveModel 
-	 { $current=$iv_rulePerspectiveModel.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveModel=rulePerspectiveModel
+	{ $current=$iv_rulePerspectiveModel.current; }
+	EOF;
 
 // Rule PerspectiveModel
-rulePerspectiveModel returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_0()); 
-	    }
-		lv_packages_0_0=rulePerspectivePackage		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectiveModelRule());
-	        }
-       		add(
-       			$current, 
-       			"packages",
-        		lv_packages_0_0, 
-        		"PerspectivePackage");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*
+rulePerspectiveModel returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getPerspectiveModelAccess().getImportSectionXImportSectionParserRuleCall_0_0());
+				}
+				lv_importSection_0_0=ruleXImportSection
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getPerspectiveModelRule());
+					}
+					set(
+						$current,
+						"importSection",
+						lv_importSection_0_0,
+						"org.eclipse.xtext.xbase.Xtype.XImportSection");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_1_0());
+				}
+				lv_packages_1_0=rulePerspectivePackage
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getPerspectiveModelRule());
+					}
+					add(
+						$current,
+						"packages",
+						lv_packages_1_0,
+						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectivePackage");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectivePackage
-entryRulePerspectivePackage returns [EObject current=null] 
-	:
+entryRulePerspectivePackage returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectivePackageRule()); }
-	 iv_rulePerspectivePackage=rulePerspectivePackage 
-	 { $current=$iv_rulePerspectivePackage.current; } 
-	 EOF 
-;
+	iv_rulePerspectivePackage=rulePerspectivePackage
+	{ $current=$iv_rulePerspectivePackage.current; }
+	EOF;
 
 // Rule PerspectivePackage
-rulePerspectivePackage returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0(),
-            $current);
-    }
-)	otherlv_1='package' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectivePackageAccess().getPackageKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
-	    }
-		lv_name_2_0=ruleQualifiedName		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectivePackageRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_2_0, 
-        		"QualifiedName");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3='{' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectivePackageAccess().getImportsPerspectiveImportParserRuleCall_3_1_0()); 
-	    }
-		lv_imports_4_0=rulePerspectiveImport		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectivePackageRule());
-	        }
-       		add(
-       			$current, 
-       			"imports",
-        		lv_imports_4_0, 
-        		"PerspectiveImport");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_2_0()); 
-	    }
-		lv_perspectives_5_0=rulePerspective		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectivePackageRule());
-	        }
-       		add(
-       			$current, 
-       			"perspectives",
-        		lv_perspectives_5_0, 
-        		"Perspective");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_6='}' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_3());
-    }
-)?)
+rulePerspectivePackage returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='package'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectivePackageAccess().getPackageKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0());
+				}
+				lv_name_2_0=ruleQualifiedName
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getPerspectivePackageRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			otherlv_3='{'
+			{
+				newLeafNode(otherlv_3, grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_1_0());
+					}
+					lv_perspectives_4_0=rulePerspective
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getPerspectivePackageRule());
+						}
+						add(
+							$current,
+							"perspectives",
+							lv_perspectives_4_0,
+							"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Perspective");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+			otherlv_5='}'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_2());
+			}
+		)?
+	)
 ;
 
-
-
-
-
-// Entry rule entryRulePerspectiveImport
-entryRulePerspectiveImport returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getPerspectiveImportRule()); }
-	 iv_rulePerspectiveImport=rulePerspectiveImport 
-	 { $current=$iv_rulePerspectiveImport.current; } 
-	 EOF 
-;
-
-// Rule PerspectiveImport
-rulePerspectiveImport returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='import' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getPerspectiveImportAccess().getImportKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectiveImportAccess().getImportedNamespacePerspectiveQualifiedNameWithWildCardParserRuleCall_1_0()); 
-	    }
-		lv_importedNamespace_1_0=rulePerspectiveQualifiedNameWithWildCard		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectiveImportRule());
-	        }
-       		set(
-       			$current, 
-       			"importedNamespace",
-        		lv_importedNamespace_1_0, 
-        		"PerspectiveQualifiedNameWithWildCard");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
 // Entry rule entryRulePerspective
-entryRulePerspective returns [EObject current=null] 
-	:
+entryRulePerspective returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveRule()); }
-	 iv_rulePerspective=rulePerspective 
-	 { $current=$iv_rulePerspective.current; } 
-	 EOF 
-;
+	iv_rulePerspective=rulePerspective
+	{ $current=$iv_rulePerspective.current; }
+	EOF;
 
 // Rule Perspective
-rulePerspective returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveAccess().getPerspectiveAction_0(),
-            $current);
-    }
-)	otherlv_1='perspective' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveAccess().getPerspectiveKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-	    }
-		lv_name_2_0=ruleTRANSLATABLEID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectiveRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_2_0, 
-        		"TRANSLATABLEID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_description_3_0=	'described by' 
-    {
-        newLeafNode(lv_description_3_0, grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveRule());
-	        }
-       		setWithLastConsumed($current, "description", true, "described by");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
-	    }
-		lv_descriptionValue_4_0=ruleTRANSLATABLESTRING		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectiveRule());
-	        }
-       		set(
-       			$current, 
-       			"descriptionValue",
-        		lv_descriptionValue_4_0, 
-        		"TRANSLATABLESTRING");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?(	otherlv_5='process' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getPerspectiveAccess().getProcessKeyword_4_0());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveRule());
-	        }
-        }
-	otherlv_6=RULE_ID
-	{
-		newLeafNode(otherlv_6, grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0()); 
-	}
-
-)
-)	otherlv_7='usertask' 
-    {
-    	newLeafNode(otherlv_7, grammarAccess.getPerspectiveAccess().getUsertaskKeyword_4_2());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveRule());
-	        }
-        }
-	otherlv_8=RULE_ID
-	{
-		newLeafNode(otherlv_8, grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0()); 
-	}
-
-)
-))?(
-
-(
-	{ 
-	  getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
-	}
+rulePerspective returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
 	(
 		(
-
-			( 
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveAccess().getPerspectiveAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='perspective'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveAccess().getPerspectiveKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+				}
+				lv_name_2_0=ruleTRANSLATABLEID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getPerspectiveRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.TRANSLATABLEID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_description_3_0='describedBy'
+					{
+						newLeafNode(lv_description_3_0, grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getPerspectiveRule());
+						}
+						setWithLastConsumed($current, "description", true, "describedBy");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0());
+					}
+					lv_descriptionValue_4_0=ruleTRANSLATABLESTRING
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getPerspectiveRule());
+						}
+						set(
+							$current,
+							"descriptionValue",
+							lv_descriptionValue_4_0,
+							"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.TRANSLATABLESTRING");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		(
+			otherlv_5='process'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getPerspectiveAccess().getProcessKeyword_4_0());
+			}
+			(
+				(
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getPerspectiveRule());
+						}
+					}
+					otherlv_6=RULE_ID
+					{
+						newLeafNode(otherlv_6, grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0());
+					}
+				)
+			)
+			otherlv_7='usertask'
+			{
+				newLeafNode(otherlv_7, grammarAccess.getPerspectiveAccess().getUsertaskKeyword_4_2());
+			}
+			(
+				(
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getPerspectiveRule());
+						}
+					}
+					otherlv_8=RULE_ID
+					{
+						newLeafNode(otherlv_8, grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0());
+					}
+				)
+			)
+		)?
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+				}
+				(
+					(
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
+					}
+								({true}?=>(otherlv_10='iconURI'
+								{
+									newLeafNode(otherlv_10, grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0());
+								}
+								(
+									(
+										lv_iconURI_11_0=RULE_STRING
+										{
+											newLeafNode(lv_iconURI_11_0, grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectiveRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"iconURI",
+												lv_iconURI_11_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
-	 				}
-					({true}?=>(	otherlv_10='iconURI' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0());
-    }
-(
-(
-		lv_iconURI_11_0=RULE_STRING
-		{
-			newLeafNode(lv_iconURI_11_0, grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"iconURI",
-        		lv_iconURI_11_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
+					}
+								({true}?=>(otherlv_12='accessibility'
+								{
+									newLeafNode(otherlv_12, grammarAccess.getPerspectiveAccess().getAccessibilityKeyword_5_1_0());
+								}
+								(
+									(
+										lv_accessibilityPhrase_13_0=RULE_STRING
+										{
+											newLeafNode(lv_accessibilityPhrase_13_0, grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectiveRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"accessibilityPhrase",
+												lv_accessibilityPhrase_13_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
-	 				}
-					({true}?=>(	otherlv_12='accessibility' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getPerspectiveAccess().getAccessibilityKeyword_5_1_0());
-    }
-(
-(
-		lv_accessibilityPhrase_13_0=RULE_STRING
-		{
-			newLeafNode(lv_accessibilityPhrase_13_0, grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"accessibilityPhrase",
-        		lv_accessibilityPhrase_13_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2);
+					}
+								({true}?=>(otherlv_14='toolbar'
+								{
+									newLeafNode(otherlv_14, grammarAccess.getPerspectiveAccess().getToolbarKeyword_5_2_0());
+								}
+								(
+									(
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectiveRule());
+											}
+										}
+										otherlv_15=RULE_ID
+										{
+											newLeafNode(otherlv_15, grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0());
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2);
-	 				}
-					({true}?=>(	otherlv_14='toolbar' 
-    {
-    	newLeafNode(otherlv_14, grammarAccess.getPerspectiveAccess().getToolbarKeyword_5_2_0());
-    }
-(
-(
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+					}
+				)
+			)
+					)*
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
+				}
+		)
+		otherlv_16='{'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveRule());
-	        }
-        }
-	otherlv_15=RULE_ID
-	{
-		newLeafNode(otherlv_15, grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0()); 
-	}
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
-	 				}
- 				)
-			)  
-
-		)*	
+			newLeafNode(otherlv_16, grammarAccess.getPerspectiveAccess().getLeftCurlyBracketKeyword_6());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0());
+				}
+				lv_elements_17_0=rulePerspectiveElement
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getPerspectiveRule());
+					}
+					add(
+						$current,
+						"elements",
+						lv_elements_17_0,
+						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveElement");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_18='}'
+		{
+			newLeafNode(otherlv_18, grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8());
+		}
 	)
-)
-	{ 
-	  getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
-	}
-
-)	otherlv_16='{' 
-    {
-    	newLeafNode(otherlv_16, grammarAccess.getPerspectiveAccess().getLeftCurlyBracketKeyword_6());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0()); 
-	    }
-		lv_elements_17_0=rulePerspectiveElement		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectiveRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_17_0, 
-        		"PerspectiveElement");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_18='}' 
-    {
-    	newLeafNode(otherlv_18, grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8());
-    }
-)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveElement
-entryRulePerspectiveElement returns [EObject current=null] 
-	:
+entryRulePerspectiveElement returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveElementRule()); }
-	 iv_rulePerspectiveElement=rulePerspectiveElement 
-	 { $current=$iv_rulePerspectiveElement.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveElement=rulePerspectiveElement
+	{ $current=$iv_rulePerspectiveElement.current; }
+	EOF;
 
 // Rule PerspectiveElement
-rulePerspectiveElement returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0()); 
-    }
-    this_PerspectiveSashContainer_0=rulePerspectiveSashContainer
-    { 
-        $current = $this_PerspectiveSashContainer_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1()); 
-    }
-    this_PerspectivePartStack_1=rulePerspectivePartStack
-    { 
-        $current = $this_PerspectivePartStack_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2()); 
-    }
-    this_PerspectivePart_2=rulePerspectivePart
-    { 
-        $current = $this_PerspectivePart_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+rulePerspectiveElement returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0());
+		}
+		this_PerspectiveSashContainer_0=rulePerspectiveSashContainer
+		{
+			$current = $this_PerspectiveSashContainer_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1());
+		}
+		this_PerspectivePartStack_1=rulePerspectivePartStack
+		{
+			$current = $this_PerspectivePartStack_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2());
+		}
+		this_PerspectivePart_2=rulePerspectivePart
+		{
+			$current = $this_PerspectivePart_2.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveSashContainer
-entryRulePerspectiveSashContainer returns [EObject current=null] 
-	:
+entryRulePerspectiveSashContainer returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveSashContainerRule()); }
-	 iv_rulePerspectiveSashContainer=rulePerspectiveSashContainer 
-	 { $current=$iv_rulePerspectiveSashContainer.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveSashContainer=rulePerspectiveSashContainer
+	{ $current=$iv_rulePerspectiveSashContainer.current; }
+	EOF;
 
 // Rule PerspectiveSashContainer
-rulePerspectiveSashContainer returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveSashContainerAccess().getPerspectiveSashContainerAction_0(),
-            $current);
-    }
-)	otherlv_1='sashContainer' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveSashContainerAccess().getSashContainerKeyword_1());
-    }
-(
-(
-		lv_elementId_2_0=RULE_ID
-		{
-			newLeafNode(lv_elementId_2_0, grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"elementId",
-        		lv_elementId_2_0, 
-        		"ID");
-	    }
-
-)
-)(
-
-(
-	{ 
-	  getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
-	}
+rulePerspectiveSashContainer returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
 	(
 		(
-
-			( 
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveSashContainerAccess().getPerspectiveSashContainerAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='sashContainer'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveSashContainerAccess().getSashContainerKeyword_1());
+		}
+		(
+			(
+				lv_elementId_2_0=RULE_ID
+				{
+					newLeafNode(lv_elementId_2_0, grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"elementId",
+						lv_elementId_2_0,
+						"org.eclipse.xtext.xbase.Xtype.ID");
+				}
+			)
+		)
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+				}
+				(
+					(
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
+					}
+								({true}?=>(otherlv_4='orientation'
+								{
+									newLeafNode(otherlv_4, grammarAccess.getPerspectiveSashContainerAccess().getOrientationKeyword_3_0_0());
+								}
+								(
+									(
+										{
+											newCompositeNode(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0());
+										}
+										lv_orientation_5_0=ruleSashOrientation
+										{
+											if ($current==null) {
+												$current = createModelElementForParent(grammarAccess.getPerspectiveSashContainerRule());
+											}
+											set(
+												$current,
+												"orientation",
+												lv_orientation_5_0,
+												"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.SashOrientation");
+											afterParserOrEnumRuleCall();
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
-	 				}
-					({true}?=>(	otherlv_4='orientation' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getPerspectiveSashContainerAccess().getOrientationKeyword_3_0_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0()); 
-	    }
-		lv_orientation_5_0=ruleSashOrientation		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectiveSashContainerRule());
-	        }
-       		set(
-       			$current, 
-       			"orientation",
-        		lv_orientation_5_0, 
-        		"SashOrientation");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
+					}
+								({true}?=>(otherlv_6='selectedElement'
+								{
+									newLeafNode(otherlv_6, grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementKeyword_3_1_0());
+								}
+								(
+									(
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
+											}
+										}
+										otherlv_7=RULE_ID
+										{
+											newLeafNode(otherlv_7, grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0());
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
-	 				}
-					({true}?=>(	otherlv_6='selectedElement' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementKeyword_3_1_0());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
-	        }
-        }
-	otherlv_7=RULE_ID
-	{
-		newLeafNode(otherlv_7, grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0()); 
-	}
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
+					}
+								({true}?=>(otherlv_8='spaceVolume'
+								{
+									newLeafNode(otherlv_8, grammarAccess.getPerspectiveSashContainerAccess().getSpaceVolumeKeyword_3_2_0());
+								}
+								(
+									(
+										lv_containerData_9_0=RULE_STRING
+										{
+											newLeafNode(lv_containerData_9_0, grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"containerData",
+												lv_containerData_9_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
-	 				}
-					({true}?=>(	otherlv_8='spaceVolume' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getPerspectiveSashContainerAccess().getSpaceVolumeKeyword_3_2_0());
-    }
-(
-(
-		lv_containerData_9_0=RULE_STRING
-		{
-			newLeafNode(lv_containerData_9_0, grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"containerData",
-        		lv_containerData_9_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3);
+					}
+								({true}?=>(otherlv_10='accessibility'
+								{
+									newLeafNode(otherlv_10, grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityKeyword_3_3_0());
+								}
+								(
+									(
+										lv_accessibilityPhrase_11_0=RULE_STRING
+										{
+											newLeafNode(lv_accessibilityPhrase_11_0, grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"accessibilityPhrase",
+												lv_accessibilityPhrase_11_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3);
-	 				}
-					({true}?=>(	otherlv_10='accessibility' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityKeyword_3_3_0());
-    }
-(
-(
-		lv_accessibilityPhrase_11_0=RULE_STRING
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+					}
+				)
+			)
+					)*
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
+				}
+		)
+		otherlv_12='{'
 		{
-			newLeafNode(lv_accessibilityPhrase_11_0, grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); 
+			newLeafNode(otherlv_12, grammarAccess.getPerspectiveSashContainerAccess().getLeftCurlyBracketKeyword_4());
 		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0());
+				}
+				lv_elements_13_0=rulePerspectiveElement
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getPerspectiveSashContainerRule());
+					}
+					add(
+						$current,
+						"elements",
+						lv_elements_13_0,
+						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveElement");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_14='}'
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"accessibilityPhrase",
-        		lv_accessibilityPhrase_11_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  
-
-		)*	
+			newLeafNode(otherlv_14, grammarAccess.getPerspectiveSashContainerAccess().getRightCurlyBracketKeyword_6());
+		}
 	)
-)
-	{ 
-	  getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
-	}
-
-)	otherlv_12='{' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getPerspectiveSashContainerAccess().getLeftCurlyBracketKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
-	    }
-		lv_elements_13_0=rulePerspectiveElement		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectiveSashContainerRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_13_0, 
-        		"PerspectiveElement");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_14='}' 
-    {
-    	newLeafNode(otherlv_14, grammarAccess.getPerspectiveSashContainerAccess().getRightCurlyBracketKeyword_6());
-    }
-)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectivePartStack
-entryRulePerspectivePartStack returns [EObject current=null] 
-	:
+entryRulePerspectivePartStack returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectivePartStackRule()); }
-	 iv_rulePerspectivePartStack=rulePerspectivePartStack 
-	 { $current=$iv_rulePerspectivePartStack.current; } 
-	 EOF 
-;
+	iv_rulePerspectivePartStack=rulePerspectivePartStack
+	{ $current=$iv_rulePerspectivePartStack.current; }
+	EOF;
 
 // Rule PerspectivePartStack
-rulePerspectivePartStack returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectivePartStackAccess().getPerspectivePartStackAction_0(),
-            $current);
-    }
-)	otherlv_1='partStack' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectivePartStackAccess().getPartStackKeyword_1());
-    }
-(
-(
-		lv_elementId_2_0=RULE_ID
-		{
-			newLeafNode(lv_elementId_2_0, grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectivePartStackRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"elementId",
-        		lv_elementId_2_0, 
-        		"ID");
-	    }
-
-)
-)(
-
-(
-	{ 
-	  getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
-	}
+rulePerspectivePartStack returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
 	(
 		(
-
-			( 
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectivePartStackAccess().getPerspectivePartStackAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='partStack'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectivePartStackAccess().getPartStackKeyword_1());
+		}
+		(
+			(
+				lv_elementId_2_0=RULE_ID
+				{
+					newLeafNode(lv_elementId_2_0, grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"elementId",
+						lv_elementId_2_0,
+						"org.eclipse.xtext.xbase.Xtype.ID");
+				}
+			)
+		)
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+				}
+				(
+					(
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
+					}
+								({true}?=>(otherlv_4='selectedElement'
+								{
+									newLeafNode(otherlv_4, grammarAccess.getPerspectivePartStackAccess().getSelectedElementKeyword_3_0_0());
+								}
+								(
+									(
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+											}
+										}
+										otherlv_5=RULE_ID
+										{
+											newLeafNode(otherlv_5, grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0());
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
-	 				}
-					({true}?=>(	otherlv_4='selectedElement' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getPerspectivePartStackAccess().getSelectedElementKeyword_3_0_0());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectivePartStackRule());
-	        }
-        }
-	otherlv_5=RULE_ID
-	{
-		newLeafNode(otherlv_5, grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0()); 
-	}
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
+					}
+								({true}?=>(otherlv_6='spaceVolume'
+								{
+									newLeafNode(otherlv_6, grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0());
+								}
+								(
+									(
+										lv_containerData_7_0=RULE_STRING
+										{
+											newLeafNode(lv_containerData_7_0, grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"containerData",
+												lv_containerData_7_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
-	 				}
-					({true}?=>(	otherlv_6='spaceVolume' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0());
-    }
-(
-(
-		lv_containerData_7_0=RULE_STRING
-		{
-			newLeafNode(lv_containerData_7_0, grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectivePartStackRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"containerData",
-        		lv_containerData_7_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
+					}
+								({true}?=>(otherlv_8='accessibility'
+								{
+									newLeafNode(otherlv_8, grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0());
+								}
+								(
+									(
+										lv_accessibilityPhrase_9_0=RULE_STRING
+										{
+											newLeafNode(lv_accessibilityPhrase_9_0, grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"accessibilityPhrase",
+												lv_accessibilityPhrase_9_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
-	 				}
-					({true}?=>(	otherlv_8='accessibility' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0());
-    }
-(
-(
-		lv_accessibilityPhrase_9_0=RULE_STRING
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+					}
+				)
+			)
+					)*
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+				}
+		)
+		otherlv_10='{'
 		{
-			newLeafNode(lv_accessibilityPhrase_9_0, grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); 
+			newLeafNode(otherlv_10, grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4());
 		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0());
+				}
+				lv_elements_11_0=rulePerspectiveElement
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getPerspectivePartStackRule());
+					}
+					add(
+						$current,
+						"elements",
+						lv_elements_11_0,
+						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveElement");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_12='}'
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectivePartStackRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"accessibilityPhrase",
-        		lv_accessibilityPhrase_9_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  
-
-		)*	
+			newLeafNode(otherlv_12, grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6());
+		}
 	)
-)
-	{ 
-	  getUnorderedGroupHelper().leave(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
-	}
-
-)	otherlv_10='{' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
-	    }
-		lv_elements_11_0=rulePerspectiveElement		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectivePartStackRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_11_0, 
-        		"PerspectiveElement");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_12='}' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6());
-    }
-)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectivePart
-entryRulePerspectivePart returns [EObject current=null] 
-	:
+entryRulePerspectivePart returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectivePartRule()); }
-	 iv_rulePerspectivePart=rulePerspectivePart 
-	 { $current=$iv_rulePerspectivePart.current; } 
-	 EOF 
-;
+	iv_rulePerspectivePart=rulePerspectivePart
+	{ $current=$iv_rulePerspectivePart.current; }
+	EOF;
 
 // Rule PerspectivePart
-rulePerspectivePart returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0(),
-            $current);
-    }
-)	otherlv_1='part' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectivePartAccess().getPartKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0()); 
-	    }
-		lv_elementId_2_0=ruleTRANSLATABLEID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
-	        }
-       		set(
-       			$current, 
-       			"elementId",
-        		lv_elementId_2_0, 
-        		"TRANSLATABLEID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-
-(
-	{ 
-	  getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-	}
+rulePerspectivePart returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
 	(
 		(
-
-			( 
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='part'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectivePartAccess().getPartKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0());
+				}
+				lv_elementId_2_0=ruleTRANSLATABLEID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
+					}
+					set(
+						$current,
+						"elementId",
+						lv_elementId_2_0,
+						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.TRANSLATABLEID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+				}
+				(
+					(
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
+					}
+								({true}?=>(otherlv_4='spaceVolume'
+								{
+									newLeafNode(otherlv_4, grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_0_0());
+								}
+								(
+									(
+										lv_containerData_5_0=RULE_STRING
+										{
+											newLeafNode(lv_containerData_5_0, grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_0_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectivePartRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"containerData",
+												lv_containerData_5_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
-	 				}
-					({true}?=>((
-(
-		lv_description_4_0=	'described by' 
-    {
-        newLeafNode(lv_description_4_0, grammarAccess.getPerspectivePartAccess().getDescriptionDescribedByKeyword_3_0_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectivePartRule());
-	        }
-       		setWithLastConsumed($current, "description", true, "described by");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectivePartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_0_1_0()); 
-	    }
-		lv_descriptionValue_5_0=ruleTRANSLATABLESTRING		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
-	        }
-       		set(
-       			$current, 
-       			"descriptionValue",
-        		lv_descriptionValue_5_0, 
-        		"TRANSLATABLESTRING");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
+					}
+								({true}?=>(otherlv_6='accessibility'
+								{
+									newLeafNode(otherlv_6, grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_1_0());
+								}
+								(
+									(
+										lv_accessibilityPhrase_7_0=RULE_STRING
+										{
+											newLeafNode(lv_accessibilityPhrase_7_0, grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectivePartRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"accessibilityPhrase",
+												lv_accessibilityPhrase_7_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
-	 				}
-					({true}?=>(	otherlv_6='spaceVolume' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_1_0());
-    }
-(
-(
-		lv_containerData_7_0=RULE_STRING
-		{
-			newLeafNode(lv_containerData_7_0, grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectivePartRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"containerData",
-        		lv_containerData_7_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
+					}
+								({true}?=>(otherlv_8='iconURI'
+								{
+									newLeafNode(otherlv_8, grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0());
+								}
+								(
+									(
+										lv_iconURI_9_0=RULE_STRING
+										{
+											newLeafNode(lv_iconURI_9_0, grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_2_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectivePartRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"iconURI",
+												lv_iconURI_9_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
-	 				}
-					({true}?=>(	otherlv_8='accessibility' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_2_0());
-    }
-(
-(
-		lv_accessibilityPhrase_9_0=RULE_STRING
-		{
-			newLeafNode(lv_accessibilityPhrase_9_0, grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectivePartRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"accessibilityPhrase",
-        		lv_accessibilityPhrase_9_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
+					}
+								({true}?=>(otherlv_10='view'
+								{
+									newLeafNode(otherlv_10, grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0());
+								}
+								(
+									(
+										{
+											newCompositeNode(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_3_1_0());
+										}
+										lv_view_11_0=rulePerspectiveView
+										{
+											if ($current==null) {
+												$current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
+											}
+											set(
+												$current,
+												"view",
+												lv_view_11_0,
+												"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveView");
+											afterParserOrEnumRuleCall();
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
-	 				}
-					({true}?=>(	otherlv_10='iconURI' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_3_0());
-    }
-(
-(
-		lv_iconURI_11_0=RULE_STRING
-		{
-			newLeafNode(lv_iconURI_11_0, grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_3_1_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectivePartRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"iconURI",
-        		lv_iconURI_11_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4);
+					}
+								({true}?=>((
+									lv_isClosable_12_0='isClosable'
+									{
+										newLeafNode(lv_isClosable_12_0, grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getPerspectivePartRule());
+										}
+										setWithLastConsumed($current, "isClosable", true, "isClosable");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4);
-	 				}
-					({true}?=>(	otherlv_12='view' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getPerspectivePartAccess().getViewKeyword_3_4_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_4_1_0()); 
-	    }
-		lv_view_13_0=rulePerspectiveView		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
-	        }
-       		set(
-       			$current, 
-       			"view",
-        		lv_view_13_0, 
-        		"PerspectiveView");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  |
-
-			( 
-				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 5)}?=>(
-					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 5);
-	 				}
-					({true}?=>(
-(
-		lv_isClosable_14_0=	'isClosable' 
-    {
-        newLeafNode(lv_isClosable_14_0, grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_5_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectivePartRule());
-	        }
-       		setWithLastConsumed($current, "isClosable", true, "isClosable");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-	 				}
- 				)
-			)  
-
-		)*	
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+					}
+				)
+			)
+					)*
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
+				}
+		)
 	)
-)
-	{ 
-	  getUnorderedGroupHelper().leave(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-	}
-
-))
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveView
-entryRulePerspectiveView returns [EObject current=null] 
-	:
+entryRulePerspectiveView returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveViewRule()); }
-	 iv_rulePerspectiveView=rulePerspectiveView 
-	 { $current=$iv_rulePerspectiveView.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveView=rulePerspectiveView
+	{ $current=$iv_rulePerspectiveView.current; }
+	EOF;
 
 // Rule PerspectiveView
-rulePerspectiveView returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0()); 
-    }
-    this_PerspectiveSelection_0=rulePerspectiveSelection
-    { 
-        $current = $this_PerspectiveSelection_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1()); 
-    }
-    this_PerspectiveTable_1=rulePerspectiveTable
-    { 
-        $current = $this_PerspectiveTable_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2()); 
-    }
-    this_PerspectiveChart_2=rulePerspectiveChart
-    { 
-        $current = $this_PerspectiveChart_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_3()); 
-    }
-    this_PerspectiveReport_3=rulePerspectiveReport
-    { 
-        $current = $this_PerspectiveReport_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_4()); 
-    }
-    this_PerspectiveOrganization_4=rulePerspectiveOrganization
-    { 
-        $current = $this_PerspectiveOrganization_4.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_5()); 
-    }
-    this_PerspectiveTopology_5=rulePerspectiveTopology
-    { 
-        $current = $this_PerspectiveTopology_5.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_6()); 
-    }
-    this_PerspectiveDialog_6=rulePerspectiveDialog
-    { 
-        $current = $this_PerspectiveDialog_6.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_7()); 
-    }
-    this_PerspectiveBPMN_7=rulePerspectiveBPMN
-    { 
-        $current = $this_PerspectiveBPMN_7.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_8()); 
-    }
-    this_PerspectiveGrid_8=rulePerspectiveGrid
-    { 
-        $current = $this_PerspectiveGrid_8.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+rulePerspectiveView returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0());
+		}
+		this_PerspectiveSelection_0=rulePerspectiveSelection
+		{
+			$current = $this_PerspectiveSelection_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1());
+		}
+		this_PerspectiveTable_1=rulePerspectiveTable
+		{
+			$current = $this_PerspectiveTable_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2());
+		}
+		this_PerspectiveChart_2=rulePerspectiveChart
+		{
+			$current = $this_PerspectiveChart_2.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3());
+		}
+		this_PerspectiveBean_3=rulePerspectiveBean
+		{
+			$current = $this_PerspectiveBean_3.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4());
+		}
+		this_PerspectiveReport_4=rulePerspectiveReport
+		{
+			$current = $this_PerspectiveReport_4.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5());
+		}
+		this_PerspectiveOrganization_5=rulePerspectiveOrganization
+		{
+			$current = $this_PerspectiveOrganization_5.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6());
+		}
+		this_PerspectiveTopology_6=rulePerspectiveTopology
+		{
+			$current = $this_PerspectiveTopology_6.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7());
+		}
+		this_PerspectiveDialog_7=rulePerspectiveDialog
+		{
+			$current = $this_PerspectiveDialog_7.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_8());
+		}
+		this_PerspectiveBPMN_8=rulePerspectiveBPMN
+		{
+			$current = $this_PerspectiveBPMN_8.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_9());
+		}
+		this_PerspectiveGrid_9=rulePerspectiveGrid
+		{
+			$current = $this_PerspectiveGrid_9.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_10());
+		}
+		this_PerspectiveWelcome_10=rulePerspectiveWelcome
+		{
+			$current = $this_PerspectiveWelcome_10.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_11());
+		}
+		this_PerspectiveSearch_11=rulePerspectiveSearch
+		{
+			$current = $this_PerspectiveSearch_11.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_12());
+		}
+		this_PerspectiveDataInterchange_12=rulePerspectiveDataInterchange
+		{
+			$current = $this_PerspectiveDataInterchange_12.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveKanbanParserRuleCall_13());
+		}
+		this_PerspectiveKanban_13=rulePerspectiveKanban
+		{
+			$current = $this_PerspectiveKanban_13.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveSelection
-entryRulePerspectiveSelection returns [EObject current=null] 
-	:
+entryRulePerspectiveSelection returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveSelectionRule()); }
-	 iv_rulePerspectiveSelection=rulePerspectiveSelection 
-	 { $current=$iv_rulePerspectiveSelection.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveSelection=rulePerspectiveSelection
+	{ $current=$iv_rulePerspectiveSelection.current; }
+	EOF;
 
 // Rule PerspectiveSelection
-rulePerspectiveSelection returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0(),
-            $current);
-    }
-)	otherlv_1='select' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1());
-    }
-(
-(
+rulePerspectiveSelection returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='select'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveSelectionRule());
-	        }
-        }
-	otherlv_2=RULE_ID
-	{
-		newLeafNode(otherlv_2, grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0()); 
-	}
-
-)
-))
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveSelectionRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0());
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveTable
-entryRulePerspectiveTable returns [EObject current=null] 
-	:
+entryRulePerspectiveTable returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveTableRule()); }
-	 iv_rulePerspectiveTable=rulePerspectiveTable 
-	 { $current=$iv_rulePerspectiveTable.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveTable=rulePerspectiveTable
+	{ $current=$iv_rulePerspectiveTable.current; }
+	EOF;
 
 // Rule PerspectiveTable
-rulePerspectiveTable returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0(),
-            $current);
-    }
-)	otherlv_1='table' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveTableAccess().getTableKeyword_1());
-    }
-(
-(
+rulePerspectiveTable returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='table'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveTableRule());
-	        }
-        }
-	otherlv_2=RULE_ID
-	{
-		newLeafNode(otherlv_2, grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0()); 
-	}
-
-)
-))
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTableAccess().getTableKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveTableRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0());
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveGrid
-entryRulePerspectiveGrid returns [EObject current=null] 
-	:
+entryRulePerspectiveGrid returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveGridRule()); }
-	 iv_rulePerspectiveGrid=rulePerspectiveGrid 
-	 { $current=$iv_rulePerspectiveGrid.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveGrid=rulePerspectiveGrid
+	{ $current=$iv_rulePerspectiveGrid.current; }
+	EOF;
 
 // Rule PerspectiveGrid
-rulePerspectiveGrid returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0(),
-            $current);
-    }
-)	otherlv_1='grid' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveGridAccess().getGridKeyword_1());
-    }
-(
-(
+rulePerspectiveGrid returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='grid'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveGridRule());
-	        }
-        }
-	otherlv_2=RULE_ID
-	{
-		newLeafNode(otherlv_2, grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0()); 
-	}
-
-)
-))
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveGridAccess().getGridKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveGridRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0());
+				}
+			)
+		)
+	)
 ;
 
+// Entry rule entryRulePerspectiveBean
+entryRulePerspectiveBean returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPerspectiveBeanRule()); }
+	iv_rulePerspectiveBean=rulePerspectiveBean
+	{ $current=$iv_rulePerspectiveBean.current; }
+	EOF;
 
-
-
+// Rule PerspectiveBean
+rulePerspectiveBean returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='bean'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveBeanRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0());
+				}
+			)
+		)
+	)
+;
 
 // Entry rule entryRulePerspectiveChart
-entryRulePerspectiveChart returns [EObject current=null] 
-	:
+entryRulePerspectiveChart returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveChartRule()); }
-	 iv_rulePerspectiveChart=rulePerspectiveChart 
-	 { $current=$iv_rulePerspectiveChart.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveChart=rulePerspectiveChart
+	{ $current=$iv_rulePerspectiveChart.current; }
+	EOF;
 
 // Rule PerspectiveChart
-rulePerspectiveChart returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0(),
-            $current);
-    }
-)	otherlv_1='chart' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveChartAccess().getChartKeyword_1());
-    }
-(
-(
+rulePerspectiveChart returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='chart'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveChartRule());
-	        }
-        }
-	otherlv_2=RULE_ID
-	{
-		newLeafNode(otherlv_2, grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0()); 
-	}
-
-)
-))
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveChartAccess().getChartKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveChartRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0());
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveReport
-entryRulePerspectiveReport returns [EObject current=null] 
-	:
+entryRulePerspectiveReport returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveReportRule()); }
-	 iv_rulePerspectiveReport=rulePerspectiveReport 
-	 { $current=$iv_rulePerspectiveReport.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveReport=rulePerspectiveReport
+	{ $current=$iv_rulePerspectiveReport.current; }
+	EOF;
 
 // Rule PerspectiveReport
-rulePerspectiveReport returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0(),
-            $current);
-    }
-)	otherlv_1='report' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveReportAccess().getReportKeyword_1());
-    }
-(
-(
+rulePerspectiveReport returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='report'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveReportRule());
-	        }
-        }
-	otherlv_2=RULE_ID
-	{
-		newLeafNode(otherlv_2, grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0()); 
-	}
-
-)
-))
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveReportAccess().getReportKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveReportRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0());
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveOrganization
-entryRulePerspectiveOrganization returns [EObject current=null] 
-	:
+entryRulePerspectiveOrganization returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveOrganizationRule()); }
-	 iv_rulePerspectiveOrganization=rulePerspectiveOrganization 
-	 { $current=$iv_rulePerspectiveOrganization.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveOrganization=rulePerspectiveOrganization
+	{ $current=$iv_rulePerspectiveOrganization.current; }
+	EOF;
 
 // Rule PerspectiveOrganization
-rulePerspectiveOrganization returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0(),
-            $current);
-    }
-)	otherlv_1='organigram' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1());
-    }
-(
-(
+rulePerspectiveOrganization returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='organigram'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveOrganizationRule());
-	        }
-        }
-	otherlv_2=RULE_ID
-	{
-		newLeafNode(otherlv_2, grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0()); 
-	}
-
-)
-))
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveOrganizationRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0());
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveTopology
-entryRulePerspectiveTopology returns [EObject current=null] 
-	:
+entryRulePerspectiveTopology returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveTopologyRule()); }
-	 iv_rulePerspectiveTopology=rulePerspectiveTopology 
-	 { $current=$iv_rulePerspectiveTopology.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveTopology=rulePerspectiveTopology
+	{ $current=$iv_rulePerspectiveTopology.current; }
+	EOF;
 
 // Rule PerspectiveTopology
-rulePerspectiveTopology returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0(),
-            $current);
-    }
-)	otherlv_1='topology' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1());
-    }
-(
-(
+rulePerspectiveTopology returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='topology'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveTopologyRule());
-	        }
-        }
-	otherlv_2=RULE_ID
-	{
-		newLeafNode(otherlv_2, grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0()); 
-	}
-
-)
-))
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveTopologyRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0());
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveDialog
-entryRulePerspectiveDialog returns [EObject current=null] 
-	:
+entryRulePerspectiveDialog returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveDialogRule()); }
-	 iv_rulePerspectiveDialog=rulePerspectiveDialog 
-	 { $current=$iv_rulePerspectiveDialog.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveDialog=rulePerspectiveDialog
+	{ $current=$iv_rulePerspectiveDialog.current; }
+	EOF;
 
 // Rule PerspectiveDialog
-rulePerspectiveDialog returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0(),
-            $current);
-    }
-)	otherlv_1='dialog' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1());
-    }
-(
-(
+rulePerspectiveDialog returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='dialog'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getPerspectiveDialogRule());
-	        }
-        }
-	otherlv_2=RULE_ID
-	{
-		newLeafNode(otherlv_2, grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0()); 
-	}
-
-)
-))
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveDialogRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0());
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRulePerspectiveBPMN
-entryRulePerspectiveBPMN returns [EObject current=null] 
-	:
+entryRulePerspectiveBPMN returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getPerspectiveBPMNRule()); }
-	 iv_rulePerspectiveBPMN=rulePerspectiveBPMN 
-	 { $current=$iv_rulePerspectiveBPMN.current; } 
-	 EOF 
-;
+	iv_rulePerspectiveBPMN=rulePerspectiveBPMN
+	{ $current=$iv_rulePerspectiveBPMN.current; }
+	EOF;
 
 // Rule PerspectiveBPMN
-rulePerspectiveBPMN returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0(),
-            $current);
-    }
-)	otherlv_1='bpmn' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1());
-    }
-)
+rulePerspectiveBPMN returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='bpmn'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1());
+		}
+	)
 ;
 
+// Entry rule entryRulePerspectiveKanban
+entryRulePerspectiveKanban returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPerspectiveKanbanRule()); }
+	iv_rulePerspectiveKanban=rulePerspectiveKanban
+	{ $current=$iv_rulePerspectiveKanban.current; }
+	EOF;
 
-
-
-
-// Entry rule entryRulePerspectiveQualifiedNameWithWildCard
-entryRulePerspectiveQualifiedNameWithWildCard returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getPerspectiveQualifiedNameWithWildCardRule()); } 
-	 iv_rulePerspectiveQualifiedNameWithWildCard=rulePerspectiveQualifiedNameWithWildCard 
-	 { $current=$iv_rulePerspectiveQualifiedNameWithWildCard.current.getText(); }  
-	 EOF 
+// Rule PerspectiveKanban
+rulePerspectiveKanban returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveKanbanAccess().getPerspectiveKanbanAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='kanban'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1());
+		}
+		otherlv_2='of'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveKanbanRule());
+					}
+				}
+				otherlv_3=RULE_ID
+				{
+					newLeafNode(otherlv_3, grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoCrossReference_3_0());
+				}
+			)
+		)
+		otherlv_4='card'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveKanbanRule());
+					}
+				}
+				otherlv_5=RULE_ID
+				{
+					newLeafNode(otherlv_5, grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogCrossReference_5_0());
+				}
+			)
+		)
+		otherlv_6='dialog'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveKanbanRule());
+					}
+				}
+				otherlv_7=RULE_ID
+				{
+					newLeafNode(otherlv_7, grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogCrossReference_7_0());
+				}
+			)
+		)
+	)
 ;
 
-// Rule PerspectiveQualifiedNameWithWildCard
-rulePerspectiveQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getPerspectiveQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
-    }
-    this_QualifiedName_0=ruleQualifiedName    {
-		$current.merge(this_QualifiedName_0);
-    }
+// Entry rule entryRulePerspectiveWelcome
+entryRulePerspectiveWelcome returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPerspectiveWelcomeRule()); }
+	iv_rulePerspectiveWelcome=rulePerspectiveWelcome
+	{ $current=$iv_rulePerspectiveWelcome.current; }
+	EOF;
 
-    { 
-        afterParserOrEnumRuleCall();
-    }
-(
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getPerspectiveQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
-    }
-
-	kw='*' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getPerspectiveQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
-    }
-)?)
-    ;
-
-
-
-
-
-// Entry rule entryRuleQualifiedName
-entryRuleQualifiedName returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getQualifiedNameRule()); } 
-	 iv_ruleQualifiedName=ruleQualifiedName 
-	 { $current=$iv_ruleQualifiedName.current.getText(); }  
-	 EOF 
+// Rule PerspectiveWelcome
+rulePerspectiveWelcome returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveWelcomeAccess().getPerspectiveWelcomeAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='welcome'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1());
+		}
+	)
 ;
 
-// 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);
-    }
+// Entry rule entryRulePerspectiveSearch
+entryRulePerspectiveSearch returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPerspectiveSearchRule()); }
+	iv_rulePerspectiveSearch=rulePerspectiveSearch
+	{ $current=$iv_rulePerspectiveSearch.current; }
+	EOF;
 
-    { 
-        afterParserOrEnumRuleCall();
-    }
-(((
-	'.' 
-)=>
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
-    }
-)
-    { 
-        newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
-    }
-    this_ValidID_2=ruleValidID    {
-		$current.merge(this_ValidID_2);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-)*)
-    ;
-
-
-
-
-
-// Entry rule entryRuleValidID
-entryRuleValidID returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getValidIDRule()); } 
-	 iv_ruleValidID=ruleValidID 
-	 { $current=$iv_ruleValidID.current.getText(); }  
-	 EOF 
+// Rule PerspectiveSearch
+rulePerspectiveSearch returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveSearchAccess().getPerspectiveSearchAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='search'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1());
+		}
+		otherlv_2='in'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getPerspectiveSearchAccess().getInKeyword_2());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveSearchRule());
+					}
+				}
+				otherlv_3=RULE_ID
+				{
+					newLeafNode(otherlv_3, grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoCrossReference_3_0());
+				}
+			)
+		)
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+				}
+				(
+					(
+			(
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
+					}
+								({true}?=>(otherlv_5='depth'
+								{
+									newLeafNode(otherlv_5, grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0());
+								}
+								(
+									(
+										lv_depth_6_0=RULE_INT
+										{
+											newLeafNode(lv_depth_6_0, grammarAccess.getPerspectiveSearchAccess().getDepthINTTerminalRuleCall_4_0_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectiveSearchRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"depth",
+												lv_depth_6_0,
+												"org.eclipse.xtext.xbase.Xbase.INT");
+										}
+									)
+								)
+								))
+					{ 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+					}
+				)
+			)|
+			(
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1);
+					}
+								({true}?=>(otherlv_7='filterColumns'
+								{
+									newLeafNode(otherlv_7, grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0());
+								}
+								(
+									(
+										lv_filterCols_8_0=RULE_INT
+										{
+											newLeafNode(lv_filterCols_8_0, grammarAccess.getPerspectiveSearchAccess().getFilterColsINTTerminalRuleCall_4_1_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectiveSearchRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"filterCols",
+												lv_filterCols_8_0,
+												"org.eclipse.xtext.xbase.Xbase.INT");
+										}
+									)
+								)
+								))
+					{ 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+					}
+				)
+			)
+					)*
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+				}
+		)
+	)
 ;
 
-// Rule ValidID
-ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-    this_ID_0=RULE_ID    {
-		$current.merge(this_ID_0);
-    }
+// Entry rule entryRulePerspectiveDataInterchange
+entryRulePerspectiveDataInterchange returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPerspectiveDataInterchangeRule()); }
+	iv_rulePerspectiveDataInterchange=rulePerspectiveDataInterchange
+	{ $current=$iv_rulePerspectiveDataInterchange.current; }
+	EOF;
 
-    { 
-    newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
-    }
-
-    ;
-
-
-
-
+// Rule PerspectiveDataInterchange
+rulePerspectiveDataInterchange returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getPerspectiveDataInterchangeAccess().getPerspectiveDataInterchangeAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='dataInterchange'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getPerspectiveDataInterchangeRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageCrossReference_2_0());
+				}
+			)
+		)
+	)
+;
 
 // Entry rule entryRuleTRANSLATABLEID
-entryRuleTRANSLATABLEID returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); } 
-	 iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID 
-	 { $current=$iv_ruleTRANSLATABLEID.current.getText(); }  
-	 EOF 
-;
+entryRuleTRANSLATABLEID returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); }
+	iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID
+	{ $current=$iv_ruleTRANSLATABLEID.current.getText(); }
+	EOF;
 
 // Rule TRANSLATABLEID
-ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-    this_ID_0=RULE_ID    {
+ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	this_ID_0=RULE_ID
+	{
 		$current.merge(this_ID_0);
-    }
-
-    { 
-    newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
-    }
-
-    ;
-
-
-
-
+	}
+	{
+		newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall());
+	}
+;
 
 // Entry rule entryRuleTRANSLATABLESTRING
-entryRuleTRANSLATABLESTRING returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); } 
-	 iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING 
-	 { $current=$iv_ruleTRANSLATABLESTRING.current.getText(); }  
-	 EOF 
-;
+entryRuleTRANSLATABLESTRING returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); }
+	iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING
+	{ $current=$iv_ruleTRANSLATABLESTRING.current.getText(); }
+	EOF;
 
 // Rule TRANSLATABLESTRING
-ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-    this_STRING_0=RULE_STRING    {
+ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	this_STRING_0=RULE_STRING
+	{
 		$current.merge(this_STRING_0);
-    }
+	}
+	{
+		newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall());
+	}
+;
 
-    { 
-    newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
-    }
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXImportDeclarationRule()); }
+	iv_ruleXImportDeclaration=ruleXImportDeclaration
+	{ $current=$iv_ruleXImportDeclaration.current; }
+	EOF;
 
-    ;
-
-
-
-
+// Rule XImportDeclaration
+ruleXImportDeclaration returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='import'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
+		}
+		(
+			(
+				(
+					(
+						lv_static_2_0='static'
+						{
+							newLeafNode(lv_static_2_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+							}
+							setWithLastConsumed($current, "static", true, "static");
+						}
+					)
+				)
+				(
+					(
+						lv_extension_3_0='extension'
+						{
+							newLeafNode(lv_extension_3_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+							}
+							setWithLastConsumed($current, "extension", true, "extension");
+						}
+					)
+				)?
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0());
+						}
+						ruleQualifiedNameInStaticImport
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						(
+							lv_wildcard_5_0='*'
+							{
+								newLeafNode(lv_wildcard_5_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0());
+							}
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+								}
+								setWithLastConsumed($current, "wildcard", true, "*");
+							}
+						)
+					)
+					    |
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0());
+							}
+							lv_memberName_6_0=ruleValidID
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+								}
+								set(
+									$current,
+									"memberName",
+									lv_memberName_6_0,
+									"org.eclipse.xtext.xbase.Xtype.ValidID");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			    |
+			(
+				(
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+						}
+					}
+					{
+						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0());
+					}
+					ruleQualifiedName
+					{
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			    |
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0());
+					}
+					lv_importedNamespace_8_0=ruleQualifiedNameWithWildcard
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+						}
+						set(
+							$current,
+							"importedNamespace",
+							lv_importedNamespace_8_0,
+							"org.eclipse.xtext.xbase.Xtype.QualifiedNameWithWildcard");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			    |
+			(
+				(
+					(
+						lv_fqnImport_9_0='ns'
+						{
+							newLeafNode(lv_fqnImport_9_0, grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+							}
+							setWithLastConsumed($current, "fqnImport", true, "ns");
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0());
+						}
+						lv_importedFullyQualifiedName_10_0=ruleQualifiedName
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+							}
+							set(
+								$current,
+								"importedFullyQualifiedName",
+								lv_importedFullyQualifiedName_10_0,
+								"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)
+		(
+			otherlv_11=';'
+			{
+				newLeafNode(otherlv_11, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3());
+			}
+		)?
+	)
+;
 
 // Entry rule entryRuleXAnnotation
-entryRuleXAnnotation returns [EObject current=null] 
-	:
+entryRuleXAnnotation returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationRule()); }
-	 iv_ruleXAnnotation=ruleXAnnotation 
-	 { $current=$iv_ruleXAnnotation.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotation=ruleXAnnotation
+	{ $current=$iv_ruleXAnnotation.current; }
+	EOF;
 
 // Rule XAnnotation
-ruleXAnnotation returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
-            $current);
-    }
-)	otherlv_1='@' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
-    }
-(
-(
+ruleXAnnotation returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='@'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAnnotationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'(' 
-)=>	otherlv_3='(' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
-    }
-)((((((
-(
-		ruleValidID
-)
-)	'=' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
-	    }
-		lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
-	        }
-       		add(
-       			$current, 
-       			"elementValuePairs",
-        		lv_elementValuePairs_4_0, 
-        		"XAnnotationElementValuePair");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_5=',' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
-    }
-((((
-(
-		ruleValidID
-)
-)	'=' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
-	    }
-		lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
-	        }
-       		add(
-       			$current, 
-       			"elementValuePairs",
-        		lv_elementValuePairs_6_0, 
-        		"XAnnotationElementValuePair");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
-    |(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
-	    }
-		lv_value_7_0=ruleXAnnotationElementValueOrCommaList		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_7_0, 
-        		"XAnnotationElementValueOrCommaList");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?	otherlv_8=')' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
-    }
-)?)
+			newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXAnnotationRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0());
+				}
+				ruleQualifiedName
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				('(')=>
+				otherlv_3='('
+				{
+					newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
+				}
+			)
+			(
+				(
+					(
+						((
+							(
+								(
+									ruleValidID
+								)
+							)
+							'='
+						)
+						)=>
+						(
+							{
+								newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0());
+							}
+							lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+								}
+								add(
+									$current,
+									"elementValuePairs",
+									lv_elementValuePairs_4_0,
+									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValuePair");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_5=','
+						{
+							newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+						}
+						(
+							((
+								(
+									(
+										ruleValidID
+									)
+								)
+								'='
+							)
+							)=>
+							(
+								{
+									newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0());
+								}
+								lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+									}
+									add(
+										$current,
+										"elementValuePairs",
+										lv_elementValuePairs_6_0,
+										"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValuePair");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)
+				    |
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0());
+						}
+						lv_value_7_0=ruleXAnnotationElementValueOrCommaList
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+							}
+							set(
+								$current,
+								"value",
+								lv_value_7_0,
+								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValueOrCommaList");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)?
+			otherlv_8=')'
+			{
+				newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
+			}
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXAnnotationElementValuePair
-entryRuleXAnnotationElementValuePair returns [EObject current=null] 
-	:
+entryRuleXAnnotationElementValuePair returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); }
-	 iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair 
-	 { $current=$iv_ruleXAnnotationElementValuePair.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair
+	{ $current=$iv_ruleXAnnotationElementValuePair.current; }
+	EOF;
 
 // Rule XAnnotationElementValuePair
-ruleXAnnotationElementValuePair returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-(
-		ruleValidID
-)
-)	'=' 
-))=>((
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
-	    }
-		ruleValidID		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_1='=' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
-	    }
-		lv_value_2_0=ruleXAnnotationElementValue		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_2_0, 
-        		"XAnnotationElementValue");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXAnnotationElementValuePair returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+					(
+						ruleValidID
+					)
+				)
+				'='
+			)
+			)=>
+			(
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0());
+						}
+						ruleValidID
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				otherlv_1='='
+				{
+					newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0());
+				}
+				lv_value_2_0=ruleXAnnotationElementValue
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
+					}
+					set(
+						$current,
+						"value",
+						lv_value_2_0,
+						"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValue");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXAnnotationElementValueOrCommaList
-entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] 
-	:
+entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
-	 iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList 
-	 { $current=$iv_ruleXAnnotationElementValueOrCommaList.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList
+	{ $current=$iv_ruleXAnnotationElementValueOrCommaList.current; }
+	EOF;
 
 // Rule XAnnotationElementValueOrCommaList
-ruleXAnnotationElementValueOrCommaList returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((((((
-)	'#' 
-	'[' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
-            $current);
-    }
-)	otherlv_1='#' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
-    }
-	otherlv_2='[' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
-    }
-))((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-	    }
-		lv_elements_3_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_3_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
-	    }
-		lv_elements_5_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_5_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6=']' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
-    }
-)
-    |(
-    { 
-        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
-    }
-    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
-    { 
-        $current = $this_XAnnotationOrExpression_7.current; 
-        afterParserOrEnumRuleCall();
-    }
-((
-    {
-        $current = forceCreateModelElementAndAdd(
-            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
-            $current);
-    }
-)(	otherlv_9=',' 
-    {
-    	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
-	    }
-		lv_elements_10_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_10_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))+)?))
+ruleXAnnotationElementValueOrCommaList returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				((
+					(
+					)
+					'#'
+					'['
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElement(
+								grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+								$current);
+						}
+					)
+					otherlv_1='#'
+					{
+						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+					}
+					otherlv_2='['
+					{
+						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+					}
+				)
+			)
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
+						}
+						lv_elements_3_0=ruleXAnnotationOrExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+							}
+							add(
+								$current,
+								"elements",
+								lv_elements_3_0,
+								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					otherlv_4=','
+					{
+						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
+							}
+							lv_elements_5_0=ruleXAnnotationOrExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+								}
+								add(
+									$current,
+									"elements",
+									lv_elements_5_0,
+									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)*
+			)?
+			otherlv_6=']'
+			{
+				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+			}
+		)
+		    |
+		(
+			{
+				newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0());
+			}
+			this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+			{
+				$current = $this_XAnnotationOrExpression_7.current;
+				afterParserOrEnumRuleCall();
+			}
+			(
+				(
+					{
+						$current = forceCreateModelElementAndAdd(
+							grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+							$current);
+					}
+				)
+				(
+					otherlv_9=','
+					{
+						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0());
+							}
+							lv_elements_10_0=ruleXAnnotationOrExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+								}
+								add(
+									$current,
+									"elements",
+									lv_elements_10_0,
+									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)+
+			)?
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXAnnotationElementValue
-entryRuleXAnnotationElementValue returns [EObject current=null] 
-	:
+entryRuleXAnnotationElementValue returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); }
-	 iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue 
-	 { $current=$iv_ruleXAnnotationElementValue.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue
+	{ $current=$iv_ruleXAnnotationElementValue.current; }
+	EOF;
 
 // Rule XAnnotationElementValue
-ruleXAnnotationElementValue returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((((((
-)	'#' 
-	'[' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
-            $current);
-    }
-)	otherlv_1='#' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
-    }
-	otherlv_2='[' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
-    }
-))((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-	    }
-		lv_elements_3_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_3_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
-	    }
-		lv_elements_5_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_5_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6=']' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
-    }
-)
-    |
-    { 
-        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
-    }
-    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
-    { 
-        $current = $this_XAnnotationOrExpression_7.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXAnnotationElementValue returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				((
+					(
+					)
+					'#'
+					'['
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElement(
+								grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+								$current);
+						}
+					)
+					otherlv_1='#'
+					{
+						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+					}
+					otherlv_2='['
+					{
+						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+					}
+				)
+			)
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
+						}
+						lv_elements_3_0=ruleXAnnotationOrExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+							}
+							add(
+								$current,
+								"elements",
+								lv_elements_3_0,
+								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					otherlv_4=','
+					{
+						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
+							}
+							lv_elements_5_0=ruleXAnnotationOrExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+								}
+								add(
+									$current,
+									"elements",
+									lv_elements_5_0,
+									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)*
+			)?
+			otherlv_6=']'
+			{
+				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+			}
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1());
+		}
+		this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+		{
+			$current = $this_XAnnotationOrExpression_7.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXAnnotationOrExpression
-entryRuleXAnnotationOrExpression returns [EObject current=null] 
-	:
+entryRuleXAnnotationOrExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); }
-	 iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression 
-	 { $current=$iv_ruleXAnnotationOrExpression.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression
+	{ $current=$iv_ruleXAnnotationOrExpression.current; }
+	EOF;
 
 // Rule XAnnotationOrExpression
-ruleXAnnotationOrExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
-    }
-    this_XAnnotation_0=ruleXAnnotation
-    { 
-        $current = $this_XAnnotation_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
-    }
-    this_XExpression_1=ruleXExpression
-    { 
-        $current = $this_XExpression_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXAnnotationOrExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0());
+		}
+		this_XAnnotation_0=ruleXAnnotation
+		{
+			$current = $this_XAnnotation_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1());
+		}
+		this_XExpression_1=ruleXExpression
+		{
+			$current = $this_XExpression_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXExpression
-entryRuleXExpression returns [EObject current=null] 
-	:
+entryRuleXExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXExpressionRule()); }
-	 iv_ruleXExpression=ruleXExpression 
-	 { $current=$iv_ruleXExpression.current; } 
-	 EOF 
-;
+	iv_ruleXExpression=ruleXExpression
+	{ $current=$iv_ruleXExpression.current; }
+	EOF;
 
 // Rule XExpression
-ruleXExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-    { 
-        newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
-    }
-    this_XAssignment_0=ruleXAssignment
-    { 
-        $current = $this_XAssignment_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
+ruleXExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	{
+		newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall());
+	}
+	this_XAssignment_0=ruleXAssignment
+	{
+		$current = $this_XAssignment_0.current;
+		afterParserOrEnumRuleCall();
+	}
 ;
 
-
-
-
-
 // Entry rule entryRuleXAssignment
-entryRuleXAssignment returns [EObject current=null] 
-	:
+entryRuleXAssignment returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAssignmentRule()); }
-	 iv_ruleXAssignment=ruleXAssignment 
-	 { $current=$iv_ruleXAssignment.current; } 
-	 EOF 
-;
+	iv_ruleXAssignment=ruleXAssignment
+	{ $current=$iv_ruleXAssignment.current; }
+	EOF;
 
 // Rule XAssignment
-ruleXAssignment returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
-            $current);
-    }
-)(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAssignmentRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
-	    }
-		ruleFeatureCallID		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    { 
-        newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
-    }
-ruleOpSingleAssign
-    { 
-        afterParserOrEnumRuleCall();
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
-	    }
-		lv_value_3_0=ruleXAssignment		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_3_0, 
-        		"XAssignment");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |(
-    { 
-        newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
-    }
-    this_XOrExpression_4=ruleXOrExpression
-    { 
-        $current = $this_XOrExpression_4.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpMultiAssign
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-            $current);
-    }
-)(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAssignmentRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
-	    }
-		ruleOpMultiAssign		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
-	    }
-		lv_rightOperand_7_0=ruleXAssignment		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_7_0, 
-        		"XAssignment");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?))
+ruleXAssignment returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					$current = forceCreateModelElement(
+						grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+						$current);
+				}
+			)
+			(
+				(
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXAssignmentRule());
+						}
+					}
+					{
+						newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
+					}
+					ruleFeatureCallID
+					{
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			{
+				newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2());
+			}
+			ruleOpSingleAssign
+			{
+				afterParserOrEnumRuleCall();
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0());
+					}
+					lv_value_3_0=ruleXAssignment
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+						}
+						set(
+							$current,
+							"value",
+							lv_value_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XAssignment");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)
+		    |
+		(
+			{
+				newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0());
+			}
+			this_XOrExpression_4=ruleXOrExpression
+			{
+				$current = $this_XOrExpression_4.current;
+				afterParserOrEnumRuleCall();
+			}
+			(
+				(
+					((
+						(
+						)
+						(
+							(
+								ruleOpMultiAssign
+							)
+						)
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+									$current);
+							}
+						)
+						(
+							(
+								{
+									if ($current==null) {
+										$current = createModelElement(grammarAccess.getXAssignmentRule());
+									}
+								}
+								{
+									newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
+								}
+								ruleOpMultiAssign
+								{
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0());
+						}
+						lv_rightOperand_7_0=ruleXAssignment
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+							}
+							set(
+								$current,
+								"rightOperand",
+								lv_rightOperand_7_0,
+								"org.eclipse.xtext.xbase.Xbase.XAssignment");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)?
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpSingleAssign
-entryRuleOpSingleAssign returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpSingleAssignRule()); } 
-	 iv_ruleOpSingleAssign=ruleOpSingleAssign 
-	 { $current=$iv_ruleOpSingleAssign.current.getText(); }  
-	 EOF 
-;
+entryRuleOpSingleAssign returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpSingleAssignRule()); }
+	iv_ruleOpSingleAssign=ruleOpSingleAssign
+	{ $current=$iv_ruleOpSingleAssign.current.getText(); }
+	EOF;
 
 // Rule OpSingleAssign
-ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-	kw='=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
-    }
-
-    ;
-
-
-
-
+ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	kw='='
+	{
+		$current.merge(kw);
+		newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword());
+	}
+;
 
 // Entry rule entryRuleOpMultiAssign
-entryRuleOpMultiAssign returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpMultiAssignRule()); } 
-	 iv_ruleOpMultiAssign=ruleOpMultiAssign 
-	 { $current=$iv_ruleOpMultiAssign.current.getText(); }  
-	 EOF 
-;
+entryRuleOpMultiAssign returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpMultiAssignRule()); }
+	iv_ruleOpMultiAssign=ruleOpMultiAssign
+	{ $current=$iv_ruleOpMultiAssign.current.getText(); }
+	EOF;
 
 // Rule OpMultiAssign
-ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='+=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
-    }
-
-    |
-	kw='-=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
-    }
-
-    |
-	kw='*=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
-    }
-
-    |
-	kw='/=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
-    }
-
-    |
-	kw='%=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
-    }
-
-    |(
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
-    }
-
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
-    }
-
-	kw='=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
-    }
-)
-    |(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
-    }
-(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
-    }
-)?
-	kw='>=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
-    }
-))
-    ;
-
-
-
-
+ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='+='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0());
+		}
+		    |
+		kw='-='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1());
+		}
+		    |
+		kw='*='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2());
+		}
+		    |
+		kw='/='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3());
+		}
+		    |
+		kw='%='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4());
+		}
+		    |
+		(
+			kw='<'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0());
+			}
+			kw='<'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1());
+			}
+			kw='='
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2());
+			}
+		)
+		    |
+		(
+			kw='>'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0());
+			}
+			(
+				kw='>'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1());
+				}
+			)?
+			kw='>='
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2());
+			}
+		)
+	)
+;
 
 // Entry rule entryRuleXOrExpression
-entryRuleXOrExpression returns [EObject current=null] 
-	:
+entryRuleXOrExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXOrExpressionRule()); }
-	 iv_ruleXOrExpression=ruleXOrExpression 
-	 { $current=$iv_ruleXOrExpression.current; } 
-	 EOF 
-;
+	iv_ruleXOrExpression=ruleXOrExpression
+	{ $current=$iv_ruleXOrExpression.current; }
+	EOF;
 
 // Rule XOrExpression
-ruleXOrExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
-    }
-    this_XAndExpression_0=ruleXAndExpression
-    { 
-        $current = $this_XAndExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpOr
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXOrExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXOrExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpOr		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXAndExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XAndExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0());
+		}
+		this_XAndExpression_0=ruleXAndExpression
+		{
+			$current = $this_XAndExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpOr
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXOrExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpOr
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXAndExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XAndExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpOr
-entryRuleOpOr returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpOrRule()); } 
-	 iv_ruleOpOr=ruleOpOr 
-	 { $current=$iv_ruleOpOr.current.getText(); }  
-	 EOF 
-;
+entryRuleOpOr returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpOrRule()); }
+	iv_ruleOpOr=ruleOpOr
+	{ $current=$iv_ruleOpOr.current.getText(); }
+	EOF;
 
 // Rule OpOr
-ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-	kw='||' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
-    }
-
-    ;
-
-
-
-
+ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	kw='||'
+	{
+		$current.merge(kw);
+		newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword());
+	}
+;
 
 // Entry rule entryRuleXAndExpression
-entryRuleXAndExpression returns [EObject current=null] 
-	:
+entryRuleXAndExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAndExpressionRule()); }
-	 iv_ruleXAndExpression=ruleXAndExpression 
-	 { $current=$iv_ruleXAndExpression.current; } 
-	 EOF 
-;
+	iv_ruleXAndExpression=ruleXAndExpression
+	{ $current=$iv_ruleXAndExpression.current; }
+	EOF;
 
 // Rule XAndExpression
-ruleXAndExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
-    }
-    this_XEqualityExpression_0=ruleXEqualityExpression
-    { 
-        $current = $this_XEqualityExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpAnd
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXAndExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAndExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpAnd		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXEqualityExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XEqualityExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
+		}
+		this_XEqualityExpression_0=ruleXEqualityExpression
+		{
+			$current = $this_XEqualityExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpAnd
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXAndExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpAnd
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXEqualityExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XEqualityExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpAnd
-entryRuleOpAnd returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpAndRule()); } 
-	 iv_ruleOpAnd=ruleOpAnd 
-	 { $current=$iv_ruleOpAnd.current.getText(); }  
-	 EOF 
-;
+entryRuleOpAnd returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpAndRule()); }
+	iv_ruleOpAnd=ruleOpAnd
+	{ $current=$iv_ruleOpAnd.current.getText(); }
+	EOF;
 
 // Rule OpAnd
-ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-	kw='&&' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
-    }
-
-    ;
-
-
-
-
+ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	kw='&&'
+	{
+		$current.merge(kw);
+		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
+	}
+;
 
 // Entry rule entryRuleXEqualityExpression
-entryRuleXEqualityExpression returns [EObject current=null] 
-	:
+entryRuleXEqualityExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXEqualityExpressionRule()); }
-	 iv_ruleXEqualityExpression=ruleXEqualityExpression 
-	 { $current=$iv_ruleXEqualityExpression.current; } 
-	 EOF 
-;
+	iv_ruleXEqualityExpression=ruleXEqualityExpression
+	{ $current=$iv_ruleXEqualityExpression.current; }
+	EOF;
 
 // Rule XEqualityExpression
-ruleXEqualityExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
-    }
-    this_XRelationalExpression_0=ruleXRelationalExpression
-    { 
-        $current = $this_XRelationalExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpEquality
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXEqualityExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXEqualityExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpEquality		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXRelationalExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XRelationalExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0());
+		}
+		this_XRelationalExpression_0=ruleXRelationalExpression
+		{
+			$current = $this_XRelationalExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpEquality
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpEquality
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXRelationalExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XRelationalExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpEquality
-entryRuleOpEquality returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpEqualityRule()); } 
-	 iv_ruleOpEquality=ruleOpEquality 
-	 { $current=$iv_ruleOpEquality.current.getText(); }  
-	 EOF 
-;
+entryRuleOpEquality returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpEqualityRule()); }
+	iv_ruleOpEquality=ruleOpEquality
+	{ $current=$iv_ruleOpEquality.current.getText(); }
+	EOF;
 
 // Rule OpEquality
-ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='==' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
-    }
-
-    |
-	kw='!=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
-    }
-
-    |
-	kw='===' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
-    }
-
-    |
-	kw='!==' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='=='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0());
+		}
+		    |
+		kw='!='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1());
+		}
+		    |
+		kw='==='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2());
+		}
+		    |
+		kw='!=='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3());
+		}
+	)
+;
 
 // Entry rule entryRuleXRelationalExpression
-entryRuleXRelationalExpression returns [EObject current=null] 
-	:
+entryRuleXRelationalExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXRelationalExpressionRule()); }
-	 iv_ruleXRelationalExpression=ruleXRelationalExpression 
-	 { $current=$iv_ruleXRelationalExpression.current; } 
-	 EOF 
-;
+	iv_ruleXRelationalExpression=ruleXRelationalExpression
+	{ $current=$iv_ruleXRelationalExpression.current; }
+	EOF;
 
 // Rule XRelationalExpression
-ruleXRelationalExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
-    }
-    this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression
-    { 
-        $current = $this_XOtherOperatorExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-((((((
-)	'instanceof' 
-))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
-            $current);
-    }
-)	otherlv_2='instanceof' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
-	    }
-		lv_type_3_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"type",
-        		lv_type_3_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |(((((
-)(
-(
-		ruleOpCompare
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXRelationalExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXRelationalExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
-	    }
-		ruleOpCompare		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
-	    }
-		lv_rightOperand_6_0=ruleXOtherOperatorExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_6_0, 
-        		"XOtherOperatorExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))*)
+			newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0());
+		}
+		this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression
+		{
+			$current = $this_XOtherOperatorExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				(
+					((
+						(
+						)
+						'instanceof'
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+									$current);
+							}
+						)
+						otherlv_2='instanceof'
+						{
+							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0());
+						}
+						lv_type_3_0=ruleJvmTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+							}
+							set(
+								$current,
+								"type",
+								lv_type_3_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+			    |
+			(
+				(
+					((
+						(
+						)
+						(
+							(
+								ruleOpCompare
+							)
+						)
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+									$current);
+							}
+						)
+						(
+							(
+								{
+									if ($current==null) {
+										$current = createModelElement(grammarAccess.getXRelationalExpressionRule());
+									}
+								}
+								{
+									newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
+								}
+								ruleOpCompare
+								{
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0());
+						}
+						lv_rightOperand_6_0=ruleXOtherOperatorExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+							}
+							set(
+								$current,
+								"rightOperand",
+								lv_rightOperand_6_0,
+								"org.eclipse.xtext.xbase.Xbase.XOtherOperatorExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpCompare
-entryRuleOpCompare returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpCompareRule()); } 
-	 iv_ruleOpCompare=ruleOpCompare 
-	 { $current=$iv_ruleOpCompare.current.getText(); }  
-	 EOF 
-;
+entryRuleOpCompare returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpCompareRule()); }
+	iv_ruleOpCompare=ruleOpCompare
+	{ $current=$iv_ruleOpCompare.current.getText(); }
+	EOF;
 
 // Rule OpCompare
-ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='>=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
-    }
-
-    |(
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
-    }
-
-	kw='=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
-    }
-)
-    |
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
-    }
-
-    |
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='>='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0());
+		}
+		    |
+		(
+			kw='<'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
+			}
+			kw='='
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1());
+			}
+		)
+		    |
+		kw='>'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2());
+		}
+		    |
+		kw='<'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3());
+		}
+	)
+;
 
 // Entry rule entryRuleXOtherOperatorExpression
-entryRuleXOtherOperatorExpression returns [EObject current=null] 
-	:
+entryRuleXOtherOperatorExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); }
-	 iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression 
-	 { $current=$iv_ruleXOtherOperatorExpression.current; } 
-	 EOF 
-;
+	iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression
+	{ $current=$iv_ruleXOtherOperatorExpression.current; }
+	EOF;
 
 // Rule XOtherOperatorExpression
-ruleXOtherOperatorExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
-    }
-    this_XAdditiveExpression_0=ruleXAdditiveExpression
-    { 
-        $current = $this_XAdditiveExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpOther
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXOtherOperatorExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpOther		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXAdditiveExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XAdditiveExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0());
+		}
+		this_XAdditiveExpression_0=ruleXAdditiveExpression
+		{
+			$current = $this_XAdditiveExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpOther
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpOther
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXAdditiveExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XAdditiveExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpOther
-entryRuleOpOther returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpOtherRule()); } 
-	 iv_ruleOpOther=ruleOpOther 
-	 { $current=$iv_ruleOpOther.current.getText(); }  
-	 EOF 
-;
+entryRuleOpOther returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpOtherRule()); }
+	iv_ruleOpOther=ruleOpOther
+	{ $current=$iv_ruleOpOther.current.getText(); }
+	EOF;
 
 // Rule OpOther
-ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='->' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
-    }
-
-    |
-	kw='..<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
-    }
-
-    |(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
-    }
-
-	kw='..' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
-    }
-)
-    |
-	kw='..' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
-    }
-
-    |
-	kw='=>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
-    }
-
-    |(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
-    }
-((((
-	'>' 
-
-	'>' 
-))=>(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
-    }
-
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
-    }
-))
-    |
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
-    }
-))
-    |(
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
-    }
-((((
-	'<' 
-
-	'<' 
-))=>(
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
-    }
-
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
-    }
-))
-    |
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
-    }
-
-    |
-	kw='=>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
-    }
-))
-    |
-	kw='<>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
-    }
-
-    |
-	kw='?:' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='->'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0());
+		}
+		    |
+		kw='..<'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1());
+		}
+		    |
+		(
+			kw='>'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0());
+			}
+			kw='..'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1());
+			}
+		)
+		    |
+		kw='..'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3());
+		}
+		    |
+		kw='=>'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4());
+		}
+		    |
+		(
+			kw='>'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0());
+			}
+			(
+				(
+					((
+						'>'
+						'>'
+					)
+					)=>
+					(
+						kw='>'
+						{
+							$current.merge(kw);
+							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0());
+						}
+						kw='>'
+						{
+							$current.merge(kw);
+							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1());
+						}
+					)
+				)
+				    |
+				kw='>'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1());
+				}
+			)
+		)
+		    |
+		(
+			kw='<'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0());
+			}
+			(
+				(
+					((
+						'<'
+						'<'
+					)
+					)=>
+					(
+						kw='<'
+						{
+							$current.merge(kw);
+							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0());
+						}
+						kw='<'
+						{
+							$current.merge(kw);
+							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1());
+						}
+					)
+				)
+				    |
+				kw='<'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1());
+				}
+				    |
+				kw='=>'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2());
+				}
+			)
+		)
+		    |
+		kw='<>'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7());
+		}
+		    |
+		kw='?:'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8());
+		}
+	)
+;
 
 // Entry rule entryRuleXAdditiveExpression
-entryRuleXAdditiveExpression returns [EObject current=null] 
-	:
+entryRuleXAdditiveExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); }
-	 iv_ruleXAdditiveExpression=ruleXAdditiveExpression 
-	 { $current=$iv_ruleXAdditiveExpression.current; } 
-	 EOF 
-;
+	iv_ruleXAdditiveExpression=ruleXAdditiveExpression
+	{ $current=$iv_ruleXAdditiveExpression.current; }
+	EOF;
 
 // Rule XAdditiveExpression
-ruleXAdditiveExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
-    }
-    this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression
-    { 
-        $current = $this_XMultiplicativeExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpAdd
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXAdditiveExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpAdd		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXMultiplicativeExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XMultiplicativeExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0());
+		}
+		this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression
+		{
+			$current = $this_XMultiplicativeExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpAdd
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpAdd
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXMultiplicativeExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XMultiplicativeExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpAdd
-entryRuleOpAdd returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpAddRule()); } 
-	 iv_ruleOpAdd=ruleOpAdd 
-	 { $current=$iv_ruleOpAdd.current.getText(); }  
-	 EOF 
-;
+entryRuleOpAdd returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpAddRule()); }
+	iv_ruleOpAdd=ruleOpAdd
+	{ $current=$iv_ruleOpAdd.current.getText(); }
+	EOF;
 
 // Rule OpAdd
-ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='+' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
-    }
-
-    |
-	kw='-' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='+'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0());
+		}
+		    |
+		kw='-'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1());
+		}
+	)
+;
 
 // Entry rule entryRuleXMultiplicativeExpression
-entryRuleXMultiplicativeExpression returns [EObject current=null] 
-	:
+entryRuleXMultiplicativeExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); }
-	 iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression 
-	 { $current=$iv_ruleXMultiplicativeExpression.current; } 
-	 EOF 
-;
+	iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression
+	{ $current=$iv_ruleXMultiplicativeExpression.current; }
+	EOF;
 
 // Rule XMultiplicativeExpression
-ruleXMultiplicativeExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
-    }
-    this_XUnaryOperation_0=ruleXUnaryOperation
-    { 
-        $current = $this_XUnaryOperation_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpMulti
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXMultiplicativeExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpMulti		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXUnaryOperation		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XUnaryOperation");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0());
+		}
+		this_XUnaryOperation_0=ruleXUnaryOperation
+		{
+			$current = $this_XUnaryOperation_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpMulti
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpMulti
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXUnaryOperation
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XUnaryOperation");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpMulti
-entryRuleOpMulti returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpMultiRule()); } 
-	 iv_ruleOpMulti=ruleOpMulti 
-	 { $current=$iv_ruleOpMulti.current.getText(); }  
-	 EOF 
-;
+entryRuleOpMulti returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpMultiRule()); }
+	iv_ruleOpMulti=ruleOpMulti
+	{ $current=$iv_ruleOpMulti.current.getText(); }
+	EOF;
 
 // Rule OpMulti
-ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='*' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
-    }
-
-    |
-	kw='**' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
-    }
-
-    |
-	kw='/' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
-    }
-
-    |
-	kw='%' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='*'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0());
+		}
+		    |
+		kw='**'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1());
+		}
+		    |
+		kw='/'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2());
+		}
+		    |
+		kw='%'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3());
+		}
+	)
+;
 
 // Entry rule entryRuleXUnaryOperation
-entryRuleXUnaryOperation returns [EObject current=null] 
-	:
+entryRuleXUnaryOperation returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXUnaryOperationRule()); }
-	 iv_ruleXUnaryOperation=ruleXUnaryOperation 
-	 { $current=$iv_ruleXUnaryOperation.current; } 
-	 EOF 
-;
+	iv_ruleXUnaryOperation=ruleXUnaryOperation
+	{ $current=$iv_ruleXUnaryOperation.current; }
+	EOF;
 
 // Rule XUnaryOperation
-ruleXUnaryOperation returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
-            $current);
-    }
-)(
-(
+ruleXUnaryOperation returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					$current = forceCreateModelElement(
+						grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+						$current);
+				}
+			)
+			(
+				(
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXUnaryOperationRule());
+						}
+					}
+					{
+						newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
+					}
+					ruleOpUnary
+					{
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0());
+					}
+					lv_operand_2_0=ruleXUnaryOperation
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
+						}
+						set(
+							$current,
+							"operand",
+							lv_operand_2_0,
+							"org.eclipse.xtext.xbase.Xbase.XUnaryOperation");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)
+		    |
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXUnaryOperationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
-	    }
-		ruleOpUnary		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
-	    }
-		lv_operand_2_0=ruleXUnaryOperation		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
-	        }
-       		set(
-       			$current, 
-       			"operand",
-        		lv_operand_2_0, 
-        		"XUnaryOperation");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |
-    { 
-        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
-    }
-    this_XCastedExpression_3=ruleXCastedExpression
-    { 
-        $current = $this_XCastedExpression_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+			newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1());
+		}
+		this_XCastedExpression_3=ruleXCastedExpression
+		{
+			$current = $this_XCastedExpression_3.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpUnary
-entryRuleOpUnary returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpUnaryRule()); } 
-	 iv_ruleOpUnary=ruleOpUnary 
-	 { $current=$iv_ruleOpUnary.current.getText(); }  
-	 EOF 
-;
+entryRuleOpUnary returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpUnaryRule()); }
+	iv_ruleOpUnary=ruleOpUnary
+	{ $current=$iv_ruleOpUnary.current.getText(); }
+	EOF;
 
 // Rule OpUnary
-ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='!' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
-    }
-
-    |
-	kw='-' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
-    }
-
-    |
-	kw='+' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='!'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0());
+		}
+		    |
+		kw='-'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1());
+		}
+		    |
+		kw='+'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2());
+		}
+	)
+;
 
 // Entry rule entryRuleXCastedExpression
-entryRuleXCastedExpression returns [EObject current=null] 
-	:
+entryRuleXCastedExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXCastedExpressionRule()); }
-	 iv_ruleXCastedExpression=ruleXCastedExpression 
-	 { $current=$iv_ruleXCastedExpression.current; } 
-	 EOF 
-;
+	iv_ruleXCastedExpression=ruleXCastedExpression
+	{ $current=$iv_ruleXCastedExpression.current; }
+	EOF;
 
 // Rule XCastedExpression
-ruleXCastedExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
-    }
-    this_XPostfixOperation_0=ruleXPostfixOperation
-    { 
-        $current = $this_XPostfixOperation_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)	'as' 
-))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
-            $current);
-    }
-)	otherlv_2='as' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
-	    }
-		lv_type_3_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"type",
-        		lv_type_3_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+ruleXCastedExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0());
+		}
+		this_XPostfixOperation_0=ruleXPostfixOperation
+		{
+			$current = $this_XPostfixOperation_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					'as'
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+								$current);
+						}
+					)
+					otherlv_2='as'
+					{
+						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0());
+					}
+					lv_type_3_0=ruleJvmTypeReference
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
+						}
+						set(
+							$current,
+							"type",
+							lv_type_3_0,
+							"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXPostfixOperation
-entryRuleXPostfixOperation returns [EObject current=null] 
-	:
+entryRuleXPostfixOperation returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXPostfixOperationRule()); }
-	 iv_ruleXPostfixOperation=ruleXPostfixOperation 
-	 { $current=$iv_ruleXPostfixOperation.current; } 
-	 EOF 
-;
+	iv_ruleXPostfixOperation=ruleXPostfixOperation
+	{ $current=$iv_ruleXPostfixOperation.current; }
+	EOF;
 
 // Rule XPostfixOperation
-ruleXPostfixOperation returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
-    }
-    this_XMemberFeatureCall_0=ruleXMemberFeatureCall
-    { 
-        $current = $this_XMemberFeatureCall_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-((((
-)(
-(
-		ruleOpPostfix
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
-            $current);
-    }
-)(
-(
+ruleXPostfixOperation returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXPostfixOperationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
-	    }
-		ruleOpPostfix		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))?)
+			newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0());
+		}
+		this_XMemberFeatureCall_0=ruleXMemberFeatureCall
+		{
+			$current = $this_XMemberFeatureCall_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			((
+				(
+				)
+				(
+					(
+						ruleOpPostfix
+					)
+				)
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElementAndSet(
+							grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+							$current);
+					}
+				)
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXPostfixOperationRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0());
+						}
+						ruleOpPostfix
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpPostfix
-entryRuleOpPostfix returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpPostfixRule()); } 
-	 iv_ruleOpPostfix=ruleOpPostfix 
-	 { $current=$iv_ruleOpPostfix.current.getText(); }  
-	 EOF 
-;
+entryRuleOpPostfix returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpPostfixRule()); }
+	iv_ruleOpPostfix=ruleOpPostfix
+	{ $current=$iv_ruleOpPostfix.current.getText(); }
+	EOF;
 
 // Rule OpPostfix
-ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='++' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
-    }
-
-    |
-	kw='--' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='++'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0());
+		}
+		    |
+		kw='--'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1());
+		}
+	)
+;
 
 // Entry rule entryRuleXMemberFeatureCall
-entryRuleXMemberFeatureCall returns [EObject current=null] 
-	:
+entryRuleXMemberFeatureCall returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); }
-	 iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall 
-	 { $current=$iv_ruleXMemberFeatureCall.current; } 
-	 EOF 
-;
+	iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall
+	{ $current=$iv_ruleXMemberFeatureCall.current; }
+	EOF;
 
 // Rule XMemberFeatureCall
-ruleXMemberFeatureCall returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
-    }
-    this_XPrimaryExpression_0=ruleXPrimaryExpression
-    { 
-        $current = $this_XPrimaryExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-((((((
-)(	'.' 
-
-    |(
-(
-	'::' 
- 
-
-)
-))(
-(
-		ruleFeatureCallID
-)
-)	ruleOpSingleAssign))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
-            $current);
-    }
-)(	otherlv_2='.' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
-    }
-
-    |(
-(
-		lv_explicitStatic_3_0=	'::' 
-    {
-        newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitStatic", true, "::");
-	    }
-
-)
-))(
-(
+ruleXMemberFeatureCall returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
-	    }
-		ruleFeatureCallID		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    { 
-        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
-    }
-ruleOpSingleAssign
-    { 
-        afterParserOrEnumRuleCall();
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
-	    }
-		lv_value_6_0=ruleXAssignment		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_6_0, 
-        		"XAssignment");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |(((((
-)(	'.' 
-
-    |(
-(
-	'?.' 
- 
-
-)
-)
-    |(
-(
-	'::' 
- 
-
-)
-))))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
-            $current);
-    }
-)(	otherlv_8='.' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
-    }
-
-    |(
-(
-		lv_nullSafe_9_0=	'?.' 
-    {
-        newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "nullSafe", true, "?.");
-	    }
-
-)
-)
-    |(
-(
-		lv_explicitStatic_10_0=	'::' 
-    {
-        newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitStatic", true, "::");
-	    }
-
-)
-))))(	otherlv_11='<' 
-    {
-    	newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
-	    }
-		lv_typeArguments_12_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_12_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_13=',' 
-    {
-    	newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
-	    }
-		lv_typeArguments_14_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_14_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_15='>' 
-    {
-    	newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
-    }
-)?(
-(
+			newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0());
+		}
+		this_XPrimaryExpression_0=ruleXPrimaryExpression
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
-	    }
-		ruleIdOrSuper		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((
-(
-	'(' 
- 
-
-)
-)=>
-(
-		lv_explicitOperationCall_17_0=	'(' 
-    {
-        newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitOperationCall", true, "(");
-	    }
-
-)
-)(((((
-)((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
-	    }
-		lv_memberCallArguments_18_0=ruleXShortClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"memberCallArguments",
-        		lv_memberCallArguments_18_0, 
-        		"XShortClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    |((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
-	    }
-		lv_memberCallArguments_19_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"memberCallArguments",
-        		lv_memberCallArguments_19_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_20=',' 
-    {
-    	newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
-	    }
-		lv_memberCallArguments_21_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"memberCallArguments",
-        		lv_memberCallArguments_21_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*))?	otherlv_22=')' 
-    {
-    	newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
-    }
-)?((((
-)	'[' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
-	    }
-		lv_memberCallArguments_23_0=ruleXClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"memberCallArguments",
-        		lv_memberCallArguments_23_0, 
-        		"XClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?))*)
+			$current = $this_XPrimaryExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				(
+					((
+						(
+						)
+						(
+							'.'
+							    |
+							(
+								(
+									'::'
+								)
+							)
+						)
+						(
+							(
+								ruleFeatureCallID
+							)
+						)
+						ruleOpSingleAssign
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
+									$current);
+							}
+						)
+						(
+							otherlv_2='.'
+							{
+								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
+							}
+							    |
+							(
+								(
+									lv_explicitStatic_3_0='::'
+									{
+										newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+										}
+										setWithLastConsumed($current, "explicitStatic", true, "::");
+									}
+								)
+							)
+						)
+						(
+							(
+								{
+									if ($current==null) {
+										$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+									}
+								}
+								{
+									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0());
+								}
+								ruleFeatureCallID
+								{
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+						{
+							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3());
+						}
+						ruleOpSingleAssign
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0());
+						}
+						lv_value_6_0=ruleXAssignment
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+							}
+							set(
+								$current,
+								"value",
+								lv_value_6_0,
+								"org.eclipse.xtext.xbase.Xbase.XAssignment");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+			    |
+			(
+				(
+					((
+						(
+						)
+						(
+							'.'
+							    |
+							(
+								(
+									'?.'
+								)
+							)
+							    |
+							(
+								(
+									'::'
+								)
+							)
+						)
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
+									$current);
+							}
+						)
+						(
+							otherlv_8='.'
+							{
+								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
+							}
+							    |
+							(
+								(
+									lv_nullSafe_9_0='?.'
+									{
+										newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+										}
+										setWithLastConsumed($current, "nullSafe", true, "?.");
+									}
+								)
+							)
+							    |
+							(
+								(
+									lv_explicitStatic_10_0='::'
+									{
+										newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+										}
+										setWithLastConsumed($current, "explicitStatic", true, "::");
+									}
+								)
+							)
+						)
+					)
+				)
+				(
+					otherlv_11='<'
+					{
+						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0());
+							}
+							lv_typeArguments_12_0=ruleJvmArgumentTypeReference
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+								}
+								add(
+									$current,
+									"typeArguments",
+									lv_typeArguments_12_0,
+									"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_13=','
+						{
+							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0());
+								}
+								lv_typeArguments_14_0=ruleJvmArgumentTypeReference
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+									}
+									add(
+										$current,
+										"typeArguments",
+										lv_typeArguments_14_0,
+										"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+					otherlv_15='>'
+					{
+						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
+					}
+				)?
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0());
+						}
+						ruleIdOrSuper
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						((
+							'('
+						)
+						)=>
+						(
+							lv_explicitOperationCall_17_0='('
+							{
+								newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
+							}
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+								}
+								setWithLastConsumed($current, "explicitOperationCall", true, "(");
+							}
+						)
+					)
+					(
+						(
+							((
+								(
+								)
+								(
+									(
+										(
+											ruleJvmFormalParameter
+										)
+									)
+									(
+										','
+										(
+											(
+												ruleJvmFormalParameter
+											)
+										)
+									)*
+								)?
+								(
+									(
+										'|'
+									)
+								)
+							)
+							)=>
+							(
+								{
+									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0());
+								}
+								lv_memberCallArguments_18_0=ruleXShortClosure
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+									}
+									add(
+										$current,
+										"memberCallArguments",
+										lv_memberCallArguments_18_0,
+										"org.eclipse.xtext.xbase.Xbase.XShortClosure");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+						    |
+						(
+							(
+								(
+									{
+										newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0());
+									}
+									lv_memberCallArguments_19_0=ruleXExpression
+									{
+										if ($current==null) {
+											$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+										}
+										add(
+											$current,
+											"memberCallArguments",
+											lv_memberCallArguments_19_0,
+											"org.eclipse.xtext.xbase.Xbase.XExpression");
+										afterParserOrEnumRuleCall();
+									}
+								)
+							)
+							(
+								otherlv_20=','
+								{
+									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
+								}
+								(
+									(
+										{
+											newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0());
+										}
+										lv_memberCallArguments_21_0=ruleXExpression
+										{
+											if ($current==null) {
+												$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+											}
+											add(
+												$current,
+												"memberCallArguments",
+												lv_memberCallArguments_21_0,
+												"org.eclipse.xtext.xbase.Xbase.XExpression");
+											afterParserOrEnumRuleCall();
+										}
+									)
+								)
+							)*
+						)
+					)?
+					otherlv_22=')'
+					{
+						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
+					}
+				)?
+				(
+					((
+						(
+						)
+						'['
+					)
+					)=>
+					(
+						{
+							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0());
+						}
+						lv_memberCallArguments_23_0=ruleXClosure
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+							}
+							add(
+								$current,
+								"memberCallArguments",
+								lv_memberCallArguments_23_0,
+								"org.eclipse.xtext.xbase.Xbase.XClosure");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)?
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXPrimaryExpression
-entryRuleXPrimaryExpression returns [EObject current=null] 
-	:
+entryRuleXPrimaryExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); }
-	 iv_ruleXPrimaryExpression=ruleXPrimaryExpression 
-	 { $current=$iv_ruleXPrimaryExpression.current; } 
-	 EOF 
-;
+	iv_ruleXPrimaryExpression=ruleXPrimaryExpression
+	{ $current=$iv_ruleXPrimaryExpression.current; }
+	EOF;
 
 // Rule XPrimaryExpression
-ruleXPrimaryExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
-    }
-    this_XConstructorCall_0=ruleXConstructorCall
-    { 
-        $current = $this_XConstructorCall_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
-    }
-    this_XBlockExpression_1=ruleXBlockExpression
-    { 
-        $current = $this_XBlockExpression_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
-    }
-    this_XSwitchExpression_2=ruleXSwitchExpression
-    { 
-        $current = $this_XSwitchExpression_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |((((
-)	'synchronized' 
-	'(' 
-))=>
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
-    }
-    this_XSynchronizedExpression_3=ruleXSynchronizedExpression
-    { 
-        $current = $this_XSynchronizedExpression_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
-    }
-    this_XFeatureCall_4=ruleXFeatureCall
-    { 
-        $current = $this_XFeatureCall_4.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
-    }
-    this_XLiteral_5=ruleXLiteral
-    { 
-        $current = $this_XLiteral_5.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
-    }
-    this_XIfExpression_6=ruleXIfExpression
-    { 
-        $current = $this_XIfExpression_6.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |((((
-)	'for' 
-	'(' 
-(
-(
-ruleJvmFormalParameter
-)
-)	':' 
-))=>
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
-    }
-    this_XForLoopExpression_7=ruleXForLoopExpression
-    { 
-        $current = $this_XForLoopExpression_7.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
-    }
-    this_XBasicForLoopExpression_8=ruleXBasicForLoopExpression
-    { 
-        $current = $this_XBasicForLoopExpression_8.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
-    }
-    this_XWhileExpression_9=ruleXWhileExpression
-    { 
-        $current = $this_XWhileExpression_9.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
-    }
-    this_XDoWhileExpression_10=ruleXDoWhileExpression
-    { 
-        $current = $this_XDoWhileExpression_10.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
-    }
-    this_XThrowExpression_11=ruleXThrowExpression
-    { 
-        $current = $this_XThrowExpression_11.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
-    }
-    this_XReturnExpression_12=ruleXReturnExpression
-    { 
-        $current = $this_XReturnExpression_12.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
-    }
-    this_XTryCatchFinallyExpression_13=ruleXTryCatchFinallyExpression
-    { 
-        $current = $this_XTryCatchFinallyExpression_13.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
-    }
-    this_XParenthesizedExpression_14=ruleXParenthesizedExpression
-    { 
-        $current = $this_XParenthesizedExpression_14.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXPrimaryExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0());
+		}
+		this_XConstructorCall_0=ruleXConstructorCall
+		{
+			$current = $this_XConstructorCall_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1());
+		}
+		this_XBlockExpression_1=ruleXBlockExpression
+		{
+			$current = $this_XBlockExpression_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2());
+		}
+		this_XSwitchExpression_2=ruleXSwitchExpression
+		{
+			$current = $this_XSwitchExpression_2.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		(
+			((
+				(
+				)
+				'synchronized'
+				'('
+			)
+			)=>
+			{
+				newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3());
+			}
+			this_XSynchronizedExpression_3=ruleXSynchronizedExpression
+			{
+				$current = $this_XSynchronizedExpression_3.current;
+				afterParserOrEnumRuleCall();
+			}
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4());
+		}
+		this_XFeatureCall_4=ruleXFeatureCall
+		{
+			$current = $this_XFeatureCall_4.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5());
+		}
+		this_XLiteral_5=ruleXLiteral
+		{
+			$current = $this_XLiteral_5.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6());
+		}
+		this_XIfExpression_6=ruleXIfExpression
+		{
+			$current = $this_XIfExpression_6.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		(
+			((
+				(
+				)
+				'for'
+				'('
+				(
+					(
+						ruleJvmFormalParameter
+					)
+				)
+				':'
+			)
+			)=>
+			{
+				newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7());
+			}
+			this_XForLoopExpression_7=ruleXForLoopExpression
+			{
+				$current = $this_XForLoopExpression_7.current;
+				afterParserOrEnumRuleCall();
+			}
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8());
+		}
+		this_XBasicForLoopExpression_8=ruleXBasicForLoopExpression
+		{
+			$current = $this_XBasicForLoopExpression_8.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9());
+		}
+		this_XWhileExpression_9=ruleXWhileExpression
+		{
+			$current = $this_XWhileExpression_9.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10());
+		}
+		this_XDoWhileExpression_10=ruleXDoWhileExpression
+		{
+			$current = $this_XDoWhileExpression_10.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11());
+		}
+		this_XThrowExpression_11=ruleXThrowExpression
+		{
+			$current = $this_XThrowExpression_11.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12());
+		}
+		this_XReturnExpression_12=ruleXReturnExpression
+		{
+			$current = $this_XReturnExpression_12.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13());
+		}
+		this_XTryCatchFinallyExpression_13=ruleXTryCatchFinallyExpression
+		{
+			$current = $this_XTryCatchFinallyExpression_13.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14());
+		}
+		this_XParenthesizedExpression_14=ruleXParenthesizedExpression
+		{
+			$current = $this_XParenthesizedExpression_14.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXLiteral
-entryRuleXLiteral returns [EObject current=null] 
-	:
+entryRuleXLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXLiteralRule()); }
-	 iv_ruleXLiteral=ruleXLiteral 
-	 { $current=$iv_ruleXLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXLiteral=ruleXLiteral
+	{ $current=$iv_ruleXLiteral.current; }
+	EOF;
 
 // Rule XLiteral
-ruleXLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
-    }
-    this_XCollectionLiteral_0=ruleXCollectionLiteral
-    { 
-        $current = $this_XCollectionLiteral_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |((((
-)	'[' 
-))=>
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
-    }
-    this_XClosure_1=ruleXClosure
-    { 
-        $current = $this_XClosure_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
-    }
-    this_XBooleanLiteral_2=ruleXBooleanLiteral
-    { 
-        $current = $this_XBooleanLiteral_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
-    }
-    this_XNumberLiteral_3=ruleXNumberLiteral
-    { 
-        $current = $this_XNumberLiteral_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
-    }
-    this_XNullLiteral_4=ruleXNullLiteral
-    { 
-        $current = $this_XNullLiteral_4.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
-    }
-    this_XStringLiteral_5=ruleXStringLiteral
-    { 
-        $current = $this_XStringLiteral_5.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
-    }
-    this_XTypeLiteral_6=ruleXTypeLiteral
-    { 
-        $current = $this_XTypeLiteral_6.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0());
+		}
+		this_XCollectionLiteral_0=ruleXCollectionLiteral
+		{
+			$current = $this_XCollectionLiteral_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		(
+			((
+				(
+				)
+				'['
+			)
+			)=>
+			{
+				newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1());
+			}
+			this_XClosure_1=ruleXClosure
+			{
+				$current = $this_XClosure_1.current;
+				afterParserOrEnumRuleCall();
+			}
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2());
+		}
+		this_XBooleanLiteral_2=ruleXBooleanLiteral
+		{
+			$current = $this_XBooleanLiteral_2.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3());
+		}
+		this_XNumberLiteral_3=ruleXNumberLiteral
+		{
+			$current = $this_XNumberLiteral_3.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4());
+		}
+		this_XNullLiteral_4=ruleXNullLiteral
+		{
+			$current = $this_XNullLiteral_4.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5());
+		}
+		this_XStringLiteral_5=ruleXStringLiteral
+		{
+			$current = $this_XStringLiteral_5.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6());
+		}
+		this_XTypeLiteral_6=ruleXTypeLiteral
+		{
+			$current = $this_XTypeLiteral_6.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXCollectionLiteral
-entryRuleXCollectionLiteral returns [EObject current=null] 
-	:
+entryRuleXCollectionLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXCollectionLiteralRule()); }
-	 iv_ruleXCollectionLiteral=ruleXCollectionLiteral 
-	 { $current=$iv_ruleXCollectionLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXCollectionLiteral=ruleXCollectionLiteral
+	{ $current=$iv_ruleXCollectionLiteral.current; }
+	EOF;
 
 // Rule XCollectionLiteral
-ruleXCollectionLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
-    }
-    this_XSetLiteral_0=ruleXSetLiteral
-    { 
-        $current = $this_XSetLiteral_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
-    }
-    this_XListLiteral_1=ruleXListLiteral
-    { 
-        $current = $this_XListLiteral_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXCollectionLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0());
+		}
+		this_XSetLiteral_0=ruleXSetLiteral
+		{
+			$current = $this_XSetLiteral_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1());
+		}
+		this_XListLiteral_1=ruleXListLiteral
+		{
+			$current = $this_XListLiteral_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXSetLiteral
-entryRuleXSetLiteral returns [EObject current=null] 
-	:
+entryRuleXSetLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXSetLiteralRule()); }
-	 iv_ruleXSetLiteral=ruleXSetLiteral 
-	 { $current=$iv_ruleXSetLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXSetLiteral=ruleXSetLiteral
+	{ $current=$iv_ruleXSetLiteral.current; }
+	EOF;
 
 // Rule XSetLiteral
-ruleXSetLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
-            $current);
-    }
-)	otherlv_1='#' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
-    }
-	otherlv_2='{' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
-	    }
-		lv_elements_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
-	    }
-		lv_elements_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6='}' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
-    }
-)
+ruleXSetLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='#'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
+		}
+		otherlv_2='{'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+					}
+					lv_elements_3_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+						}
+						add(
+							$current,
+							"elements",
+							lv_elements_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_4=','
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+						}
+						lv_elements_5_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+							}
+							add(
+								$current,
+								"elements",
+								lv_elements_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+		)?
+		otherlv_6='}'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXListLiteral
-entryRuleXListLiteral returns [EObject current=null] 
-	:
+entryRuleXListLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXListLiteralRule()); }
-	 iv_ruleXListLiteral=ruleXListLiteral 
-	 { $current=$iv_ruleXListLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXListLiteral=ruleXListLiteral
+	{ $current=$iv_ruleXListLiteral.current; }
+	EOF;
 
 // Rule XListLiteral
-ruleXListLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
-            $current);
-    }
-)	otherlv_1='#' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
-    }
-	otherlv_2='[' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
-	    }
-		lv_elements_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
-	    }
-		lv_elements_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6=']' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
-    }
-)
+ruleXListLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='#'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
+		}
+		otherlv_2='['
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+					}
+					lv_elements_3_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+						}
+						add(
+							$current,
+							"elements",
+							lv_elements_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_4=','
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+						}
+						lv_elements_5_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+							}
+							add(
+								$current,
+								"elements",
+								lv_elements_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+		)?
+		otherlv_6=']'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXClosure
-entryRuleXClosure returns [EObject current=null] 
-	:
+entryRuleXClosure returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXClosureRule()); }
-	 iv_ruleXClosure=ruleXClosure 
-	 { $current=$iv_ruleXClosure.current; } 
-	 EOF 
-;
+	iv_ruleXClosure=ruleXClosure
+	{ $current=$iv_ruleXClosure.current; }
+	EOF;
 
 // Rule XClosure
-ruleXClosure returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-)	'[' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
-            $current);
-    }
-)	otherlv_1='[' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
-    }
-))(((((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>(((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
-	    }
-		lv_declaredFormalParameters_2_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"declaredFormalParameters",
-        		lv_declaredFormalParameters_2_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3=',' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
-	    }
-		lv_declaredFormalParameters_4_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"declaredFormalParameters",
-        		lv_declaredFormalParameters_4_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?(
-(
-		lv_explicitSyntax_5_0=	'|' 
-    {
-        newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXClosureRule());
-	        }
-       		setWithLastConsumed($current, "explicitSyntax", true, "|");
-	    }
-
-)
-)))?(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
-	    }
-		lv_expression_6_0=ruleXExpressionInClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_6_0, 
-        		"XExpressionInClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_7=']' 
-    {
-    	newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
-    }
-)
+ruleXClosure returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+				)
+				'['
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElement(
+							grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
+							$current);
+					}
+				)
+				otherlv_1='['
+				{
+					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
+				}
+			)
+		)
+		(
+			((
+				(
+					(
+						(
+							ruleJvmFormalParameter
+						)
+					)
+					(
+						','
+						(
+							(
+								ruleJvmFormalParameter
+							)
+						)
+					)*
+				)?
+				(
+					(
+						'|'
+					)
+				)
+			)
+			)=>
+			(
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0());
+							}
+							lv_declaredFormalParameters_2_0=ruleJvmFormalParameter
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXClosureRule());
+								}
+								add(
+									$current,
+									"declaredFormalParameters",
+									lv_declaredFormalParameters_2_0,
+									"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_3=','
+						{
+							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0());
+								}
+								lv_declaredFormalParameters_4_0=ruleJvmFormalParameter
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXClosureRule());
+									}
+									add(
+										$current,
+										"declaredFormalParameters",
+										lv_declaredFormalParameters_4_0,
+										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)?
+				(
+					(
+						lv_explicitSyntax_5_0='|'
+						{
+							newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXClosureRule());
+							}
+							setWithLastConsumed($current, "explicitSyntax", true, "|");
+						}
+					)
+				)
+			)
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0());
+				}
+				lv_expression_6_0=ruleXExpressionInClosure
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXClosureRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_6_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpressionInClosure");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_7=']'
+		{
+			newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXExpressionInClosure
-entryRuleXExpressionInClosure returns [EObject current=null] 
-	:
+entryRuleXExpressionInClosure returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXExpressionInClosureRule()); }
-	 iv_ruleXExpressionInClosure=ruleXExpressionInClosure 
-	 { $current=$iv_ruleXExpressionInClosure.current; } 
-	 EOF 
-;
+	iv_ruleXExpressionInClosure=ruleXExpressionInClosure
+	{ $current=$iv_ruleXExpressionInClosure.current; }
+	EOF;
 
 // Rule XExpressionInClosure
-ruleXExpressionInClosure returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
-            $current);
-    }
-)((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
-	    }
-		lv_expressions_1_0=ruleXExpressionOrVarDeclaration		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"expressions",
-        		lv_expressions_1_0, 
-        		"XExpressionOrVarDeclaration");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_2=';' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
-    }
-)?)*)
+ruleXExpressionInClosure returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0());
+					}
+					lv_expressions_1_0=ruleXExpressionOrVarDeclaration
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
+						}
+						add(
+							$current,
+							"expressions",
+							lv_expressions_1_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_2=';'
+				{
+					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+				}
+			)?
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXShortClosure
-entryRuleXShortClosure returns [EObject current=null] 
-	:
+entryRuleXShortClosure returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXShortClosureRule()); }
-	 iv_ruleXShortClosure=ruleXShortClosure 
-	 { $current=$iv_ruleXShortClosure.current; } 
-	 EOF 
-;
+	iv_ruleXShortClosure=ruleXShortClosure
+	{ $current=$iv_ruleXShortClosure.current; }
+	EOF;
 
 // Rule XShortClosure
-ruleXShortClosure returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-)((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
-            $current);
-    }
-)((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
-	    }
-		lv_declaredFormalParameters_1_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"declaredFormalParameters",
-        		lv_declaredFormalParameters_1_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_2=',' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
-	    }
-		lv_declaredFormalParameters_3_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"declaredFormalParameters",
-        		lv_declaredFormalParameters_3_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?(
-(
-		lv_explicitSyntax_4_0=	'|' 
-    {
-        newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXShortClosureRule());
-	        }
-       		setWithLastConsumed($current, "explicitSyntax", true, "|");
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
-	    }
-		lv_expression_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXShortClosure returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+				)
+				(
+					(
+						(
+							ruleJvmFormalParameter
+						)
+					)
+					(
+						','
+						(
+							(
+								ruleJvmFormalParameter
+							)
+						)
+					)*
+				)?
+				(
+					(
+						'|'
+					)
+				)
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElement(
+							grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
+							$current);
+					}
+				)
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0());
+							}
+							lv_declaredFormalParameters_1_0=ruleJvmFormalParameter
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+								}
+								add(
+									$current,
+									"declaredFormalParameters",
+									lv_declaredFormalParameters_1_0,
+									"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_2=','
+						{
+							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0());
+								}
+								lv_declaredFormalParameters_3_0=ruleJvmFormalParameter
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+									}
+									add(
+										$current,
+										"declaredFormalParameters",
+										lv_declaredFormalParameters_3_0,
+										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)?
+				(
+					(
+						lv_explicitSyntax_4_0='|'
+						{
+							newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXShortClosureRule());
+							}
+							setWithLastConsumed($current, "explicitSyntax", true, "|");
+						}
+					)
+				)
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0());
+				}
+				lv_expression_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXParenthesizedExpression
-entryRuleXParenthesizedExpression returns [EObject current=null] 
-	:
+entryRuleXParenthesizedExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); }
-	 iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression 
-	 { $current=$iv_ruleXParenthesizedExpression.current; } 
-	 EOF 
-;
+	iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression
+	{ $current=$iv_ruleXParenthesizedExpression.current; }
+	EOF;
 
 // Rule XParenthesizedExpression
-ruleXParenthesizedExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='(' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
-    }
-
-    { 
-        newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
-    }
-    this_XExpression_1=ruleXExpression
-    { 
-        $current = $this_XExpression_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-	otherlv_2=')' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXIfExpression
-entryRuleXIfExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXIfExpressionRule()); }
-	 iv_ruleXIfExpression=ruleXIfExpression 
-	 { $current=$iv_ruleXIfExpression.current; } 
-	 EOF 
-;
-
-// Rule XIfExpression
-ruleXIfExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='if' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
-	    }
-		lv_if_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"if",
-        		lv_if_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=')' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
-	    }
-		lv_then_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"then",
-        		lv_then_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'else' 
-)=>	otherlv_6='else' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
-	    }
-		lv_else_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"else",
-        		lv_else_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
-;
-
-
-
-
-
-// Entry rule entryRuleXSwitchExpression
-entryRuleXSwitchExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXSwitchExpressionRule()); }
-	 iv_ruleXSwitchExpression=ruleXSwitchExpression 
-	 { $current=$iv_ruleXSwitchExpression.current; } 
-	 EOF 
-;
-
-// Rule XSwitchExpression
-ruleXSwitchExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='switch' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
-    }
-(((((	'(' 
-(
-(
-ruleJvmFormalParameter
-)
-)	':' 
-))=>(	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
-	    }
-		lv_declaredParam_3_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"declaredParam",
-        		lv_declaredParam_3_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=':' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
-	    }
-		lv_switch_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"switch",
-        		lv_switch_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_6=')' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
-    }
-)
-    |(((((
-(
-ruleJvmFormalParameter
-)
-)	':' 
-))=>((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
-	    }
-		lv_declaredParam_7_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"declaredParam",
-        		lv_declaredParam_7_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_8=':' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
-    }
-))?(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
-	    }
-		lv_switch_9_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"switch",
-        		lv_switch_9_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))	otherlv_10='{' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
-	    }
-		lv_cases_11_0=ruleXCasePart		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"cases",
-        		lv_cases_11_0, 
-        		"XCasePart");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(	otherlv_12='default' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
-    }
-	otherlv_13=':' 
-    {
-    	newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
-	    }
-		lv_default_14_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"default",
-        		lv_default_14_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?	otherlv_15='}' 
-    {
-    	newLeafNode(otherlv_15, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXCasePart
-entryRuleXCasePart returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXCasePartRule()); }
-	 iv_ruleXCasePart=ruleXCasePart 
-	 { $current=$iv_ruleXCasePart.current; } 
-	 EOF 
-;
-
-// Rule XCasePart
-ruleXCasePart returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
-            $current);
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeGuard_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
-	        }
-       		set(
-       			$current, 
-       			"typeGuard",
-        		lv_typeGuard_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?(	otherlv_2='case' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
-	    }
-		lv_case_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
-	        }
-       		set(
-       			$current, 
-       			"case",
-        		lv_case_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?((	otherlv_4=':' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
-	    }
-		lv_then_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
-	        }
-       		set(
-       			$current, 
-       			"then",
-        		lv_then_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |(
-(
-		lv_fallThrough_6_0=	',' 
-    {
-        newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXCasePartRule());
-	        }
-       		setWithLastConsumed($current, "fallThrough", true, ",");
-	    }
-
-)
-)))
-;
-
-
-
-
-
-// Entry rule entryRuleXForLoopExpression
-entryRuleXForLoopExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXForLoopExpressionRule()); }
-	 iv_ruleXForLoopExpression=ruleXForLoopExpression 
-	 { $current=$iv_ruleXForLoopExpression.current; } 
-	 EOF 
-;
-
-// Rule XForLoopExpression
-ruleXForLoopExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-)	'for' 
-	'(' 
-(
-(
-ruleJvmFormalParameter
-)
-)	':' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
-            $current);
-    }
-)	otherlv_1='for' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
-	    }
-		lv_declaredParam_3_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"declaredParam",
-        		lv_declaredParam_3_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=':' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
-	    }
-		lv_forExpression_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"forExpression",
-        		lv_forExpression_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_6=')' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
-	    }
-		lv_eachExpression_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"eachExpression",
-        		lv_eachExpression_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXBasicForLoopExpression
-entryRuleXBasicForLoopExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); }
-	 iv_ruleXBasicForLoopExpression=ruleXBasicForLoopExpression 
-	 { $current=$iv_ruleXBasicForLoopExpression.current; } 
-	 EOF 
-;
-
-// Rule XBasicForLoopExpression
-ruleXBasicForLoopExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='for' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
-	    }
-		lv_initExpressions_3_0=ruleXExpressionOrVarDeclaration		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"initExpressions",
-        		lv_initExpressions_3_0, 
-        		"XExpressionOrVarDeclaration");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
-	    }
-		lv_initExpressions_5_0=ruleXExpressionOrVarDeclaration		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"initExpressions",
-        		lv_initExpressions_5_0, 
-        		"XExpressionOrVarDeclaration");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6=';' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
-	    }
-		lv_expression_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?	otherlv_8=';' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
-	    }
-		lv_updateExpressions_9_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"updateExpressions",
-        		lv_updateExpressions_9_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_10=',' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
-	    }
-		lv_updateExpressions_11_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"updateExpressions",
-        		lv_updateExpressions_11_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_12=')' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
-	    }
-		lv_eachExpression_13_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"eachExpression",
-        		lv_eachExpression_13_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXWhileExpression
-entryRuleXWhileExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXWhileExpressionRule()); }
-	 iv_ruleXWhileExpression=ruleXWhileExpression 
-	 { $current=$iv_ruleXWhileExpression.current; } 
-	 EOF 
-;
-
-// Rule XWhileExpression
-ruleXWhileExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='while' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
-	    }
-		lv_predicate_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"predicate",
-        		lv_predicate_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=')' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
-	    }
-		lv_body_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"body",
-        		lv_body_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXDoWhileExpression
-entryRuleXDoWhileExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); }
-	 iv_ruleXDoWhileExpression=ruleXDoWhileExpression 
-	 { $current=$iv_ruleXDoWhileExpression.current; } 
-	 EOF 
-;
-
-// Rule XDoWhileExpression
-ruleXDoWhileExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='do' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
-	    }
-		lv_body_2_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"body",
-        		lv_body_2_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_3='while' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
-    }
-	otherlv_4='(' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
-	    }
-		lv_predicate_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"predicate",
-        		lv_predicate_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_6=')' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXBlockExpression
-entryRuleXBlockExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXBlockExpressionRule()); }
-	 iv_ruleXBlockExpression=ruleXBlockExpression 
-	 { $current=$iv_ruleXBlockExpression.current; } 
-	 EOF 
-;
-
-// Rule XBlockExpression
-ruleXBlockExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='{' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
-	    }
-		lv_expressions_2_0=ruleXExpressionOrVarDeclaration		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"expressions",
-        		lv_expressions_2_0, 
-        		"XExpressionOrVarDeclaration");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3=';' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
-    }
-)?)*	otherlv_4='}' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXExpressionOrVarDeclaration
-entryRuleXExpressionOrVarDeclaration returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); }
-	 iv_ruleXExpressionOrVarDeclaration=ruleXExpressionOrVarDeclaration 
-	 { $current=$iv_ruleXExpressionOrVarDeclaration.current; } 
-	 EOF 
-;
-
-// Rule XExpressionOrVarDeclaration
-ruleXExpressionOrVarDeclaration returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
-    }
-    this_XVariableDeclaration_0=ruleXVariableDeclaration
-    { 
-        $current = $this_XVariableDeclaration_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
-    }
-    this_XExpression_1=ruleXExpression
-    { 
-        $current = $this_XExpression_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXVariableDeclaration
-entryRuleXVariableDeclaration returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXVariableDeclarationRule()); }
-	 iv_ruleXVariableDeclaration=ruleXVariableDeclaration 
-	 { $current=$iv_ruleXVariableDeclaration.current; } 
-	 EOF 
-;
-
-// Rule XVariableDeclaration
-ruleXVariableDeclaration returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
-            $current);
-    }
-)((
-(
-		lv_writeable_1_0=	'var' 
-    {
-        newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		setWithLastConsumed($current, "writeable", true, "var");
-	    }
-
-)
-)
-    |	otherlv_2='val' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
-    }
-)(((((
-(
-ruleJvmTypeReference
-)
-)(
-(
-ruleValidID
-)
-)))=>((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
-	    }
-		lv_type_3_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"type",
-        		lv_type_3_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
-	    }
-		lv_name_4_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_4_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))
-    |(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
-	    }
-		lv_name_5_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_5_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))(	otherlv_6='=' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
-	    }
-		lv_right_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"right",
-        		lv_right_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
-;
-
-
-
-
-
-// Entry rule entryRuleJvmFormalParameter
-entryRuleJvmFormalParameter returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getJvmFormalParameterRule()); }
-	 iv_ruleJvmFormalParameter=ruleJvmFormalParameter 
-	 { $current=$iv_ruleJvmFormalParameter.current; } 
-	 EOF 
-;
-
-// Rule JvmFormalParameter
-ruleJvmFormalParameter returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
-	    }
-		lv_parameterType_0_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
-	        }
-       		set(
-       			$current, 
-       			"parameterType",
-        		lv_parameterType_0_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
-	    }
-		lv_name_1_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleFullJvmFormalParameter
-entryRuleFullJvmFormalParameter returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); }
-	 iv_ruleFullJvmFormalParameter=ruleFullJvmFormalParameter 
-	 { $current=$iv_ruleFullJvmFormalParameter.current; } 
-	 EOF 
-;
-
-// Rule FullJvmFormalParameter
-ruleFullJvmFormalParameter returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
-	    }
-		lv_parameterType_0_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
-	        }
-       		set(
-       			$current, 
-       			"parameterType",
-        		lv_parameterType_0_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
-	    }
-		lv_name_1_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXFeatureCall
-entryRuleXFeatureCall returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXFeatureCallRule()); }
-	 iv_ruleXFeatureCall=ruleXFeatureCall 
-	 { $current=$iv_ruleXFeatureCall.current; } 
-	 EOF 
-;
-
-// Rule XFeatureCall
-ruleXFeatureCall returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
-            $current);
-    }
-)(	otherlv_1='<' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
-	    }
-		lv_typeArguments_2_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_2_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3=',' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
-	    }
-		lv_typeArguments_4_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_4_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_5='>' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
-    }
-)?(
-(
+ruleXParenthesizedExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='('
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXFeatureCallRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
-	    }
-		ruleIdOrSuper		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((
-(
-	'(' 
- 
-
-)
-)=>
-(
-		lv_explicitOperationCall_7_0=	'(' 
-    {
-        newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitOperationCall", true, "(");
-	    }
-
-)
-)(((((
-)((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
-	    }
-		lv_featureCallArguments_8_0=ruleXShortClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"featureCallArguments",
-        		lv_featureCallArguments_8_0, 
-        		"XShortClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    |((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
-	    }
-		lv_featureCallArguments_9_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"featureCallArguments",
-        		lv_featureCallArguments_9_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_10=',' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
-	    }
-		lv_featureCallArguments_11_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"featureCallArguments",
-        		lv_featureCallArguments_11_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*))?	otherlv_12=')' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
-    }
-)?((((
-)	'[' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
-	    }
-		lv_featureCallArguments_13_0=ruleXClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"featureCallArguments",
-        		lv_featureCallArguments_13_0, 
-        		"XClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?)
-;
-
-
-
-
-
-// Entry rule entryRuleFeatureCallID
-entryRuleFeatureCallID returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getFeatureCallIDRule()); } 
-	 iv_ruleFeatureCallID=ruleFeatureCallID 
-	 { $current=$iv_ruleFeatureCallID.current.getText(); }  
-	 EOF 
-;
-
-// Rule FeatureCallID
-ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
-    }
-    this_ValidID_0=ruleValidID    {
-		$current.merge(this_ValidID_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-	kw='extends' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
-    }
-
-    |
-	kw='static' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
-    }
-
-    |
-	kw='import' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
-    }
-
-    |
-	kw='extension' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleIdOrSuper
-entryRuleIdOrSuper returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getIdOrSuperRule()); } 
-	 iv_ruleIdOrSuper=ruleIdOrSuper 
-	 { $current=$iv_ruleIdOrSuper.current.getText(); }  
-	 EOF 
-;
-
-// Rule IdOrSuper
-ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
-    }
-    this_FeatureCallID_0=ruleFeatureCallID    {
-		$current.merge(this_FeatureCallID_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-	kw='super' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleXConstructorCall
-entryRuleXConstructorCall returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXConstructorCallRule()); }
-	 iv_ruleXConstructorCall=ruleXConstructorCall 
-	 { $current=$iv_ruleXConstructorCall.current; } 
-	 EOF 
-;
-
-// Rule XConstructorCall
-ruleXConstructorCall returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
-            $current);
-    }
-)	otherlv_1='new' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXConstructorCallRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'<' 
-)=>	otherlv_3='<' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
-	    }
-		lv_typeArguments_4_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_4_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_5=',' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
-	    }
-		lv_typeArguments_6_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_6_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_7='>' 
-    {
-    	newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
-    }
-)?(((
-(
-	'(' 
- 
-
-)
-)=>
-(
-		lv_explicitConstructorCall_8_0=	'(' 
-    {
-        newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXConstructorCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitConstructorCall", true, "(");
-	    }
-
-)
-)(((((
-)((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
-	    }
-		lv_arguments_9_0=ruleXShortClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_9_0, 
-        		"XShortClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    |((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
-	    }
-		lv_arguments_10_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_10_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_11=',' 
-    {
-    	newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
-	    }
-		lv_arguments_12_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_12_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*))?	otherlv_13=')' 
-    {
-    	newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
-    }
-)?((((
-)	'[' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
-	    }
-		lv_arguments_14_0=ruleXClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_14_0, 
-        		"XClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?)
-;
-
-
-
-
-
-// Entry rule entryRuleXBooleanLiteral
-entryRuleXBooleanLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXBooleanLiteralRule()); }
-	 iv_ruleXBooleanLiteral=ruleXBooleanLiteral 
-	 { $current=$iv_ruleXBooleanLiteral.current; } 
-	 EOF 
-;
-
-// Rule XBooleanLiteral
-ruleXBooleanLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
-            $current);
-    }
-)(	otherlv_1='false' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
-    }
-
-    |(
-(
-		lv_isTrue_2_0=	'true' 
-    {
-        newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXBooleanLiteralRule());
-	        }
-       		setWithLastConsumed($current, "isTrue", true, "true");
-	    }
-
-)
-)))
-;
-
-
-
-
-
-// Entry rule entryRuleXNullLiteral
-entryRuleXNullLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXNullLiteralRule()); }
-	 iv_ruleXNullLiteral=ruleXNullLiteral 
-	 { $current=$iv_ruleXNullLiteral.current; } 
-	 EOF 
-;
-
-// Rule XNullLiteral
-ruleXNullLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
-            $current);
-    }
-)	otherlv_1='null' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXNumberLiteral
-entryRuleXNumberLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXNumberLiteralRule()); }
-	 iv_ruleXNumberLiteral=ruleXNumberLiteral 
-	 { $current=$iv_ruleXNumberLiteral.current; } 
-	 EOF 
-;
-
-// Rule XNumberLiteral
-ruleXNumberLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
-            $current);
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
-	    }
-		lv_value_1_0=ruleNumber		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_1_0, 
-        		"Number");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXStringLiteral
-entryRuleXStringLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXStringLiteralRule()); }
-	 iv_ruleXStringLiteral=ruleXStringLiteral 
-	 { $current=$iv_ruleXStringLiteral.current; } 
-	 EOF 
-;
-
-// Rule XStringLiteral
-ruleXStringLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
-            $current);
-    }
-)(
-(
-		lv_value_1_0=RULE_STRING
-		{
-			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+			newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
 		}
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXStringLiteralRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"value",
-        		lv_value_1_0, 
-        		"STRING");
-	    }
-
-)
-))
+			newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1());
+		}
+		this_XExpression_1=ruleXExpression
+		{
+			$current = $this_XExpression_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		otherlv_2=')'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
+		}
+	)
 ;
 
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXIfExpressionRule()); }
+	iv_ruleXIfExpression=ruleXIfExpression
+	{ $current=$iv_ruleXIfExpression.current; }
+	EOF;
 
+// Rule XIfExpression
+ruleXIfExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='if'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
+		}
+		otherlv_2='('
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0());
+				}
+				lv_if_3_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+					}
+					set(
+						$current,
+						"if",
+						lv_if_3_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_4=')'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0());
+				}
+				lv_then_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+					}
+					set(
+						$current,
+						"then",
+						lv_then_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				('else')=>
+				otherlv_6='else'
+				{
+					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
+				}
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0());
+					}
+					lv_else_7_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+						}
+						set(
+							$current,
+							"else",
+							lv_else_7_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+	)
+;
 
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXSwitchExpressionRule()); }
+	iv_ruleXSwitchExpression=ruleXSwitchExpression
+	{ $current=$iv_ruleXSwitchExpression.current; }
+	EOF;
 
+// Rule XSwitchExpression
+ruleXSwitchExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='switch'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
+		}
+		(
+			(
+				(
+					((
+						'('
+						(
+							(
+								ruleJvmFormalParameter
+							)
+						)
+						':'
+					)
+					)=>
+					(
+						otherlv_2='('
+						{
+							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0());
+								}
+								lv_declaredParam_3_0=ruleJvmFormalParameter
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+									}
+									set(
+										$current,
+										"declaredParam",
+										lv_declaredParam_3_0,
+										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+						otherlv_4=':'
+						{
+							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0());
+						}
+						lv_switch_5_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+							}
+							set(
+								$current,
+								"switch",
+								lv_switch_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				otherlv_6=')'
+				{
+					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
+				}
+			)
+			    |
+			(
+				(
+					((
+						(
+							(
+								ruleJvmFormalParameter
+							)
+						)
+						':'
+					)
+					)=>
+					(
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0());
+								}
+								lv_declaredParam_7_0=ruleJvmFormalParameter
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+									}
+									set(
+										$current,
+										"declaredParam",
+										lv_declaredParam_7_0,
+										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+						otherlv_8=':'
+						{
+							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
+						}
+					)
+				)?
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0());
+						}
+						lv_switch_9_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+							}
+							set(
+								$current,
+								"switch",
+								lv_switch_9_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)
+		otherlv_10='{'
+		{
+			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0());
+				}
+				lv_cases_11_0=ruleXCasePart
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+					}
+					add(
+						$current,
+						"cases",
+						lv_cases_11_0,
+						"org.eclipse.xtext.xbase.Xbase.XCasePart");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		(
+			otherlv_12='default'
+			{
+				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
+			}
+			otherlv_13=':'
+			{
+				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0());
+					}
+					lv_default_14_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+						}
+						set(
+							$current,
+							"default",
+							lv_default_14_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		otherlv_15='}'
+		{
+			newLeafNode(otherlv_15, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6());
+		}
+	)
+;
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXCasePartRule()); }
+	iv_ruleXCasePart=ruleXCasePart
+	{ $current=$iv_ruleXCasePart.current; }
+	EOF;
+
+// Rule XCasePart
+ruleXCasePart returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeGuard_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXCasePartRule());
+					}
+					set(
+						$current,
+						"typeGuard",
+						lv_typeGuard_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			otherlv_2='case'
+			{
+				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0());
+					}
+					lv_case_3_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXCasePartRule());
+						}
+						set(
+							$current,
+							"case",
+							lv_case_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		(
+			(
+				otherlv_4=':'
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0());
+						}
+						lv_then_5_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXCasePartRule());
+							}
+							set(
+								$current,
+								"then",
+								lv_then_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+			    |
+			(
+				(
+					lv_fallThrough_6_0=','
+					{
+						newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXCasePartRule());
+						}
+						setWithLastConsumed($current, "fallThrough", true, ",");
+					}
+				)
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXForLoopExpressionRule()); }
+	iv_ruleXForLoopExpression=ruleXForLoopExpression
+	{ $current=$iv_ruleXForLoopExpression.current; }
+	EOF;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+				)
+				'for'
+				'('
+				(
+					(
+						ruleJvmFormalParameter
+					)
+				)
+				':'
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElement(
+							grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
+							$current);
+					}
+				)
+				otherlv_1='for'
+				{
+					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
+				}
+				otherlv_2='('
+				{
+					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0());
+						}
+						lv_declaredParam_3_0=ruleJvmFormalParameter
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+							}
+							set(
+								$current,
+								"declaredParam",
+								lv_declaredParam_3_0,
+								"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				otherlv_4=':'
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0());
+				}
+				lv_forExpression_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+					}
+					set(
+						$current,
+						"forExpression",
+						lv_forExpression_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_6=')'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0());
+				}
+				lv_eachExpression_7_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+					}
+					set(
+						$current,
+						"eachExpression",
+						lv_eachExpression_7_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); }
+	iv_ruleXBasicForLoopExpression=ruleXBasicForLoopExpression
+	{ $current=$iv_ruleXBasicForLoopExpression.current; }
+	EOF;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='for'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
+		}
+		otherlv_2='('
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0());
+					}
+					lv_initExpressions_3_0=ruleXExpressionOrVarDeclaration
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+						}
+						add(
+							$current,
+							"initExpressions",
+							lv_initExpressions_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_4=','
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0());
+						}
+						lv_initExpressions_5_0=ruleXExpressionOrVarDeclaration
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+							}
+							add(
+								$current,
+								"initExpressions",
+								lv_initExpressions_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+		)?
+		otherlv_6=';'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0());
+				}
+				lv_expression_7_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_7_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		otherlv_8=';'
+		{
+			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0());
+					}
+					lv_updateExpressions_9_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+						}
+						add(
+							$current,
+							"updateExpressions",
+							lv_updateExpressions_9_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_10=','
+				{
+					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0());
+						}
+						lv_updateExpressions_11_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+							}
+							add(
+								$current,
+								"updateExpressions",
+								lv_updateExpressions_11_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+		)?
+		otherlv_12=')'
+		{
+			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0());
+				}
+				lv_eachExpression_13_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+					}
+					set(
+						$current,
+						"eachExpression",
+						lv_eachExpression_13_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXWhileExpressionRule()); }
+	iv_ruleXWhileExpression=ruleXWhileExpression
+	{ $current=$iv_ruleXWhileExpression.current; }
+	EOF;
+
+// Rule XWhileExpression
+ruleXWhileExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='while'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
+		}
+		otherlv_2='('
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0());
+				}
+				lv_predicate_3_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+					}
+					set(
+						$current,
+						"predicate",
+						lv_predicate_3_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_4=')'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0());
+				}
+				lv_body_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+					}
+					set(
+						$current,
+						"body",
+						lv_body_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); }
+	iv_ruleXDoWhileExpression=ruleXDoWhileExpression
+	{ $current=$iv_ruleXDoWhileExpression.current; }
+	EOF;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='do'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0());
+				}
+				lv_body_2_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+					}
+					set(
+						$current,
+						"body",
+						lv_body_2_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_3='while'
+		{
+			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
+		}
+		otherlv_4='('
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0());
+				}
+				lv_predicate_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+					}
+					set(
+						$current,
+						"predicate",
+						lv_predicate_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_6=')'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
+		}
+	)
+;
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXBlockExpressionRule()); }
+	iv_ruleXBlockExpression=ruleXBlockExpression
+	{ $current=$iv_ruleXBlockExpression.current; }
+	EOF;
+
+// Rule XBlockExpression
+ruleXBlockExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='{'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0());
+					}
+					lv_expressions_2_0=ruleXExpressionOrVarDeclaration
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
+						}
+						add(
+							$current,
+							"expressions",
+							lv_expressions_2_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_3=';'
+				{
+					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+				}
+			)?
+		)*
+		otherlv_4='}'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
+		}
+	)
+;
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	iv_ruleXExpressionOrVarDeclaration=ruleXExpressionOrVarDeclaration
+	{ $current=$iv_ruleXExpressionOrVarDeclaration.current; }
+	EOF;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0());
+		}
+		this_XVariableDeclaration_0=ruleXVariableDeclaration
+		{
+			$current = $this_XVariableDeclaration_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1());
+		}
+		this_XExpression_1=ruleXExpression
+		{
+			$current = $this_XExpression_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
+;
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXVariableDeclarationRule()); }
+	iv_ruleXVariableDeclaration=ruleXVariableDeclaration
+	{ $current=$iv_ruleXVariableDeclaration.current; }
+	EOF;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				(
+					lv_writeable_1_0='var'
+					{
+						newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXVariableDeclarationRule());
+						}
+						setWithLastConsumed($current, "writeable", true, "var");
+					}
+				)
+			)
+			    |
+			otherlv_2='val'
+			{
+				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
+			}
+		)
+		(
+			(
+				((
+					(
+						(
+							ruleJvmTypeReference
+						)
+					)
+					(
+						(
+							ruleValidID
+						)
+					)
+				)
+				)=>
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0());
+							}
+							lv_type_3_0=ruleJvmTypeReference
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+								}
+								set(
+									$current,
+									"type",
+									lv_type_3_0,
+									"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0());
+							}
+							lv_name_4_0=ruleValidID
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+								}
+								set(
+									$current,
+									"name",
+									lv_name_4_0,
+									"org.eclipse.xtext.xbase.Xtype.ValidID");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			    |
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0());
+					}
+					lv_name_5_0=ruleValidID
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+						}
+						set(
+							$current,
+							"name",
+							lv_name_5_0,
+							"org.eclipse.xtext.xbase.Xtype.ValidID");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)
+		(
+			otherlv_6='='
+			{
+				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0());
+					}
+					lv_right_7_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+						}
+						set(
+							$current,
+							"right",
+							lv_right_7_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+	)
+;
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getJvmFormalParameterRule()); }
+	iv_ruleJvmFormalParameter=ruleJvmFormalParameter
+	{ $current=$iv_ruleJvmFormalParameter.current; }
+	EOF;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0());
+				}
+				lv_parameterType_0_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+					}
+					set(
+						$current,
+						"parameterType",
+						lv_parameterType_0_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0());
+				}
+				lv_name_1_0=ruleValidID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.xtext.xbase.Xtype.ValidID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); }
+	iv_ruleFullJvmFormalParameter=ruleFullJvmFormalParameter
+	{ $current=$iv_ruleFullJvmFormalParameter.current; }
+	EOF;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0());
+				}
+				lv_parameterType_0_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+					}
+					set(
+						$current,
+						"parameterType",
+						lv_parameterType_0_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0());
+				}
+				lv_name_1_0=ruleValidID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.xtext.xbase.Xtype.ValidID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXFeatureCallRule()); }
+	iv_ruleXFeatureCall=ruleXFeatureCall
+	{ $current=$iv_ruleXFeatureCall.current; }
+	EOF;
+
+// Rule XFeatureCall
+ruleXFeatureCall returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
+					$current);
+			}
+		)
+		(
+			otherlv_1='<'
+			{
+				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+					}
+					lv_typeArguments_2_0=ruleJvmArgumentTypeReference
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+						}
+						add(
+							$current,
+							"typeArguments",
+							lv_typeArguments_2_0,
+							"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_3=','
+				{
+					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+						}
+						lv_typeArguments_4_0=ruleJvmArgumentTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+							}
+							add(
+								$current,
+								"typeArguments",
+								lv_typeArguments_4_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+			otherlv_5='>'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
+			}
+		)?
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXFeatureCallRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0());
+				}
+				ruleIdOrSuper
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				((
+					'('
+				)
+				)=>
+				(
+					lv_explicitOperationCall_7_0='('
+					{
+						newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXFeatureCallRule());
+						}
+						setWithLastConsumed($current, "explicitOperationCall", true, "(");
+					}
+				)
+			)
+			(
+				(
+					((
+						(
+						)
+						(
+							(
+								(
+									ruleJvmFormalParameter
+								)
+							)
+							(
+								','
+								(
+									(
+										ruleJvmFormalParameter
+									)
+								)
+							)*
+						)?
+						(
+							(
+								'|'
+							)
+						)
+					)
+					)=>
+					(
+						{
+							newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0());
+						}
+						lv_featureCallArguments_8_0=ruleXShortClosure
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+							}
+							add(
+								$current,
+								"featureCallArguments",
+								lv_featureCallArguments_8_0,
+								"org.eclipse.xtext.xbase.Xbase.XShortClosure");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				    |
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0());
+							}
+							lv_featureCallArguments_9_0=ruleXExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+								}
+								add(
+									$current,
+									"featureCallArguments",
+									lv_featureCallArguments_9_0,
+									"org.eclipse.xtext.xbase.Xbase.XExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_10=','
+						{
+							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0());
+								}
+								lv_featureCallArguments_11_0=ruleXExpression
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+									}
+									add(
+										$current,
+										"featureCallArguments",
+										lv_featureCallArguments_11_0,
+										"org.eclipse.xtext.xbase.Xbase.XExpression");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)
+			)?
+			otherlv_12=')'
+			{
+				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
+			}
+		)?
+		(
+			((
+				(
+				)
+				'['
+			)
+			)=>
+			(
+				{
+					newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0());
+				}
+				lv_featureCallArguments_13_0=ruleXClosure
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+					}
+					add(
+						$current,
+						"featureCallArguments",
+						lv_featureCallArguments_13_0,
+						"org.eclipse.xtext.xbase.Xbase.XClosure");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+	)
+;
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getFeatureCallIDRule()); }
+	iv_ruleFeatureCallID=ruleFeatureCallID
+	{ $current=$iv_ruleFeatureCallID.current.getText(); }
+	EOF;
+
+// Rule FeatureCallID
+ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0());
+		}
+		this_ValidID_0=ruleValidID
+		{
+			$current.merge(this_ValidID_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		kw='extends'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1());
+		}
+		    |
+		kw='static'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2());
+		}
+		    |
+		kw='import'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3());
+		}
+		    |
+		kw='extension'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4());
+		}
+	)
+;
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getIdOrSuperRule()); }
+	iv_ruleIdOrSuper=ruleIdOrSuper
+	{ $current=$iv_ruleIdOrSuper.current.getText(); }
+	EOF;
+
+// Rule IdOrSuper
+ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0());
+		}
+		this_FeatureCallID_0=ruleFeatureCallID
+		{
+			$current.merge(this_FeatureCallID_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		kw='super'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1());
+		}
+	)
+;
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXConstructorCallRule()); }
+	iv_ruleXConstructorCall=ruleXConstructorCall
+	{ $current=$iv_ruleXConstructorCall.current; }
+	EOF;
+
+// Rule XConstructorCall
+ruleXConstructorCall returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='new'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXConstructorCallRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0());
+				}
+				ruleQualifiedName
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				('<')=>
+				otherlv_3='<'
+				{
+					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
+				}
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0());
+					}
+					lv_typeArguments_4_0=ruleJvmArgumentTypeReference
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+						}
+						add(
+							$current,
+							"typeArguments",
+							lv_typeArguments_4_0,
+							"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_5=','
+				{
+					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0());
+						}
+						lv_typeArguments_6_0=ruleJvmArgumentTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+							}
+							add(
+								$current,
+								"typeArguments",
+								lv_typeArguments_6_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+			otherlv_7='>'
+			{
+				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
+			}
+		)?
+		(
+			(
+				((
+					'('
+				)
+				)=>
+				(
+					lv_explicitConstructorCall_8_0='('
+					{
+						newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXConstructorCallRule());
+						}
+						setWithLastConsumed($current, "explicitConstructorCall", true, "(");
+					}
+				)
+			)
+			(
+				(
+					((
+						(
+						)
+						(
+							(
+								(
+									ruleJvmFormalParameter
+								)
+							)
+							(
+								','
+								(
+									(
+										ruleJvmFormalParameter
+									)
+								)
+							)*
+						)?
+						(
+							(
+								'|'
+							)
+						)
+					)
+					)=>
+					(
+						{
+							newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0());
+						}
+						lv_arguments_9_0=ruleXShortClosure
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+							}
+							add(
+								$current,
+								"arguments",
+								lv_arguments_9_0,
+								"org.eclipse.xtext.xbase.Xbase.XShortClosure");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				    |
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0());
+							}
+							lv_arguments_10_0=ruleXExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+								}
+								add(
+									$current,
+									"arguments",
+									lv_arguments_10_0,
+									"org.eclipse.xtext.xbase.Xbase.XExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_11=','
+						{
+							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0());
+								}
+								lv_arguments_12_0=ruleXExpression
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+									}
+									add(
+										$current,
+										"arguments",
+										lv_arguments_12_0,
+										"org.eclipse.xtext.xbase.Xbase.XExpression");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)
+			)?
+			otherlv_13=')'
+			{
+				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
+			}
+		)?
+		(
+			((
+				(
+				)
+				'['
+			)
+			)=>
+			(
+				{
+					newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0());
+				}
+				lv_arguments_14_0=ruleXClosure
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+					}
+					add(
+						$current,
+						"arguments",
+						lv_arguments_14_0,
+						"org.eclipse.xtext.xbase.Xbase.XClosure");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+	)
+;
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXBooleanLiteralRule()); }
+	iv_ruleXBooleanLiteral=ruleXBooleanLiteral
+	{ $current=$iv_ruleXBooleanLiteral.current; }
+	EOF;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
+					$current);
+			}
+		)
+		(
+			otherlv_1='false'
+			{
+				newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
+			}
+			    |
+			(
+				(
+					lv_isTrue_2_0='true'
+					{
+						newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXBooleanLiteralRule());
+						}
+						setWithLastConsumed($current, "isTrue", true, "true");
+					}
+				)
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXNullLiteralRule()); }
+	iv_ruleXNullLiteral=ruleXNullLiteral
+	{ $current=$iv_ruleXNullLiteral.current; }
+	EOF;
+
+// Rule XNullLiteral
+ruleXNullLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='null'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
+		}
+	)
+;
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXNumberLiteralRule()); }
+	iv_ruleXNumberLiteral=ruleXNumberLiteral
+	{ $current=$iv_ruleXNumberLiteral.current; }
+	EOF;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0());
+				}
+				lv_value_1_0=ruleNumber
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
+					}
+					set(
+						$current,
+						"value",
+						lv_value_1_0,
+						"org.eclipse.xtext.xbase.Xbase.Number");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXStringLiteralRule()); }
+	iv_ruleXStringLiteral=ruleXStringLiteral
+	{ $current=$iv_ruleXStringLiteral.current; }
+	EOF;
+
+// Rule XStringLiteral
+ruleXStringLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				lv_value_1_0=RULE_STRING
+				{
+					newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXStringLiteralRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"value",
+						lv_value_1_0,
+						"org.eclipse.xtext.xbase.Xtype.STRING");
+				}
+			)
+		)
+	)
+;
 
 // Entry rule entryRuleXTypeLiteral
-entryRuleXTypeLiteral returns [EObject current=null] 
-	:
+entryRuleXTypeLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXTypeLiteralRule()); }
-	 iv_ruleXTypeLiteral=ruleXTypeLiteral 
-	 { $current=$iv_ruleXTypeLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXTypeLiteral=ruleXTypeLiteral
+	{ $current=$iv_ruleXTypeLiteral.current; }
+	EOF;
 
 // Rule XTypeLiteral
-ruleXTypeLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
-            $current);
-    }
-)	otherlv_1='typeof' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
-    }
-(
-(
+ruleXTypeLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='typeof'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXTypeLiteralRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
-	    }
-		lv_arrayDimensions_4_0=ruleArrayBrackets		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"arrayDimensions",
-        		lv_arrayDimensions_4_0, 
-        		"ArrayBrackets");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_5=')' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
-    }
-)
+			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+		}
+		otherlv_2='('
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXTypeLiteralRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0());
+				}
+				ruleQualifiedName
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
+				}
+				lv_arrayDimensions_4_0=ruleArrayBrackets
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
+					}
+					add(
+						$current,
+						"arrayDimensions",
+						lv_arrayDimensions_4_0,
+						"org.eclipse.xtext.xbase.Xtype.ArrayBrackets");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_5=')'
+		{
+			newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXThrowExpression
-entryRuleXThrowExpression returns [EObject current=null] 
-	:
+entryRuleXThrowExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXThrowExpressionRule()); }
-	 iv_ruleXThrowExpression=ruleXThrowExpression 
-	 { $current=$iv_ruleXThrowExpression.current; } 
-	 EOF 
-;
+	iv_ruleXThrowExpression=ruleXThrowExpression
+	{ $current=$iv_ruleXThrowExpression.current; }
+	EOF;
 
 // Rule XThrowExpression
-ruleXThrowExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='throw' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
-	    }
-		lv_expression_2_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_2_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXThrowExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='throw'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+				}
+				lv_expression_2_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_2_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXReturnExpression
-entryRuleXReturnExpression returns [EObject current=null] 
-	:
+entryRuleXReturnExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXReturnExpressionRule()); }
-	 iv_ruleXReturnExpression=ruleXReturnExpression 
-	 { $current=$iv_ruleXReturnExpression.current; } 
-	 EOF 
-;
+	iv_ruleXReturnExpression=ruleXReturnExpression
+	{ $current=$iv_ruleXReturnExpression.current; }
+	EOF;
 
 // Rule XReturnExpression
-ruleXReturnExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='return' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
-    }
-((	'extends' 
- | 	'static' 
- | 	'import' 
- | 	'extension' 
- | 	'!' 
- | 	'-' 
- | 	'+' 
- | 	'new' 
- | 	'{' 
- | 	'switch' 
- | 	'synchronized' 
- | 	'<' 
- | 	'super' 
- | 	'#' 
- | 	'[' 
- | 	'false' 
- | 	'true' 
- | 	'null' 
- | 	'typeof' 
- | 	'if' 
- | 	'for' 
- | 	'while' 
- | 	'do' 
- | 	'throw' 
- | 	'return' 
- | 	'try' 
- | 	'(' 
- | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
-	    }
-		lv_expression_2_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_2_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?)
+ruleXReturnExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='return'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+		}
+		(
+			('extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING)=>
+			(
+				{
+					newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+				}
+				lv_expression_2_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_2_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXTryCatchFinallyExpression
-entryRuleXTryCatchFinallyExpression returns [EObject current=null] 
-	:
+entryRuleXTryCatchFinallyExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); }
-	 iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression 
-	 { $current=$iv_ruleXTryCatchFinallyExpression.current; } 
-	 EOF 
-;
+	iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression
+	{ $current=$iv_ruleXTryCatchFinallyExpression.current; }
+	EOF;
 
 // Rule XTryCatchFinallyExpression
-ruleXTryCatchFinallyExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='try' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
-	    }
-		lv_expression_2_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_2_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((((	'catch' 
-)=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
-	    }
-		lv_catchClauses_3_0=ruleXCatchClause		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"catchClauses",
-        		lv_catchClauses_3_0, 
-        		"XCatchClause");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)+(((	'finally' 
-)=>	otherlv_4='finally' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
-	    }
-		lv_finallyExpression_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"finallyExpression",
-        		lv_finallyExpression_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
-    |(	otherlv_6='finally' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
-	    }
-		lv_finallyExpression_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"finallyExpression",
-        		lv_finallyExpression_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))))
+ruleXTryCatchFinallyExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='try'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+				}
+				lv_expression_2_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_2_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				(
+					('catch')=>
+					(
+						{
+							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0());
+						}
+						lv_catchClauses_3_0=ruleXCatchClause
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+							}
+							add(
+								$current,
+								"catchClauses",
+								lv_catchClauses_3_0,
+								"org.eclipse.xtext.xbase.Xbase.XCatchClause");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)+
+				(
+					(
+						('finally')=>
+						otherlv_4='finally'
+						{
+							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+						}
+					)
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0());
+							}
+							lv_finallyExpression_5_0=ruleXExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+								}
+								set(
+									$current,
+									"finallyExpression",
+									lv_finallyExpression_5_0,
+									"org.eclipse.xtext.xbase.Xbase.XExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)?
+			)
+			    |
+			(
+				otherlv_6='finally'
+				{
+					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0());
+						}
+						lv_finallyExpression_7_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+							}
+							set(
+								$current,
+								"finallyExpression",
+								lv_finallyExpression_7_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXSynchronizedExpression
-entryRuleXSynchronizedExpression returns [EObject current=null] 
-	:
+entryRuleXSynchronizedExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); }
-	 iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression 
-	 { $current=$iv_ruleXSynchronizedExpression.current; } 
-	 EOF 
-;
+	iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression
+	{ $current=$iv_ruleXSynchronizedExpression.current; }
+	EOF;
 
 // Rule XSynchronizedExpression
-ruleXSynchronizedExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-)	'synchronized' 
-	'(' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
-            $current);
-    }
-)	otherlv_1='synchronized' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
-	    }
-		lv_param_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"param",
-        		lv_param_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=')' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
-	    }
-		lv_expression_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXSynchronizedExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+				)
+				'synchronized'
+				'('
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElement(
+							grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+							$current);
+					}
+				)
+				otherlv_1='synchronized'
+				{
+					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+				}
+				otherlv_2='('
+				{
+					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0());
+				}
+				lv_param_3_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+					}
+					set(
+						$current,
+						"param",
+						lv_param_3_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_4=')'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0());
+				}
+				lv_expression_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXCatchClause
-entryRuleXCatchClause returns [EObject current=null] 
-	:
+entryRuleXCatchClause returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXCatchClauseRule()); }
-	 iv_ruleXCatchClause=ruleXCatchClause 
-	 { $current=$iv_ruleXCatchClause.current; } 
-	 EOF 
-;
+	iv_ruleXCatchClause=ruleXCatchClause
+	{ $current=$iv_ruleXCatchClause.current; }
+	EOF;
 
 // Rule XCatchClause
-ruleXCatchClause returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((	'catch' 
-)=>	otherlv_0='catch' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
-    }
-)	otherlv_1='(' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
-	    }
-		lv_declaredParam_2_0=ruleFullJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
-	        }
-       		set(
-       			$current, 
-       			"declaredParam",
-        		lv_declaredParam_2_0, 
-        		"FullJvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_3=')' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
-	    }
-		lv_expression_4_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_4_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXCatchClause returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			('catch')=>
+			otherlv_0='catch'
+			{
+				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+			}
+		)
+		otherlv_1='('
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0());
+				}
+				lv_declaredParam_2_0=ruleFullJvmFormalParameter
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+					}
+					set(
+						$current,
+						"declaredParam",
+						lv_declaredParam_2_0,
+						"org.eclipse.xtext.xbase.Xbase.FullJvmFormalParameter");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_3=')'
+		{
+			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0());
+				}
+				lv_expression_4_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_4_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getQualifiedNameRule()); }
+	iv_ruleQualifiedName=ruleQualifiedName
+	{ $current=$iv_ruleQualifiedName.current.getText(); }
+	EOF;
 
-
-
+// Rule QualifiedName
+ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
+		}
+		this_ValidID_0=ruleValidID
+		{
+			$current.merge(this_ValidID_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				('.')=>
+				kw='.'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0());
+				}
+			)
+			{
+				newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1());
+			}
+			this_ValidID_2=ruleValidID
+			{
+				$current.merge(this_ValidID_2);
+			}
+			{
+				afterParserOrEnumRuleCall();
+			}
+		)*
+	)
+;
 
 // Entry rule entryRuleNumber
-entryRuleNumber returns [String current=null] 
-	@init { 
-		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
-	}
-	:
-	{ newCompositeNode(grammarAccess.getNumberRule()); } 
-	 iv_ruleNumber=ruleNumber 
-	 { $current=$iv_ruleNumber.current.getText(); }  
-	 EOF 
-;
+entryRuleNumber returns [String current=null]@init {
+	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+}:
+	{ newCompositeNode(grammarAccess.getNumberRule()); }
+	iv_ruleNumber=ruleNumber
+	{ $current=$iv_ruleNumber.current.getText(); }
+	EOF;
 finally {
 	myHiddenTokenState.restore();
 }
 
 // Rule Number
-ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
-    }
-    @after { leaveRule(); }:
-(    this_HEX_0=RULE_HEX    {
-		$current.merge(this_HEX_0);
-    }
-
-    { 
-    newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
-    }
-
-    |((    this_INT_1=RULE_INT    {
-		$current.merge(this_INT_1);
-    }
-
-    { 
-    newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
-    }
-
-    |    this_DECIMAL_2=RULE_DECIMAL    {
-		$current.merge(this_DECIMAL_2);
-    }
-
-    { 
-    newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
-    }
-)(
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
-    }
-(    this_INT_4=RULE_INT    {
-		$current.merge(this_INT_4);
-    }
-
-    { 
-    newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
-    }
-
-    |    this_DECIMAL_5=RULE_DECIMAL    {
-		$current.merge(this_DECIMAL_5);
-    }
-
-    { 
-    newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
-    }
-))?))
-    ;
+ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+}
+@after {
+	leaveRule();
+}:
+	(
+		this_HEX_0=RULE_HEX
+		{
+			$current.merge(this_HEX_0);
+		}
+		{
+			newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0());
+		}
+		    |
+		(
+			(
+				this_INT_1=RULE_INT
+				{
+					$current.merge(this_INT_1);
+				}
+				{
+					newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0());
+				}
+				    |
+				this_DECIMAL_2=RULE_DECIMAL
+				{
+					$current.merge(this_DECIMAL_2);
+				}
+				{
+					newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1());
+				}
+			)
+			(
+				kw='.'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
+				}
+				(
+					this_INT_4=RULE_INT
+					{
+						$current.merge(this_INT_4);
+					}
+					{
+						newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0());
+					}
+					    |
+					this_DECIMAL_5=RULE_DECIMAL
+					{
+						$current.merge(this_DECIMAL_5);
+					}
+					{
+						newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1());
+					}
+				)
+			)?
+		)
+	)
+;
 finally {
 	myHiddenTokenState.restore();
 }
 
-
-
-
-
-
-
 // Entry rule entryRuleJvmTypeReference
-entryRuleJvmTypeReference returns [EObject current=null] 
-	:
+entryRuleJvmTypeReference returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); }
-	 iv_ruleJvmTypeReference=ruleJvmTypeReference 
-	 { $current=$iv_ruleJvmTypeReference.current; } 
-	 EOF 
-;
+	iv_ruleJvmTypeReference=ruleJvmTypeReference
+	{ $current=$iv_ruleJvmTypeReference.current; }
+	EOF;
 
 // Rule JvmTypeReference
-ruleJvmTypeReference returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    { 
-        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
-    }
-    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference
-    { 
-        $current = $this_JvmParameterizedTypeReference_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-((((
-)	ruleArrayBrackets))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
-            $current);
-    }
-)
-    { 
-        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
-    }
-ruleArrayBrackets
-    { 
-        afterParserOrEnumRuleCall();
-    }
-))*)
-    |
-    { 
-        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
-    }
-    this_XFunctionTypeRef_3=ruleXFunctionTypeRef
-    { 
-        $current = $this_XFunctionTypeRef_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleJvmTypeReference returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
+			}
+			this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference
+			{
+				$current = $this_JvmParameterizedTypeReference_0.current;
+				afterParserOrEnumRuleCall();
+			}
+			(
+				((
+					(
+					)
+					ruleArrayBrackets
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
+								$current);
+						}
+					)
+					{
+						newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1());
+					}
+					ruleArrayBrackets
+					{
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1());
+		}
+		this_XFunctionTypeRef_3=ruleXFunctionTypeRef
+		{
+			$current = $this_XFunctionTypeRef_3.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleArrayBrackets
-entryRuleArrayBrackets returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getArrayBracketsRule()); } 
-	 iv_ruleArrayBrackets=ruleArrayBrackets 
-	 { $current=$iv_ruleArrayBrackets.current.getText(); }  
-	 EOF 
-;
+entryRuleArrayBrackets returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getArrayBracketsRule()); }
+	iv_ruleArrayBrackets=ruleArrayBrackets
+	{ $current=$iv_ruleArrayBrackets.current.getText(); }
+	EOF;
 
 // Rule ArrayBrackets
-ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='[' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
-    }
-
-	kw=']' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
-    }
-)
-    ;
-
-
-
-
+ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='['
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
+		}
+		kw=']'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1());
+		}
+	)
+;
 
 // Entry rule entryRuleXFunctionTypeRef
-entryRuleXFunctionTypeRef returns [EObject current=null] 
-	:
+entryRuleXFunctionTypeRef returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); }
-	 iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef 
-	 { $current=$iv_ruleXFunctionTypeRef.current; } 
-	 EOF 
-;
+	iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef
+	{ $current=$iv_ruleXFunctionTypeRef.current; }
+	EOF;
 
 // Rule XFunctionTypeRef
-ruleXFunctionTypeRef returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((	otherlv_0='(' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
-	    }
-		lv_paramTypes_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
-	        }
-       		add(
-       			$current, 
-       			"paramTypes",
-        		lv_paramTypes_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_2=',' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
-	    }
-		lv_paramTypes_3_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
-	        }
-       		add(
-       			$current, 
-       			"paramTypes",
-        		lv_paramTypes_3_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_4=')' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
-    }
-)?	otherlv_5='=>' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
-	    }
-		lv_returnType_6_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
-	        }
-       		set(
-       			$current, 
-       			"returnType",
-        		lv_returnType_6_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXFunctionTypeRef returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			otherlv_0='('
+			{
+				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+			}
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
+						}
+						lv_paramTypes_1_0=ruleJvmTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+							}
+							add(
+								$current,
+								"paramTypes",
+								lv_paramTypes_1_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					otherlv_2=','
+					{
+						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
+							}
+							lv_paramTypes_3_0=ruleJvmTypeReference
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+								}
+								add(
+									$current,
+									"paramTypes",
+									lv_paramTypes_3_0,
+									"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)*
+			)?
+			otherlv_4=')'
+			{
+				newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+			}
+		)?
+		otherlv_5='=>'
+		{
+			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0());
+				}
+				lv_returnType_6_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+					}
+					set(
+						$current,
+						"returnType",
+						lv_returnType_6_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmParameterizedTypeReference
-entryRuleJvmParameterizedTypeReference returns [EObject current=null] 
-	:
+entryRuleJvmParameterizedTypeReference returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
-	 iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference 
-	 { $current=$iv_ruleJvmParameterizedTypeReference.current; } 
-	 EOF 
-;
+	iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference
+	{ $current=$iv_ruleJvmParameterizedTypeReference.current; }
+	EOF;
 
 // Rule JvmParameterizedTypeReference
-ruleJvmParameterizedTypeReference returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'<' 
-)=>	otherlv_1='<' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
-	    }
-		lv_arguments_2_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_2_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3=',' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
-	    }
-		lv_arguments_4_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_4_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_5='>' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
-    }
-(((((
-)	'.' 
-))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
-            $current);
-    }
-)	otherlv_7='.' 
-    {
-    	newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
-    }
-))(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
-	    }
-		ruleValidID		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'<' 
-)=>	otherlv_9='<' 
-    {
-    	newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
-	    }
-		lv_arguments_10_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_10_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_11=',' 
-    {
-    	newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
-	    }
-		lv_arguments_12_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_12_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_13='>' 
-    {
-    	newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
-    }
-)?)*)?)
+ruleJvmParameterizedTypeReference returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0());
+				}
+				ruleQualifiedName
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				('<')=>
+				otherlv_1='<'
+				{
+					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+				}
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+					}
+					lv_arguments_2_0=ruleJvmArgumentTypeReference
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+						}
+						add(
+							$current,
+							"arguments",
+							lv_arguments_2_0,
+							"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_3=','
+				{
+					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+						}
+						lv_arguments_4_0=ruleJvmArgumentTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+							}
+							add(
+								$current,
+								"arguments",
+								lv_arguments_4_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+			otherlv_5='>'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+			}
+			(
+				(
+					((
+						(
+						)
+						'.'
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+									$current);
+							}
+						)
+						otherlv_7='.'
+						{
+							newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+						}
+					)
+				)
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0());
+						}
+						ruleValidID
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						('<')=>
+						otherlv_9='<'
+						{
+							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+						}
+					)
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
+							}
+							lv_arguments_10_0=ruleJvmArgumentTypeReference
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+								}
+								add(
+									$current,
+									"arguments",
+									lv_arguments_10_0,
+									"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_11=','
+						{
+							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
+								}
+								lv_arguments_12_0=ruleJvmArgumentTypeReference
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+									}
+									add(
+										$current,
+										"arguments",
+										lv_arguments_12_0,
+										"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+					otherlv_13='>'
+					{
+						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+					}
+				)?
+			)*
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmArgumentTypeReference
-entryRuleJvmArgumentTypeReference returns [EObject current=null] 
-	:
+entryRuleJvmArgumentTypeReference returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); }
-	 iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference 
-	 { $current=$iv_ruleJvmArgumentTypeReference.current; } 
-	 EOF 
-;
+	iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference
+	{ $current=$iv_ruleJvmArgumentTypeReference.current; }
+	EOF;
 
 // Rule JvmArgumentTypeReference
-ruleJvmArgumentTypeReference returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
-    }
-    this_JvmTypeReference_0=ruleJvmTypeReference
-    { 
-        $current = $this_JvmTypeReference_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
-    }
-    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference
-    { 
-        $current = $this_JvmWildcardTypeReference_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleJvmArgumentTypeReference returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0());
+		}
+		this_JvmTypeReference_0=ruleJvmTypeReference
+		{
+			$current = $this_JvmTypeReference_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1());
+		}
+		this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference
+		{
+			$current = $this_JvmWildcardTypeReference_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmWildcardTypeReference
-entryRuleJvmWildcardTypeReference returns [EObject current=null] 
-	:
+entryRuleJvmWildcardTypeReference returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); }
-	 iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference 
-	 { $current=$iv_ruleJvmWildcardTypeReference.current; } 
-	 EOF 
-;
+	iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference
+	{ $current=$iv_ruleJvmWildcardTypeReference.current; }
+	EOF;
 
 // Rule JvmWildcardTypeReference
-ruleJvmWildcardTypeReference returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
-            $current);
-    }
-)	otherlv_1='?' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
-    }
-(((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
-	    }
-		lv_constraints_2_0=ruleJvmUpperBound		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"constraints",
-        		lv_constraints_2_0, 
-        		"JvmUpperBound");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
-	    }
-		lv_constraints_3_0=ruleJvmUpperBoundAnded		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"constraints",
-        		lv_constraints_3_0, 
-        		"JvmUpperBoundAnded");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*)
-    |((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
-	    }
-		lv_constraints_4_0=ruleJvmLowerBound		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"constraints",
-        		lv_constraints_4_0, 
-        		"JvmLowerBound");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
-	    }
-		lv_constraints_5_0=ruleJvmLowerBoundAnded		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"constraints",
-        		lv_constraints_5_0, 
-        		"JvmLowerBoundAnded");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*))?)
+ruleJvmWildcardTypeReference returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='?'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+		}
+		(
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
+						}
+						lv_constraints_2_0=ruleJvmUpperBound
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+							}
+							add(
+								$current,
+								"constraints",
+								lv_constraints_2_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmUpperBound");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
+						}
+						lv_constraints_3_0=ruleJvmUpperBoundAnded
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+							}
+							add(
+								$current,
+								"constraints",
+								lv_constraints_3_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmUpperBoundAnded");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)*
+			)
+			    |
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
+						}
+						lv_constraints_4_0=ruleJvmLowerBound
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+							}
+							add(
+								$current,
+								"constraints",
+								lv_constraints_4_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmLowerBound");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
+						}
+						lv_constraints_5_0=ruleJvmLowerBoundAnded
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+							}
+							add(
+								$current,
+								"constraints",
+								lv_constraints_5_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmLowerBoundAnded");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)*
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmUpperBound
-entryRuleJvmUpperBound returns [EObject current=null] 
-	:
+entryRuleJvmUpperBound returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmUpperBoundRule()); }
-	 iv_ruleJvmUpperBound=ruleJvmUpperBound 
-	 { $current=$iv_ruleJvmUpperBound.current; } 
-	 EOF 
-;
+	iv_ruleJvmUpperBound=ruleJvmUpperBound
+	{ $current=$iv_ruleJvmUpperBound.current; }
+	EOF;
 
 // Rule JvmUpperBound
-ruleJvmUpperBound returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='extends' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeReference_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
-	        }
-       		set(
-       			$current, 
-       			"typeReference",
-        		lv_typeReference_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleJvmUpperBound returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='extends'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeReference_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
+					}
+					set(
+						$current,
+						"typeReference",
+						lv_typeReference_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmUpperBoundAnded
-entryRuleJvmUpperBoundAnded returns [EObject current=null] 
-	:
+entryRuleJvmUpperBoundAnded returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); }
-	 iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded 
-	 { $current=$iv_ruleJvmUpperBoundAnded.current; } 
-	 EOF 
-;
+	iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded
+	{ $current=$iv_ruleJvmUpperBoundAnded.current; }
+	EOF;
 
 // Rule JvmUpperBoundAnded
-ruleJvmUpperBoundAnded returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='&' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeReference_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
-	        }
-       		set(
-       			$current, 
-       			"typeReference",
-        		lv_typeReference_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleJvmUpperBoundAnded returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='&'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeReference_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
+					}
+					set(
+						$current,
+						"typeReference",
+						lv_typeReference_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmLowerBound
-entryRuleJvmLowerBound returns [EObject current=null] 
-	:
+entryRuleJvmLowerBound returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmLowerBoundRule()); }
-	 iv_ruleJvmLowerBound=ruleJvmLowerBound 
-	 { $current=$iv_ruleJvmLowerBound.current; } 
-	 EOF 
-;
+	iv_ruleJvmLowerBound=ruleJvmLowerBound
+	{ $current=$iv_ruleJvmLowerBound.current; }
+	EOF;
 
 // Rule JvmLowerBound
-ruleJvmLowerBound returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='super' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeReference_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
-	        }
-       		set(
-       			$current, 
-       			"typeReference",
-        		lv_typeReference_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleJvmLowerBound returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='super'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeReference_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
+					}
+					set(
+						$current,
+						"typeReference",
+						lv_typeReference_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmLowerBoundAnded
-entryRuleJvmLowerBoundAnded returns [EObject current=null] 
-	:
+entryRuleJvmLowerBoundAnded returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); }
-	 iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded 
-	 { $current=$iv_ruleJvmLowerBoundAnded.current; } 
-	 EOF 
-;
+	iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded
+	{ $current=$iv_ruleJvmLowerBoundAnded.current; }
+	EOF;
 
 // Rule JvmLowerBoundAnded
-ruleJvmLowerBoundAnded returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='&' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeReference_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmLowerBoundAndedRule());
-	        }
-       		set(
-       			$current, 
-       			"typeReference",
-        		lv_typeReference_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleJvmLowerBoundAnded returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='&'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeReference_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmLowerBoundAndedRule());
+					}
+					set(
+						$current,
+						"typeReference",
+						lv_typeReference_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
-
-
 // Entry rule entryRuleQualifiedNameWithWildcard
-entryRuleQualifiedNameWithWildcard returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); } 
-	 iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard 
-	 { $current=$iv_ruleQualifiedNameWithWildcard.current.getText(); }  
-	 EOF 
-;
+entryRuleQualifiedNameWithWildcard returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); }
+	iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard
+	{ $current=$iv_ruleQualifiedNameWithWildcard.current.getText(); }
+	EOF;
 
 // Rule QualifiedNameWithWildcard
-ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
-    }
-    this_QualifiedName_0=ruleQualifiedName    {
-		$current.merge(this_QualifiedName_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
-    }
-
-	kw='*' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
-    }
-)
-    ;
-
-
-
-
-
-
-
-// Entry rule entryRuleXImportDeclaration
-entryRuleXImportDeclaration returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXImportDeclarationRule()); }
-	 iv_ruleXImportDeclaration=ruleXImportDeclaration 
-	 { $current=$iv_ruleXImportDeclaration.current; } 
-	 EOF 
+ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
+		}
+		this_QualifiedName_0=ruleQualifiedName
+		{
+			$current.merge(this_QualifiedName_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		kw='.'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
+		}
+		kw='*'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2());
+		}
+	)
 ;
 
-// Rule XImportDeclaration
-ruleXImportDeclaration returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='import' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getXImportDeclarationAccess().getImportKeyword_0());
-    }
-(((
-(
-		lv_static_1_0=	'static' 
-    {
-        newLeafNode(lv_static_1_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_1_0_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-       		setWithLastConsumed($current, "static", true, "static");
-	    }
+// Entry rule entryRuleValidID
+entryRuleValidID returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getValidIDRule()); }
+	iv_ruleValidID=ruleValidID
+	{ $current=$iv_ruleValidID.current.getText(); }
+	EOF;
 
-)
-)(
-(
-		lv_extension_2_0=	'extension' 
-    {
-        newLeafNode(lv_extension_2_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_1_0_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-       		setWithLastConsumed($current, "extension", true, "extension");
-	    }
-
-)
-)?(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0()); 
-	    }
-		ruleQualifiedNameInStaticImport		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_wildcard_4_0=	'*' 
-    {
-        newLeafNode(lv_wildcard_4_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_1_0_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-       		setWithLastConsumed($current, "wildcard", true, "*");
-	    }
-
-)
-)
-    |(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_1_0_3_1_0()); 
-	    }
-		lv_memberName_5_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"memberName",
-        		lv_memberName_5_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))
-    |(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_1_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    |(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0()); 
-	    }
-		lv_importedNamespace_7_0=ruleQualifiedNameWithWildcard		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"importedNamespace",
-        		lv_importedNamespace_7_0, 
-        		"QualifiedNameWithWildcard");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))(	otherlv_8=';' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
-    }
-)?)
+// Rule ValidID
+ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	this_ID_0=RULE_ID
+	{
+		$current.merge(this_ID_0);
+	}
+	{
+		newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall());
+	}
 ;
 
+// Entry rule entryRuleXImportSection
+entryRuleXImportSection returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXImportSectionRule()); }
+	iv_ruleXImportSection=ruleXImportSection
+	{ $current=$iv_ruleXImportSection.current; }
+	EOF;
 
-
-
+// Rule XImportSection
+ruleXImportSection returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				newCompositeNode(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0());
+			}
+			lv_importDeclarations_0_0=ruleXImportDeclaration
+			{
+				if ($current==null) {
+					$current = createModelElementForParent(grammarAccess.getXImportSectionRule());
+				}
+				add(
+					$current,
+					"importDeclarations",
+					lv_importDeclarations_0_0,
+					"org.eclipse.osbp.xtext.oxtype.OXtype.XImportDeclaration");
+				afterParserOrEnumRuleCall();
+			}
+		)
+	)+
+;
 
 // Entry rule entryRuleQualifiedNameInStaticImport
-entryRuleQualifiedNameInStaticImport returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); } 
-	 iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport 
-	 { $current=$iv_ruleQualifiedNameInStaticImport.current.getText(); }  
-	 EOF 
-;
+entryRuleQualifiedNameInStaticImport returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); }
+	iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport
+	{ $current=$iv_ruleQualifiedNameInStaticImport.current.getText(); }
+	EOF;
 
 // Rule QualifiedNameInStaticImport
-ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
-    }
-    this_ValidID_0=ruleValidID    {
-		$current.merge(this_ValidID_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
-    }
-)+
-    ;
-
-
-
-
+ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
+		}
+		this_ValidID_0=ruleValidID
+		{
+			$current.merge(this_ValidID_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		kw='.'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
+		}
+	)+
+;
 
 // Rule SashOrientation
-ruleSashOrientation returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='horizontal' 
-	{
-        $current = grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='vertical' 
-	{
-        $current = grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1()); 
-    }
-));
-
-
+ruleSashOrientation returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='horizontal'
+			{
+				$current = grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='vertical'
+			{
+				$current = grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1());
+			}
+		)
+	)
+;
 
 RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
 
@@ -8261,5 +8923,3 @@
 RULE_WS : (' '|'\t'|'\r'|'\n')+;
 
 RULE_ANY_OTHER : .;
-
-
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens
index d688a73..7c0e5bd 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens
@@ -1,110 +1,121 @@
-'!'=77
-'!='=62
-'!=='=64
-'#'=48
-'%'=76
-'%='=55
-'&&'=60
-'&'=112
-'('=44
-')'=46
-'*'=42
-'**'=74
-'*='=53
-'+'=72
-'++'=79
-'+='=51
-','=45
-'-'=73
-'--'=80
-'-='=52
-'->'=66
-'.'=41
-'..'=68
-'..<'=67
-'/'=75
-'/='=54
-':'=88
-'::'=81
-';'=84
-'<'=56
-'<>'=70
-'='=47
-'=='=61
-'==='=63
-'=>'=69
-'>'=57
-'>='=58
-'?'=111
-'?.'=82
-'?:'=71
-'@'=43
-'['=49
-']'=50
-'accessibility'=22
-'as'=78
+'!'=90
+'!='=75
+'!=='=77
+'#'=61
+'%'=89
+'%='=68
+'&&'=73
+'&'=123
+'('=57
+')'=59
+'*'=53
+'**'=87
+'*='=66
+'+'=85
+'++'=92
+'+='=64
+','=58
+'-'=86
+'--'=93
+'-='=65
+'->'=79
+'.'=94
+'..'=81
+'..<'=80
+'/'=88
+'/='=67
+':'=101
+'::'=95
+';'=55
+'<'=69
+'<>'=83
+'='=60
+'=='=74
+'==='=76
+'=>'=82
+'>'=70
+'>='=71
+'?'=122
+'?.'=96
+'?:'=84
+'@'=56
+'['=62
+']'=63
+'accessibility'=21
+'as'=91
+'bean'=34
 'bpmn'=40
-'case'=90
-'catch'=110
+'card'=43
+'case'=103
+'catch'=121
 'chart'=35
-'default'=89
-'described by'=18
+'dataInterchange'=49
+'default'=102
+'depth'=47
+'describedBy'=17
 'dialog'=39
-'do'=93
-'else'=86
-'extends'=96
-'extension'=98
-'false'=101
-'finally'=108
-'for'=91
-'grid'=34
-'horizontal'=113
-'iconURI'=21
-'if'=85
-'import'=16
-'instanceof'=65
-'isClosable'=31
-'new'=100
-'null'=103
+'do'=106
+'else'=99
+'extends'=109
+'extension'=52
+'false'=112
+'filterColumns'=48
+'finally'=119
+'for'=104
+'grid'=33
+'horizontal'=124
+'iconURI'=20
+'if'=98
+'import'=50
+'in'=46
+'instanceof'=78
+'isClosable'=30
+'kanban'=41
+'new'=111
+'ns'=54
+'null'=114
+'of'=42
 'organigram'=37
-'orientation'=25
+'orientation'=24
 'package'=13
-'part'=29
-'partStack'=28
-'perspective'=17
-'process'=19
+'part'=28
+'partStack'=27
+'perspective'=16
+'process'=18
 'report'=36
-'return'=106
-'sashContainer'=24
-'select'=32
-'selectedElement'=26
-'spaceVolume'=27
-'static'=97
-'super'=99
-'switch'=87
-'synchronized'=109
-'table'=33
-'throw'=105
-'toolbar'=23
+'return'=117
+'sashContainer'=23
+'search'=45
+'select'=31
+'selectedElement'=25
+'spaceVolume'=26
+'static'=51
+'super'=110
+'switch'=100
+'synchronized'=120
+'table'=32
+'throw'=116
+'toolbar'=22
 'topology'=38
-'true'=102
-'try'=107
-'typeof'=104
-'usertask'=20
-'val'=95
-'var'=94
-'vertical'=114
-'view'=30
-'while'=92
+'true'=113
+'try'=118
+'typeof'=115
+'usertask'=19
+'val'=108
+'var'=107
+'vertical'=125
+'view'=29
+'welcome'=44
+'while'=105
 '{'=14
-'|'=83
-'||'=59
+'|'=97
+'||'=72
 '}'=15
 RULE_ANY_OTHER=12
 RULE_DECIMAL=8
-RULE_HEX=6
+RULE_HEX=7
 RULE_ID=4
-RULE_INT=7
+RULE_INT=6
 RULE_ML_COMMENT=9
 RULE_SL_COMMENT=10
 RULE_STRING=5
@@ -124,6 +135,17 @@
 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__13=13
 T__14=14
 T__15=15
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslLexer.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslLexer.java
index c7ce673..14452e2 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslLexer.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslLexer.java
@@ -25,7 +25,7 @@
 
 @SuppressWarnings("all")
 public class InternalPerspectiveDslLexer extends Lexer {
-    public static final int RULE_HEX=6;
+    public static final int RULE_HEX=7;
     public static final int T__50=50;
     public static final int T__59=59;
     public static final int T__55=55;
@@ -39,7 +39,7 @@
     public static final int T__60=60;
     public static final int T__61=61;
     public static final int RULE_ID=4;
-    public static final int RULE_INT=7;
+    public static final int RULE_INT=6;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=9;
     public static final int T__67=67;
@@ -47,6 +47,7 @@
     public static final int T__69=69;
     public static final int T__62=62;
     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__65=65;
     public static final int T__37=37;
@@ -100,20 +101,30 @@
     public static final int T__25=25;
     public static final int T__20=20;
     public static final int T__21=21;
+    public static final int T__122=122;
     public static final int T__70=70;
+    public static final int T__121=121;
     public static final int T__71=71;
+    public static final int T__124=124;
     public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
     public static final int RULE_STRING=5;
     public static final int RULE_SL_COMMENT=10;
     public static final int T__77=77;
+    public static final int T__119=119;
     public static final int T__78=78;
+    public static final int T__118=118;
     public static final int T__79=79;
     public static final int T__73=73;
+    public static final int T__115=115;
     public static final int EOF=-1;
     public static final int T__74=74;
     public static final int T__114=114;
     public static final int T__75=75;
+    public static final int T__117=117;
     public static final int T__76=76;
+    public static final int T__116=116;
     public static final int T__80=80;
     public static final int T__111=111;
     public static final int T__81=81;
@@ -149,15 +160,15 @@
         super(input,state);
 
     }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g"; }
+    public String getGrammarFileName() { return "InternalPerspectiveDsl.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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:11:7: ( 'package' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:11:9: 'package'
+            // InternalPerspectiveDsl.g:11:7: ( 'package' )
+            // InternalPerspectiveDsl.g:11:9: 'package'
             {
             match("package"); 
 
@@ -177,8 +188,8 @@
         try {
             int _type = T__14;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:12:7: ( '{' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:12:9: '{'
+            // InternalPerspectiveDsl.g:12:7: ( '{' )
+            // InternalPerspectiveDsl.g:12:9: '{'
             {
             match('{'); 
 
@@ -197,8 +208,8 @@
         try {
             int _type = T__15;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:13:7: ( '}' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:13:9: '}'
+            // InternalPerspectiveDsl.g:13:7: ( '}' )
+            // InternalPerspectiveDsl.g:13:9: '}'
             {
             match('}'); 
 
@@ -217,10 +228,10 @@
         try {
             int _type = T__16;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:14:7: ( 'import' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:14:9: 'import'
+            // InternalPerspectiveDsl.g:14:7: ( 'perspective' )
+            // InternalPerspectiveDsl.g:14:9: 'perspective'
             {
-            match("import"); 
+            match("perspective"); 
 
 
             }
@@ -238,10 +249,10 @@
         try {
             int _type = T__17;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:15:7: ( 'perspective' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:15:9: 'perspective'
+            // InternalPerspectiveDsl.g:15:7: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:15:9: 'describedBy'
             {
-            match("perspective"); 
+            match("describedBy"); 
 
 
             }
@@ -259,10 +270,10 @@
         try {
             int _type = T__18;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:16:7: ( 'described by' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:16:9: 'described by'
+            // InternalPerspectiveDsl.g:16:7: ( 'process' )
+            // InternalPerspectiveDsl.g:16:9: 'process'
             {
-            match("described by"); 
+            match("process"); 
 
 
             }
@@ -280,10 +291,10 @@
         try {
             int _type = T__19;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:17:7: ( 'process' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:17:9: 'process'
+            // InternalPerspectiveDsl.g:17:7: ( 'usertask' )
+            // InternalPerspectiveDsl.g:17:9: 'usertask'
             {
-            match("process"); 
+            match("usertask"); 
 
 
             }
@@ -301,10 +312,10 @@
         try {
             int _type = T__20;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:18:7: ( 'usertask' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:18:9: 'usertask'
+            // InternalPerspectiveDsl.g:18:7: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:18:9: 'iconURI'
             {
-            match("usertask"); 
+            match("iconURI"); 
 
 
             }
@@ -322,10 +333,10 @@
         try {
             int _type = T__21;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:19:7: ( 'iconURI' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:19:9: 'iconURI'
+            // InternalPerspectiveDsl.g:19:7: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:19:9: 'accessibility'
             {
-            match("iconURI"); 
+            match("accessibility"); 
 
 
             }
@@ -343,10 +354,10 @@
         try {
             int _type = T__22;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:20:7: ( 'accessibility' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:20:9: 'accessibility'
+            // InternalPerspectiveDsl.g:20:7: ( 'toolbar' )
+            // InternalPerspectiveDsl.g:20:9: 'toolbar'
             {
-            match("accessibility"); 
+            match("toolbar"); 
 
 
             }
@@ -364,10 +375,10 @@
         try {
             int _type = T__23;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:21:7: ( 'toolbar' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:21:9: 'toolbar'
+            // InternalPerspectiveDsl.g:21:7: ( 'sashContainer' )
+            // InternalPerspectiveDsl.g:21:9: 'sashContainer'
             {
-            match("toolbar"); 
+            match("sashContainer"); 
 
 
             }
@@ -385,10 +396,10 @@
         try {
             int _type = T__24;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:22:7: ( 'sashContainer' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:22:9: 'sashContainer'
+            // InternalPerspectiveDsl.g:22:7: ( 'orientation' )
+            // InternalPerspectiveDsl.g:22:9: 'orientation'
             {
-            match("sashContainer"); 
+            match("orientation"); 
 
 
             }
@@ -406,10 +417,10 @@
         try {
             int _type = T__25;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:23:7: ( 'orientation' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:23:9: 'orientation'
+            // InternalPerspectiveDsl.g:23:7: ( 'selectedElement' )
+            // InternalPerspectiveDsl.g:23:9: 'selectedElement'
             {
-            match("orientation"); 
+            match("selectedElement"); 
 
 
             }
@@ -427,10 +438,10 @@
         try {
             int _type = T__26;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:24:7: ( 'selectedElement' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:24:9: 'selectedElement'
+            // InternalPerspectiveDsl.g:24:7: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:24:9: 'spaceVolume'
             {
-            match("selectedElement"); 
+            match("spaceVolume"); 
 
 
             }
@@ -448,10 +459,10 @@
         try {
             int _type = T__27;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:25:7: ( 'spaceVolume' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:25:9: 'spaceVolume'
+            // InternalPerspectiveDsl.g:25:7: ( 'partStack' )
+            // InternalPerspectiveDsl.g:25:9: 'partStack'
             {
-            match("spaceVolume"); 
+            match("partStack"); 
 
 
             }
@@ -469,10 +480,10 @@
         try {
             int _type = T__28;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:26:7: ( 'partStack' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:26:9: 'partStack'
+            // InternalPerspectiveDsl.g:26:7: ( 'part' )
+            // InternalPerspectiveDsl.g:26:9: 'part'
             {
-            match("partStack"); 
+            match("part"); 
 
 
             }
@@ -490,10 +501,10 @@
         try {
             int _type = T__29;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:27:7: ( 'part' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:27:9: 'part'
+            // InternalPerspectiveDsl.g:27:7: ( 'view' )
+            // InternalPerspectiveDsl.g:27:9: 'view'
             {
-            match("part"); 
+            match("view"); 
 
 
             }
@@ -511,10 +522,10 @@
         try {
             int _type = T__30;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:28:7: ( 'view' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:28:9: 'view'
+            // InternalPerspectiveDsl.g:28:7: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:28:9: 'isClosable'
             {
-            match("view"); 
+            match("isClosable"); 
 
 
             }
@@ -532,10 +543,10 @@
         try {
             int _type = T__31;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:29:7: ( 'isClosable' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:29:9: 'isClosable'
+            // InternalPerspectiveDsl.g:29:7: ( 'select' )
+            // InternalPerspectiveDsl.g:29:9: 'select'
             {
-            match("isClosable"); 
+            match("select"); 
 
 
             }
@@ -553,10 +564,10 @@
         try {
             int _type = T__32;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:30:7: ( 'select' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:30:9: 'select'
+            // InternalPerspectiveDsl.g:30:7: ( 'table' )
+            // InternalPerspectiveDsl.g:30:9: 'table'
             {
-            match("select"); 
+            match("table"); 
 
 
             }
@@ -574,10 +585,10 @@
         try {
             int _type = T__33;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:31:7: ( 'table' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:31:9: 'table'
+            // InternalPerspectiveDsl.g:31:7: ( 'grid' )
+            // InternalPerspectiveDsl.g:31:9: 'grid'
             {
-            match("table"); 
+            match("grid"); 
 
 
             }
@@ -595,10 +606,10 @@
         try {
             int _type = T__34;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:32:7: ( 'grid' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:32:9: 'grid'
+            // InternalPerspectiveDsl.g:32:7: ( 'bean' )
+            // InternalPerspectiveDsl.g:32:9: 'bean'
             {
-            match("grid"); 
+            match("bean"); 
 
 
             }
@@ -616,8 +627,8 @@
         try {
             int _type = T__35;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:33:7: ( 'chart' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:33:9: 'chart'
+            // InternalPerspectiveDsl.g:33:7: ( 'chart' )
+            // InternalPerspectiveDsl.g:33:9: 'chart'
             {
             match("chart"); 
 
@@ -637,8 +648,8 @@
         try {
             int _type = T__36;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:34:7: ( 'report' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:34:9: 'report'
+            // InternalPerspectiveDsl.g:34:7: ( 'report' )
+            // InternalPerspectiveDsl.g:34:9: 'report'
             {
             match("report"); 
 
@@ -658,8 +669,8 @@
         try {
             int _type = T__37;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:35:7: ( 'organigram' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:35:9: 'organigram'
+            // InternalPerspectiveDsl.g:35:7: ( 'organigram' )
+            // InternalPerspectiveDsl.g:35:9: 'organigram'
             {
             match("organigram"); 
 
@@ -679,8 +690,8 @@
         try {
             int _type = T__38;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:36:7: ( 'topology' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:36:9: 'topology'
+            // InternalPerspectiveDsl.g:36:7: ( 'topology' )
+            // InternalPerspectiveDsl.g:36:9: 'topology'
             {
             match("topology"); 
 
@@ -700,8 +711,8 @@
         try {
             int _type = T__39;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:37:7: ( 'dialog' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:37:9: 'dialog'
+            // InternalPerspectiveDsl.g:37:7: ( 'dialog' )
+            // InternalPerspectiveDsl.g:37:9: 'dialog'
             {
             match("dialog"); 
 
@@ -721,8 +732,8 @@
         try {
             int _type = T__40;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:38:7: ( 'bpmn' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:38:9: 'bpmn'
+            // InternalPerspectiveDsl.g:38:7: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:38:9: 'bpmn'
             {
             match("bpmn"); 
 
@@ -742,10 +753,11 @@
         try {
             int _type = T__41;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:39:7: ( '.' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:39:9: '.'
+            // InternalPerspectiveDsl.g:39:7: ( 'kanban' )
+            // InternalPerspectiveDsl.g:39:9: 'kanban'
             {
-            match('.'); 
+            match("kanban"); 
+
 
             }
 
@@ -762,10 +774,11 @@
         try {
             int _type = T__42;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:40:7: ( '*' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:40:9: '*'
+            // InternalPerspectiveDsl.g:40:7: ( 'of' )
+            // InternalPerspectiveDsl.g:40:9: 'of'
             {
-            match('*'); 
+            match("of"); 
+
 
             }
 
@@ -782,10 +795,11 @@
         try {
             int _type = T__43;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:41:7: ( '@' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:41:9: '@'
+            // InternalPerspectiveDsl.g:41:7: ( 'card' )
+            // InternalPerspectiveDsl.g:41:9: 'card'
             {
-            match('@'); 
+            match("card"); 
+
 
             }
 
@@ -802,10 +816,11 @@
         try {
             int _type = T__44;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:42:7: ( '(' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:42:9: '('
+            // InternalPerspectiveDsl.g:42:7: ( 'welcome' )
+            // InternalPerspectiveDsl.g:42:9: 'welcome'
             {
-            match('('); 
+            match("welcome"); 
+
 
             }
 
@@ -822,10 +837,11 @@
         try {
             int _type = T__45;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:43:7: ( ',' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:43:9: ','
+            // InternalPerspectiveDsl.g:43:7: ( 'search' )
+            // InternalPerspectiveDsl.g:43:9: 'search'
             {
-            match(','); 
+            match("search"); 
+
 
             }
 
@@ -842,10 +858,11 @@
         try {
             int _type = T__46;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:44:7: ( ')' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:44:9: ')'
+            // InternalPerspectiveDsl.g:44:7: ( 'in' )
+            // InternalPerspectiveDsl.g:44:9: 'in'
             {
-            match(')'); 
+            match("in"); 
+
 
             }
 
@@ -862,10 +879,11 @@
         try {
             int _type = T__47;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:45:7: ( '=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:45:9: '='
+            // InternalPerspectiveDsl.g:45:7: ( 'depth' )
+            // InternalPerspectiveDsl.g:45:9: 'depth'
             {
-            match('='); 
+            match("depth"); 
+
 
             }
 
@@ -882,10 +900,11 @@
         try {
             int _type = T__48;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:46:7: ( '#' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:46:9: '#'
+            // InternalPerspectiveDsl.g:46:7: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:46:9: 'filterColumns'
             {
-            match('#'); 
+            match("filterColumns"); 
+
 
             }
 
@@ -902,10 +921,11 @@
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:47:7: ( '[' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:47:9: '['
+            // InternalPerspectiveDsl.g:47:7: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:47:9: 'dataInterchange'
             {
-            match('['); 
+            match("dataInterchange"); 
+
 
             }
 
@@ -922,10 +942,11 @@
         try {
             int _type = T__50;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:48:7: ( ']' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:48:9: ']'
+            // InternalPerspectiveDsl.g:48:7: ( 'import' )
+            // InternalPerspectiveDsl.g:48:9: 'import'
             {
-            match(']'); 
+            match("import"); 
+
 
             }
 
@@ -942,10 +963,10 @@
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:49:7: ( '+=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:49:9: '+='
+            // InternalPerspectiveDsl.g:49:7: ( 'static' )
+            // InternalPerspectiveDsl.g:49:9: 'static'
             {
-            match("+="); 
+            match("static"); 
 
 
             }
@@ -963,10 +984,10 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:50:7: ( '-=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:50:9: '-='
+            // InternalPerspectiveDsl.g:50:7: ( 'extension' )
+            // InternalPerspectiveDsl.g:50:9: 'extension'
             {
-            match("-="); 
+            match("extension"); 
 
 
             }
@@ -984,11 +1005,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:51:7: ( '*=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:51:9: '*='
+            // InternalPerspectiveDsl.g:51:7: ( '*' )
+            // InternalPerspectiveDsl.g:51:9: '*'
             {
-            match("*="); 
-
+            match('*'); 
 
             }
 
@@ -1005,10 +1025,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:52:7: ( '/=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:52:9: '/='
+            // InternalPerspectiveDsl.g:52:7: ( 'ns' )
+            // InternalPerspectiveDsl.g:52:9: 'ns'
             {
-            match("/="); 
+            match("ns"); 
 
 
             }
@@ -1026,11 +1046,10 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:53:7: ( '%=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:53:9: '%='
+            // InternalPerspectiveDsl.g:53:7: ( ';' )
+            // InternalPerspectiveDsl.g:53:9: ';'
             {
-            match("%="); 
-
+            match(';'); 
 
             }
 
@@ -1047,10 +1066,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:54:7: ( '<' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:54:9: '<'
+            // InternalPerspectiveDsl.g:54:7: ( '@' )
+            // InternalPerspectiveDsl.g:54:9: '@'
             {
-            match('<'); 
+            match('@'); 
 
             }
 
@@ -1067,10 +1086,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:55:7: ( '>' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:55:9: '>'
+            // InternalPerspectiveDsl.g:55:7: ( '(' )
+            // InternalPerspectiveDsl.g:55:9: '('
             {
-            match('>'); 
+            match('('); 
 
             }
 
@@ -1087,11 +1106,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:56:7: ( '>=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:56:9: '>='
+            // InternalPerspectiveDsl.g:56:7: ( ',' )
+            // InternalPerspectiveDsl.g:56:9: ','
             {
-            match(">="); 
-
+            match(','); 
 
             }
 
@@ -1108,11 +1126,10 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:57:7: ( '||' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:57:9: '||'
+            // InternalPerspectiveDsl.g:57:7: ( ')' )
+            // InternalPerspectiveDsl.g:57:9: ')'
             {
-            match("||"); 
-
+            match(')'); 
 
             }
 
@@ -1129,11 +1146,10 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:58:7: ( '&&' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:58:9: '&&'
+            // InternalPerspectiveDsl.g:58:7: ( '=' )
+            // InternalPerspectiveDsl.g:58:9: '='
             {
-            match("&&"); 
-
+            match('='); 
 
             }
 
@@ -1150,11 +1166,10 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:59:7: ( '==' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:59:9: '=='
+            // InternalPerspectiveDsl.g:59:7: ( '#' )
+            // InternalPerspectiveDsl.g:59:9: '#'
             {
-            match("=="); 
-
+            match('#'); 
 
             }
 
@@ -1171,11 +1186,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:60:7: ( '!=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:60:9: '!='
+            // InternalPerspectiveDsl.g:60:7: ( '[' )
+            // InternalPerspectiveDsl.g:60:9: '['
             {
-            match("!="); 
-
+            match('['); 
 
             }
 
@@ -1192,11 +1206,10 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:61:7: ( '===' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:61:9: '==='
+            // InternalPerspectiveDsl.g:61:7: ( ']' )
+            // InternalPerspectiveDsl.g:61:9: ']'
             {
-            match("==="); 
-
+            match(']'); 
 
             }
 
@@ -1213,10 +1226,10 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:62:7: ( '!==' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:62:9: '!=='
+            // InternalPerspectiveDsl.g:62:7: ( '+=' )
+            // InternalPerspectiveDsl.g:62:9: '+='
             {
-            match("!=="); 
+            match("+="); 
 
 
             }
@@ -1234,10 +1247,10 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:63:7: ( 'instanceof' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:63:9: 'instanceof'
+            // InternalPerspectiveDsl.g:63:7: ( '-=' )
+            // InternalPerspectiveDsl.g:63:9: '-='
             {
-            match("instanceof"); 
+            match("-="); 
 
 
             }
@@ -1255,10 +1268,10 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:64:7: ( '->' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:64:9: '->'
+            // InternalPerspectiveDsl.g:64:7: ( '*=' )
+            // InternalPerspectiveDsl.g:64:9: '*='
             {
-            match("->"); 
+            match("*="); 
 
 
             }
@@ -1276,10 +1289,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:65:7: ( '..<' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:65:9: '..<'
+            // InternalPerspectiveDsl.g:65:7: ( '/=' )
+            // InternalPerspectiveDsl.g:65:9: '/='
             {
-            match("..<"); 
+            match("/="); 
 
 
             }
@@ -1297,10 +1310,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:66:7: ( '..' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:66:9: '..'
+            // InternalPerspectiveDsl.g:66:7: ( '%=' )
+            // InternalPerspectiveDsl.g:66:9: '%='
             {
-            match(".."); 
+            match("%="); 
 
 
             }
@@ -1318,11 +1331,10 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:67:7: ( '=>' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:67:9: '=>'
+            // InternalPerspectiveDsl.g:67:7: ( '<' )
+            // InternalPerspectiveDsl.g:67:9: '<'
             {
-            match("=>"); 
-
+            match('<'); 
 
             }
 
@@ -1339,11 +1351,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:68:7: ( '<>' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:68:9: '<>'
+            // InternalPerspectiveDsl.g:68:7: ( '>' )
+            // InternalPerspectiveDsl.g:68:9: '>'
             {
-            match("<>"); 
-
+            match('>'); 
 
             }
 
@@ -1360,10 +1371,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:69:7: ( '?:' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:69:9: '?:'
+            // InternalPerspectiveDsl.g:69:7: ( '>=' )
+            // InternalPerspectiveDsl.g:69:9: '>='
             {
-            match("?:"); 
+            match(">="); 
 
 
             }
@@ -1381,10 +1392,11 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:70:7: ( '+' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:70:9: '+'
+            // InternalPerspectiveDsl.g:70:7: ( '||' )
+            // InternalPerspectiveDsl.g:70:9: '||'
             {
-            match('+'); 
+            match("||"); 
+
 
             }
 
@@ -1401,10 +1413,11 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:71:7: ( '-' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:71:9: '-'
+            // InternalPerspectiveDsl.g:71:7: ( '&&' )
+            // InternalPerspectiveDsl.g:71:9: '&&'
             {
-            match('-'); 
+            match("&&"); 
+
 
             }
 
@@ -1421,10 +1434,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:72:7: ( '**' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:72:9: '**'
+            // InternalPerspectiveDsl.g:72:7: ( '==' )
+            // InternalPerspectiveDsl.g:72:9: '=='
             {
-            match("**"); 
+            match("=="); 
 
 
             }
@@ -1442,10 +1455,11 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:73:7: ( '/' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:73:9: '/'
+            // InternalPerspectiveDsl.g:73:7: ( '!=' )
+            // InternalPerspectiveDsl.g:73:9: '!='
             {
-            match('/'); 
+            match("!="); 
+
 
             }
 
@@ -1462,10 +1476,11 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:74:7: ( '%' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:74:9: '%'
+            // InternalPerspectiveDsl.g:74:7: ( '===' )
+            // InternalPerspectiveDsl.g:74:9: '==='
             {
-            match('%'); 
+            match("==="); 
+
 
             }
 
@@ -1482,10 +1497,11 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:75:7: ( '!' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:75:9: '!'
+            // InternalPerspectiveDsl.g:75:7: ( '!==' )
+            // InternalPerspectiveDsl.g:75:9: '!=='
             {
-            match('!'); 
+            match("!=="); 
+
 
             }
 
@@ -1502,10 +1518,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:76:7: ( 'as' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:76:9: 'as'
+            // InternalPerspectiveDsl.g:76:7: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:76:9: 'instanceof'
             {
-            match("as"); 
+            match("instanceof"); 
 
 
             }
@@ -1523,10 +1539,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:77:7: ( '++' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:77:9: '++'
+            // InternalPerspectiveDsl.g:77:7: ( '->' )
+            // InternalPerspectiveDsl.g:77:9: '->'
             {
-            match("++"); 
+            match("->"); 
 
 
             }
@@ -1544,10 +1560,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:78:7: ( '--' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:78:9: '--'
+            // InternalPerspectiveDsl.g:78:7: ( '..<' )
+            // InternalPerspectiveDsl.g:78:9: '..<'
             {
-            match("--"); 
+            match("..<"); 
 
 
             }
@@ -1565,10 +1581,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:79:7: ( '::' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:79:9: '::'
+            // InternalPerspectiveDsl.g:79:7: ( '..' )
+            // InternalPerspectiveDsl.g:79:9: '..'
             {
-            match("::"); 
+            match(".."); 
 
 
             }
@@ -1586,10 +1602,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:80:7: ( '?.' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:80:9: '?.'
+            // InternalPerspectiveDsl.g:80:7: ( '=>' )
+            // InternalPerspectiveDsl.g:80:9: '=>'
             {
-            match("?."); 
+            match("=>"); 
 
 
             }
@@ -1607,10 +1623,11 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:81:7: ( '|' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:81:9: '|'
+            // InternalPerspectiveDsl.g:81:7: ( '<>' )
+            // InternalPerspectiveDsl.g:81:9: '<>'
             {
-            match('|'); 
+            match("<>"); 
+
 
             }
 
@@ -1627,10 +1644,11 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:82:7: ( ';' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:82:9: ';'
+            // InternalPerspectiveDsl.g:82:7: ( '?:' )
+            // InternalPerspectiveDsl.g:82:9: '?:'
             {
-            match(';'); 
+            match("?:"); 
+
 
             }
 
@@ -1647,11 +1665,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:83:7: ( 'if' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:83:9: 'if'
+            // InternalPerspectiveDsl.g:83:7: ( '+' )
+            // InternalPerspectiveDsl.g:83:9: '+'
             {
-            match("if"); 
-
+            match('+'); 
 
             }
 
@@ -1668,11 +1685,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:84:7: ( 'else' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:84:9: 'else'
+            // InternalPerspectiveDsl.g:84:7: ( '-' )
+            // InternalPerspectiveDsl.g:84:9: '-'
             {
-            match("else"); 
-
+            match('-'); 
 
             }
 
@@ -1689,10 +1705,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:85:7: ( 'switch' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:85:9: 'switch'
+            // InternalPerspectiveDsl.g:85:7: ( '**' )
+            // InternalPerspectiveDsl.g:85:9: '**'
             {
-            match("switch"); 
+            match("**"); 
 
 
             }
@@ -1710,10 +1726,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:86:7: ( ':' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:86:9: ':'
+            // InternalPerspectiveDsl.g:86:7: ( '/' )
+            // InternalPerspectiveDsl.g:86:9: '/'
             {
-            match(':'); 
+            match('/'); 
 
             }
 
@@ -1730,11 +1746,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:87:7: ( 'default' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:87:9: 'default'
+            // InternalPerspectiveDsl.g:87:7: ( '%' )
+            // InternalPerspectiveDsl.g:87:9: '%'
             {
-            match("default"); 
-
+            match('%'); 
 
             }
 
@@ -1751,11 +1766,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:88:7: ( 'case' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:88:9: 'case'
+            // InternalPerspectiveDsl.g:88:7: ( '!' )
+            // InternalPerspectiveDsl.g:88:9: '!'
             {
-            match("case"); 
-
+            match('!'); 
 
             }
 
@@ -1772,10 +1786,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:89:7: ( 'for' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:89:9: 'for'
+            // InternalPerspectiveDsl.g:89:7: ( 'as' )
+            // InternalPerspectiveDsl.g:89:9: 'as'
             {
-            match("for"); 
+            match("as"); 
 
 
             }
@@ -1793,10 +1807,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:90:7: ( 'while' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:90:9: 'while'
+            // InternalPerspectiveDsl.g:90:7: ( '++' )
+            // InternalPerspectiveDsl.g:90:9: '++'
             {
-            match("while"); 
+            match("++"); 
 
 
             }
@@ -1814,10 +1828,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:91:7: ( 'do' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:91:9: 'do'
+            // InternalPerspectiveDsl.g:91:7: ( '--' )
+            // InternalPerspectiveDsl.g:91:9: '--'
             {
-            match("do"); 
+            match("--"); 
 
 
             }
@@ -1835,11 +1849,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:92:7: ( 'var' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:92:9: 'var'
+            // InternalPerspectiveDsl.g:92:7: ( '.' )
+            // InternalPerspectiveDsl.g:92:9: '.'
             {
-            match("var"); 
-
+            match('.'); 
 
             }
 
@@ -1856,10 +1869,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:93:7: ( 'val' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:93:9: 'val'
+            // InternalPerspectiveDsl.g:93:7: ( '::' )
+            // InternalPerspectiveDsl.g:93:9: '::'
             {
-            match("val"); 
+            match("::"); 
 
 
             }
@@ -1877,10 +1890,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:94:7: ( 'extends' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:94:9: 'extends'
+            // InternalPerspectiveDsl.g:94:7: ( '?.' )
+            // InternalPerspectiveDsl.g:94:9: '?.'
             {
-            match("extends"); 
+            match("?."); 
 
 
             }
@@ -1898,11 +1911,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:95:7: ( 'static' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:95:9: 'static'
+            // InternalPerspectiveDsl.g:95:7: ( '|' )
+            // InternalPerspectiveDsl.g:95:9: '|'
             {
-            match("static"); 
-
+            match('|'); 
 
             }
 
@@ -1919,10 +1931,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:96:7: ( 'extension' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:96:9: 'extension'
+            // InternalPerspectiveDsl.g:96:7: ( 'if' )
+            // InternalPerspectiveDsl.g:96:9: 'if'
             {
-            match("extension"); 
+            match("if"); 
 
 
             }
@@ -1940,10 +1952,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:97:7: ( 'super' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:97:9: 'super'
+            // InternalPerspectiveDsl.g:97:7: ( 'else' )
+            // InternalPerspectiveDsl.g:97:9: 'else'
             {
-            match("super"); 
+            match("else"); 
 
 
             }
@@ -1961,10 +1973,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:98:8: ( 'new' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:98:10: 'new'
+            // InternalPerspectiveDsl.g:98:8: ( 'switch' )
+            // InternalPerspectiveDsl.g:98:10: 'switch'
             {
-            match("new"); 
+            match("switch"); 
 
 
             }
@@ -1982,11 +1994,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:99:8: ( 'false' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:99:10: 'false'
+            // InternalPerspectiveDsl.g:99:8: ( ':' )
+            // InternalPerspectiveDsl.g:99:10: ':'
             {
-            match("false"); 
-
+            match(':'); 
 
             }
 
@@ -2003,10 +2014,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:100:8: ( 'true' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:100:10: 'true'
+            // InternalPerspectiveDsl.g:100:8: ( 'default' )
+            // InternalPerspectiveDsl.g:100:10: 'default'
             {
-            match("true"); 
+            match("default"); 
 
 
             }
@@ -2024,10 +2035,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:101:8: ( 'null' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:101:10: 'null'
+            // InternalPerspectiveDsl.g:101:8: ( 'case' )
+            // InternalPerspectiveDsl.g:101:10: 'case'
             {
-            match("null"); 
+            match("case"); 
 
 
             }
@@ -2045,10 +2056,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:102:8: ( 'typeof' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:102:10: 'typeof'
+            // InternalPerspectiveDsl.g:102:8: ( 'for' )
+            // InternalPerspectiveDsl.g:102:10: 'for'
             {
-            match("typeof"); 
+            match("for"); 
 
 
             }
@@ -2066,10 +2077,10 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:103:8: ( 'throw' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:103:10: 'throw'
+            // InternalPerspectiveDsl.g:103:8: ( 'while' )
+            // InternalPerspectiveDsl.g:103:10: 'while'
             {
-            match("throw"); 
+            match("while"); 
 
 
             }
@@ -2087,10 +2098,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:104:8: ( 'return' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:104:10: 'return'
+            // InternalPerspectiveDsl.g:104:8: ( 'do' )
+            // InternalPerspectiveDsl.g:104:10: 'do'
             {
-            match("return"); 
+            match("do"); 
 
 
             }
@@ -2108,10 +2119,10 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:105:8: ( 'try' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:105:10: 'try'
+            // InternalPerspectiveDsl.g:105:8: ( 'var' )
+            // InternalPerspectiveDsl.g:105:10: 'var'
             {
-            match("try"); 
+            match("var"); 
 
 
             }
@@ -2129,10 +2140,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:106:8: ( 'finally' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:106:10: 'finally'
+            // InternalPerspectiveDsl.g:106:8: ( 'val' )
+            // InternalPerspectiveDsl.g:106:10: 'val'
             {
-            match("finally"); 
+            match("val"); 
 
 
             }
@@ -2150,10 +2161,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:107:8: ( 'synchronized' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:107:10: 'synchronized'
+            // InternalPerspectiveDsl.g:107:8: ( 'extends' )
+            // InternalPerspectiveDsl.g:107:10: 'extends'
             {
-            match("synchronized"); 
+            match("extends"); 
 
 
             }
@@ -2171,10 +2182,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:108:8: ( 'catch' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:108:10: 'catch'
+            // InternalPerspectiveDsl.g:108:8: ( 'super' )
+            // InternalPerspectiveDsl.g:108:10: 'super'
             {
-            match("catch"); 
+            match("super"); 
 
 
             }
@@ -2192,10 +2203,11 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:109:8: ( '?' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:109:10: '?'
+            // InternalPerspectiveDsl.g:109:8: ( 'new' )
+            // InternalPerspectiveDsl.g:109:10: 'new'
             {
-            match('?'); 
+            match("new"); 
+
 
             }
 
@@ -2212,10 +2224,11 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:110:8: ( '&' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:110:10: '&'
+            // InternalPerspectiveDsl.g:110:8: ( 'false' )
+            // InternalPerspectiveDsl.g:110:10: 'false'
             {
-            match('&'); 
+            match("false"); 
+
 
             }
 
@@ -2232,10 +2245,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:111:8: ( 'horizontal' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:111:10: 'horizontal'
+            // InternalPerspectiveDsl.g:111:8: ( 'true' )
+            // InternalPerspectiveDsl.g:111:10: 'true'
             {
-            match("horizontal"); 
+            match("true"); 
 
 
             }
@@ -2253,10 +2266,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:112:8: ( 'vertical' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:112:10: 'vertical'
+            // InternalPerspectiveDsl.g:112:8: ( 'null' )
+            // InternalPerspectiveDsl.g:112:10: 'null'
             {
-            match("vertical"); 
+            match("null"); 
 
 
             }
@@ -2269,15 +2282,244 @@
     }
     // $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;
+            // InternalPerspectiveDsl.g:113:8: ( 'typeof' )
+            // InternalPerspectiveDsl.g:113:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:114:8: ( 'throw' )
+            // InternalPerspectiveDsl.g:114:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:115:8: ( 'return' )
+            // InternalPerspectiveDsl.g:115:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:116:8: ( 'try' )
+            // InternalPerspectiveDsl.g:116:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:117:8: ( 'finally' )
+            // InternalPerspectiveDsl.g:117:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:118:8: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:118:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:119:8: ( 'catch' )
+            // InternalPerspectiveDsl.g:119:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:120:8: ( '?' )
+            // InternalPerspectiveDsl.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;
+            // InternalPerspectiveDsl.g:121:8: ( '&' )
+            // InternalPerspectiveDsl.g:121:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:122:8: ( 'horizontal' )
+            // InternalPerspectiveDsl.g:122:10: 'horizontal'
+            {
+            match("horizontal"); 
+
+
+            }
+
+            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;
+            // InternalPerspectiveDsl.g:123:8: ( 'vertical' )
+            // InternalPerspectiveDsl.g:123:10: 'vertical'
+            {
+            match("vertical"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
     // $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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:8909:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalPerspectiveDsl.g:8909:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:12: ( '0x' | '0X' )
+            // InternalPerspectiveDsl.g:8909:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2305,7 +2547,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:13: '0x'
+                    // InternalPerspectiveDsl.g:8909:13: '0x'
                     {
                     match("0x"); 
 
@@ -2313,7 +2555,7 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:18: '0X'
+                    // InternalPerspectiveDsl.g:8909:18: '0X'
                     {
                     match("0X"); 
 
@@ -2323,7 +2565,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalPerspectiveDsl.g:8909:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2337,7 +2579,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:
+            	    // InternalPerspectiveDsl.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();
@@ -2361,7 +2603,7 @@
                 cnt2++;
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:8909:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2370,10 +2612,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:8909:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:8909:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2391,7 +2633,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalPerspectiveDsl.g:8909:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2415,7 +2657,7 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8237:84: ( 'l' | 'L' )
+                            // InternalPerspectiveDsl.g:8909:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2454,11 +2696,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8239:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8239:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:8911:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalPerspectiveDsl.g:8911:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8239:21: ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:8911:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2471,7 +2713,7 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:
+            	    // InternalPerspectiveDsl.g:
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
             	        input.consume();
@@ -2507,11 +2749,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8241:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8241:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:8913:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalPerspectiveDsl.g:8913: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8241:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalPerspectiveDsl.g:8913:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2520,7 +2762,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8241:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalPerspectiveDsl.g:8913:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2531,7 +2773,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8241:36: ( '+' | '-' )?
+                    // InternalPerspectiveDsl.g:8913:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2540,7 +2782,7 @@
                     }
                     switch (alt6) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:
+                            // InternalPerspectiveDsl.g:
                             {
                             if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                                 input.consume();
@@ -2564,7 +2806,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8241:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:8913:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2576,7 +2818,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8241:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalPerspectiveDsl.g:8913:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2600,7 +2842,7 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8241:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalPerspectiveDsl.g:8913: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();
@@ -2633,10 +2875,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8243:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8243:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:8915:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalPerspectiveDsl.g:8915:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8243:11: ( '^' )?
+            // InternalPerspectiveDsl.g:8915:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2645,7 +2887,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8243:11: '^'
+                    // InternalPerspectiveDsl.g:8915:11: '^'
                     {
                     match('^'); 
 
@@ -2663,7 +2905,7 @@
                 recover(mse);
                 throw mse;}
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8243:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:8915:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -2676,7 +2918,7 @@
 
                 switch (alt10) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:
+            	    // InternalPerspectiveDsl.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();
@@ -2712,10 +2954,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:8917:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalPerspectiveDsl.g:8917:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:8917:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -2733,10 +2975,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalPerspectiveDsl.g:8917:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalPerspectiveDsl.g:8917:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -2752,7 +2994,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:21: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:8917:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2760,7 +3002,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalPerspectiveDsl.g:8917:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2780,7 +3022,7 @@
                         }
                     } while (true);
 
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:44: ( '\"' )?
+                    // InternalPerspectiveDsl.g:8917:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -2789,7 +3031,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:44: '\"'
+                            // InternalPerspectiveDsl.g:8917:44: '\"'
                             {
                             match('\"'); 
 
@@ -2802,10 +3044,10 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalPerspectiveDsl.g:8917:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalPerspectiveDsl.g:8917:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -2821,7 +3063,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:55: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:8917:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2829,7 +3071,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalPerspectiveDsl.g:8917:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2849,7 +3091,7 @@
                         }
                     } while (true);
 
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:79: ( '\\'' )?
+                    // InternalPerspectiveDsl.g:8917:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -2858,7 +3100,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8245:79: '\\''
+                            // InternalPerspectiveDsl.g:8917:79: '\\''
                             {
                             match('\''); 
 
@@ -2889,12 +3131,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8247:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8247:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalPerspectiveDsl.g:8919:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalPerspectiveDsl.g:8919:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8247:24: ( options {greedy=false; } : . )*
+            // InternalPerspectiveDsl.g:8919:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2919,7 +3161,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8247:52: .
+            	    // InternalPerspectiveDsl.g:8919:52: .
             	    {
             	    matchAny(); 
 
@@ -2949,12 +3191,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8249:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8249:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:8921:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalPerspectiveDsl.g:8921:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8249:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalPerspectiveDsl.g:8921:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -2967,7 +3209,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8249:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalPerspectiveDsl.g:8921: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();
@@ -2987,7 +3229,7 @@
                 }
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8249:40: ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:8921:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -2996,9 +3238,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8249:41: ( '\\r' )? '\\n'
+                    // InternalPerspectiveDsl.g:8921:41: ( '\\r' )? '\\n'
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8249:41: ( '\\r' )?
+                    // InternalPerspectiveDsl.g:8921:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3007,7 +3249,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8249:41: '\\r'
+                            // InternalPerspectiveDsl.g:8921:41: '\\r'
                             {
                             match('\r'); 
 
@@ -3039,10 +3281,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8251:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8251:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:8923:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalPerspectiveDsl.g:8923:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8251:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:8923:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3056,7 +3298,7 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:
+            	    // InternalPerspectiveDsl.g:
             	    {
             	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
             	        input.consume();
@@ -3096,8 +3338,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8253:16: ( . )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:8253:18: .
+            // InternalPerspectiveDsl.g:8925:16: ( . )
+            // InternalPerspectiveDsl.g:8925:18: .
             {
             matchAny(); 
 
@@ -3112,782 +3354,859 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=111;
+        // InternalPerspectiveDsl.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=122;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:10: T__13
+                // InternalPerspectiveDsl.g:1:10: T__13
                 {
                 mT__13(); 
 
                 }
                 break;
             case 2 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:16: T__14
+                // InternalPerspectiveDsl.g:1:16: T__14
                 {
                 mT__14(); 
 
                 }
                 break;
             case 3 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:22: T__15
+                // InternalPerspectiveDsl.g:1:22: T__15
                 {
                 mT__15(); 
 
                 }
                 break;
             case 4 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:28: T__16
+                // InternalPerspectiveDsl.g:1:28: T__16
                 {
                 mT__16(); 
 
                 }
                 break;
             case 5 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:34: T__17
+                // InternalPerspectiveDsl.g:1:34: T__17
                 {
                 mT__17(); 
 
                 }
                 break;
             case 6 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:40: T__18
+                // InternalPerspectiveDsl.g:1:40: T__18
                 {
                 mT__18(); 
 
                 }
                 break;
             case 7 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:46: T__19
+                // InternalPerspectiveDsl.g:1:46: T__19
                 {
                 mT__19(); 
 
                 }
                 break;
             case 8 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:52: T__20
+                // InternalPerspectiveDsl.g:1:52: T__20
                 {
                 mT__20(); 
 
                 }
                 break;
             case 9 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:58: T__21
+                // InternalPerspectiveDsl.g:1:58: T__21
                 {
                 mT__21(); 
 
                 }
                 break;
             case 10 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:64: T__22
+                // InternalPerspectiveDsl.g:1:64: T__22
                 {
                 mT__22(); 
 
                 }
                 break;
             case 11 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:70: T__23
+                // InternalPerspectiveDsl.g:1:70: T__23
                 {
                 mT__23(); 
 
                 }
                 break;
             case 12 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:76: T__24
+                // InternalPerspectiveDsl.g:1:76: T__24
                 {
                 mT__24(); 
 
                 }
                 break;
             case 13 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:82: T__25
+                // InternalPerspectiveDsl.g:1:82: T__25
                 {
                 mT__25(); 
 
                 }
                 break;
             case 14 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:88: T__26
+                // InternalPerspectiveDsl.g:1:88: T__26
                 {
                 mT__26(); 
 
                 }
                 break;
             case 15 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:94: T__27
+                // InternalPerspectiveDsl.g:1:94: T__27
                 {
                 mT__27(); 
 
                 }
                 break;
             case 16 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:100: T__28
+                // InternalPerspectiveDsl.g:1:100: T__28
                 {
                 mT__28(); 
 
                 }
                 break;
             case 17 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:106: T__29
+                // InternalPerspectiveDsl.g:1:106: T__29
                 {
                 mT__29(); 
 
                 }
                 break;
             case 18 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:112: T__30
+                // InternalPerspectiveDsl.g:1:112: T__30
                 {
                 mT__30(); 
 
                 }
                 break;
             case 19 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:118: T__31
+                // InternalPerspectiveDsl.g:1:118: T__31
                 {
                 mT__31(); 
 
                 }
                 break;
             case 20 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:124: T__32
+                // InternalPerspectiveDsl.g:1:124: T__32
                 {
                 mT__32(); 
 
                 }
                 break;
             case 21 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:130: T__33
+                // InternalPerspectiveDsl.g:1:130: T__33
                 {
                 mT__33(); 
 
                 }
                 break;
             case 22 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:136: T__34
+                // InternalPerspectiveDsl.g:1:136: T__34
                 {
                 mT__34(); 
 
                 }
                 break;
             case 23 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:142: T__35
+                // InternalPerspectiveDsl.g:1:142: T__35
                 {
                 mT__35(); 
 
                 }
                 break;
             case 24 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:148: T__36
+                // InternalPerspectiveDsl.g:1:148: T__36
                 {
                 mT__36(); 
 
                 }
                 break;
             case 25 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:154: T__37
+                // InternalPerspectiveDsl.g:1:154: T__37
                 {
                 mT__37(); 
 
                 }
                 break;
             case 26 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:160: T__38
+                // InternalPerspectiveDsl.g:1:160: T__38
                 {
                 mT__38(); 
 
                 }
                 break;
             case 27 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:166: T__39
+                // InternalPerspectiveDsl.g:1:166: T__39
                 {
                 mT__39(); 
 
                 }
                 break;
             case 28 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:172: T__40
+                // InternalPerspectiveDsl.g:1:172: T__40
                 {
                 mT__40(); 
 
                 }
                 break;
             case 29 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:178: T__41
+                // InternalPerspectiveDsl.g:1:178: T__41
                 {
                 mT__41(); 
 
                 }
                 break;
             case 30 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:184: T__42
+                // InternalPerspectiveDsl.g:1:184: T__42
                 {
                 mT__42(); 
 
                 }
                 break;
             case 31 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:190: T__43
+                // InternalPerspectiveDsl.g:1:190: T__43
                 {
                 mT__43(); 
 
                 }
                 break;
             case 32 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:196: T__44
+                // InternalPerspectiveDsl.g:1:196: T__44
                 {
                 mT__44(); 
 
                 }
                 break;
             case 33 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:202: T__45
+                // InternalPerspectiveDsl.g:1:202: T__45
                 {
                 mT__45(); 
 
                 }
                 break;
             case 34 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:208: T__46
+                // InternalPerspectiveDsl.g:1:208: T__46
                 {
                 mT__46(); 
 
                 }
                 break;
             case 35 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:214: T__47
+                // InternalPerspectiveDsl.g:1:214: T__47
                 {
                 mT__47(); 
 
                 }
                 break;
             case 36 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:220: T__48
+                // InternalPerspectiveDsl.g:1:220: T__48
                 {
                 mT__48(); 
 
                 }
                 break;
             case 37 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:226: T__49
+                // InternalPerspectiveDsl.g:1:226: T__49
                 {
                 mT__49(); 
 
                 }
                 break;
             case 38 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:232: T__50
+                // InternalPerspectiveDsl.g:1:232: T__50
                 {
                 mT__50(); 
 
                 }
                 break;
             case 39 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:238: T__51
+                // InternalPerspectiveDsl.g:1:238: T__51
                 {
                 mT__51(); 
 
                 }
                 break;
             case 40 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:244: T__52
+                // InternalPerspectiveDsl.g:1:244: T__52
                 {
                 mT__52(); 
 
                 }
                 break;
             case 41 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:250: T__53
+                // InternalPerspectiveDsl.g:1:250: T__53
                 {
                 mT__53(); 
 
                 }
                 break;
             case 42 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:256: T__54
+                // InternalPerspectiveDsl.g:1:256: T__54
                 {
                 mT__54(); 
 
                 }
                 break;
             case 43 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:262: T__55
+                // InternalPerspectiveDsl.g:1:262: T__55
                 {
                 mT__55(); 
 
                 }
                 break;
             case 44 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:268: T__56
+                // InternalPerspectiveDsl.g:1:268: T__56
                 {
                 mT__56(); 
 
                 }
                 break;
             case 45 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:274: T__57
+                // InternalPerspectiveDsl.g:1:274: T__57
                 {
                 mT__57(); 
 
                 }
                 break;
             case 46 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:280: T__58
+                // InternalPerspectiveDsl.g:1:280: T__58
                 {
                 mT__58(); 
 
                 }
                 break;
             case 47 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:286: T__59
+                // InternalPerspectiveDsl.g:1:286: T__59
                 {
                 mT__59(); 
 
                 }
                 break;
             case 48 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:292: T__60
+                // InternalPerspectiveDsl.g:1:292: T__60
                 {
                 mT__60(); 
 
                 }
                 break;
             case 49 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:298: T__61
+                // InternalPerspectiveDsl.g:1:298: T__61
                 {
                 mT__61(); 
 
                 }
                 break;
             case 50 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:304: T__62
+                // InternalPerspectiveDsl.g:1:304: T__62
                 {
                 mT__62(); 
 
                 }
                 break;
             case 51 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:310: T__63
+                // InternalPerspectiveDsl.g:1:310: T__63
                 {
                 mT__63(); 
 
                 }
                 break;
             case 52 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:316: T__64
+                // InternalPerspectiveDsl.g:1:316: T__64
                 {
                 mT__64(); 
 
                 }
                 break;
             case 53 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:322: T__65
+                // InternalPerspectiveDsl.g:1:322: T__65
                 {
                 mT__65(); 
 
                 }
                 break;
             case 54 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:328: T__66
+                // InternalPerspectiveDsl.g:1:328: T__66
                 {
                 mT__66(); 
 
                 }
                 break;
             case 55 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:334: T__67
+                // InternalPerspectiveDsl.g:1:334: T__67
                 {
                 mT__67(); 
 
                 }
                 break;
             case 56 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:340: T__68
+                // InternalPerspectiveDsl.g:1:340: T__68
                 {
                 mT__68(); 
 
                 }
                 break;
             case 57 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:346: T__69
+                // InternalPerspectiveDsl.g:1:346: T__69
                 {
                 mT__69(); 
 
                 }
                 break;
             case 58 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:352: T__70
+                // InternalPerspectiveDsl.g:1:352: T__70
                 {
                 mT__70(); 
 
                 }
                 break;
             case 59 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:358: T__71
+                // InternalPerspectiveDsl.g:1:358: T__71
                 {
                 mT__71(); 
 
                 }
                 break;
             case 60 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:364: T__72
+                // InternalPerspectiveDsl.g:1:364: T__72
                 {
                 mT__72(); 
 
                 }
                 break;
             case 61 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:370: T__73
+                // InternalPerspectiveDsl.g:1:370: T__73
                 {
                 mT__73(); 
 
                 }
                 break;
             case 62 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:376: T__74
+                // InternalPerspectiveDsl.g:1:376: T__74
                 {
                 mT__74(); 
 
                 }
                 break;
             case 63 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:382: T__75
+                // InternalPerspectiveDsl.g:1:382: T__75
                 {
                 mT__75(); 
 
                 }
                 break;
             case 64 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:388: T__76
+                // InternalPerspectiveDsl.g:1:388: T__76
                 {
                 mT__76(); 
 
                 }
                 break;
             case 65 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:394: T__77
+                // InternalPerspectiveDsl.g:1:394: T__77
                 {
                 mT__77(); 
 
                 }
                 break;
             case 66 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:400: T__78
+                // InternalPerspectiveDsl.g:1:400: T__78
                 {
                 mT__78(); 
 
                 }
                 break;
             case 67 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:406: T__79
+                // InternalPerspectiveDsl.g:1:406: T__79
                 {
                 mT__79(); 
 
                 }
                 break;
             case 68 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:412: T__80
+                // InternalPerspectiveDsl.g:1:412: T__80
                 {
                 mT__80(); 
 
                 }
                 break;
             case 69 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:418: T__81
+                // InternalPerspectiveDsl.g:1:418: T__81
                 {
                 mT__81(); 
 
                 }
                 break;
             case 70 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:424: T__82
+                // InternalPerspectiveDsl.g:1:424: T__82
                 {
                 mT__82(); 
 
                 }
                 break;
             case 71 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:430: T__83
+                // InternalPerspectiveDsl.g:1:430: T__83
                 {
                 mT__83(); 
 
                 }
                 break;
             case 72 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:436: T__84
+                // InternalPerspectiveDsl.g:1:436: T__84
                 {
                 mT__84(); 
 
                 }
                 break;
             case 73 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:442: T__85
+                // InternalPerspectiveDsl.g:1:442: T__85
                 {
                 mT__85(); 
 
                 }
                 break;
             case 74 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:448: T__86
+                // InternalPerspectiveDsl.g:1:448: T__86
                 {
                 mT__86(); 
 
                 }
                 break;
             case 75 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:454: T__87
+                // InternalPerspectiveDsl.g:1:454: T__87
                 {
                 mT__87(); 
 
                 }
                 break;
             case 76 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:460: T__88
+                // InternalPerspectiveDsl.g:1:460: T__88
                 {
                 mT__88(); 
 
                 }
                 break;
             case 77 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:466: T__89
+                // InternalPerspectiveDsl.g:1:466: T__89
                 {
                 mT__89(); 
 
                 }
                 break;
             case 78 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:472: T__90
+                // InternalPerspectiveDsl.g:1:472: T__90
                 {
                 mT__90(); 
 
                 }
                 break;
             case 79 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:478: T__91
+                // InternalPerspectiveDsl.g:1:478: T__91
                 {
                 mT__91(); 
 
                 }
                 break;
             case 80 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:484: T__92
+                // InternalPerspectiveDsl.g:1:484: T__92
                 {
                 mT__92(); 
 
                 }
                 break;
             case 81 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:490: T__93
+                // InternalPerspectiveDsl.g:1:490: T__93
                 {
                 mT__93(); 
 
                 }
                 break;
             case 82 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:496: T__94
+                // InternalPerspectiveDsl.g:1:496: T__94
                 {
                 mT__94(); 
 
                 }
                 break;
             case 83 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:502: T__95
+                // InternalPerspectiveDsl.g:1:502: T__95
                 {
                 mT__95(); 
 
                 }
                 break;
             case 84 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:508: T__96
+                // InternalPerspectiveDsl.g:1:508: T__96
                 {
                 mT__96(); 
 
                 }
                 break;
             case 85 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:514: T__97
+                // InternalPerspectiveDsl.g:1:514: T__97
                 {
                 mT__97(); 
 
                 }
                 break;
             case 86 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:520: T__98
+                // InternalPerspectiveDsl.g:1:520: T__98
                 {
                 mT__98(); 
 
                 }
                 break;
             case 87 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:526: T__99
+                // InternalPerspectiveDsl.g:1:526: T__99
                 {
                 mT__99(); 
 
                 }
                 break;
             case 88 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:532: T__100
+                // InternalPerspectiveDsl.g:1:532: T__100
                 {
                 mT__100(); 
 
                 }
                 break;
             case 89 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:539: T__101
+                // InternalPerspectiveDsl.g:1:539: T__101
                 {
                 mT__101(); 
 
                 }
                 break;
             case 90 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:546: T__102
+                // InternalPerspectiveDsl.g:1:546: T__102
                 {
                 mT__102(); 
 
                 }
                 break;
             case 91 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:553: T__103
+                // InternalPerspectiveDsl.g:1:553: T__103
                 {
                 mT__103(); 
 
                 }
                 break;
             case 92 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:560: T__104
+                // InternalPerspectiveDsl.g:1:560: T__104
                 {
                 mT__104(); 
 
                 }
                 break;
             case 93 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:567: T__105
+                // InternalPerspectiveDsl.g:1:567: T__105
                 {
                 mT__105(); 
 
                 }
                 break;
             case 94 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:574: T__106
+                // InternalPerspectiveDsl.g:1:574: T__106
                 {
                 mT__106(); 
 
                 }
                 break;
             case 95 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:581: T__107
+                // InternalPerspectiveDsl.g:1:581: T__107
                 {
                 mT__107(); 
 
                 }
                 break;
             case 96 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:588: T__108
+                // InternalPerspectiveDsl.g:1:588: T__108
                 {
                 mT__108(); 
 
                 }
                 break;
             case 97 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:595: T__109
+                // InternalPerspectiveDsl.g:1:595: T__109
                 {
                 mT__109(); 
 
                 }
                 break;
             case 98 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:602: T__110
+                // InternalPerspectiveDsl.g:1:602: T__110
                 {
                 mT__110(); 
 
                 }
                 break;
             case 99 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:609: T__111
+                // InternalPerspectiveDsl.g:1:609: T__111
                 {
                 mT__111(); 
 
                 }
                 break;
             case 100 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:616: T__112
+                // InternalPerspectiveDsl.g:1:616: T__112
                 {
                 mT__112(); 
 
                 }
                 break;
             case 101 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:623: T__113
+                // InternalPerspectiveDsl.g:1:623: T__113
                 {
                 mT__113(); 
 
                 }
                 break;
             case 102 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:630: T__114
+                // InternalPerspectiveDsl.g:1:630: T__114
                 {
                 mT__114(); 
 
                 }
                 break;
             case 103 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:637: RULE_HEX
+                // InternalPerspectiveDsl.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // InternalPerspectiveDsl.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // InternalPerspectiveDsl.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // InternalPerspectiveDsl.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // InternalPerspectiveDsl.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // InternalPerspectiveDsl.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // InternalPerspectiveDsl.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // InternalPerspectiveDsl.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // InternalPerspectiveDsl.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // InternalPerspectiveDsl.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // InternalPerspectiveDsl.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // InternalPerspectiveDsl.g:1:714: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 104 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:646: RULE_INT
+            case 115 :
+                // InternalPerspectiveDsl.g:1:723: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 105 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:655: RULE_DECIMAL
+            case 116 :
+                // InternalPerspectiveDsl.g:1:732: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 106 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:668: RULE_ID
+            case 117 :
+                // InternalPerspectiveDsl.g:1:745: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 107 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:676: RULE_STRING
+            case 118 :
+                // InternalPerspectiveDsl.g:1:753: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 108 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:688: RULE_ML_COMMENT
+            case 119 :
+                // InternalPerspectiveDsl.g:1:765: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 109 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:704: RULE_SL_COMMENT
+            case 120 :
+                // InternalPerspectiveDsl.g:1:781: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 110 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:720: RULE_WS
+            case 121 :
+                // InternalPerspectiveDsl.g:1:797: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 111 :
-                // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1:728: RULE_ANY_OTHER
+            case 122 :
+                // InternalPerspectiveDsl.g:1:805: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -3901,310 +4220,173 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\66\2\uffff\14\66\1\132\1\135\4\uffff\1\144\3\uffff\1"+
-        "\152\1\156\1\162\1\164\1\166\1\170\1\172\1\174\1\176\1\u0081\1\u0083"+
-        "\1\uffff\5\66\2\u0090\1\62\5\uffff\3\66\3\uffff\4\66\1\u009c\2\66"+
-        "\1\u00a0\2\66\1\u00a3\25\66\1\u00c0\10\uffff\1\u00c2\32\uffff\1"+
-        "\u00c4\7\uffff\11\66\1\uffff\1\u0090\4\uffff\10\66\1\uffff\3\66"+
-        "\1\uffff\2\66\1\uffff\4\66\1\u00df\14\66\1\u00ec\1\u00ed\10\66\6"+
-        "\uffff\2\66\1\u00f8\3\66\1\u00fc\3\66\1\u0101\16\66\1\u0110\1\uffff"+
-        "\13\66\1\u011c\2\uffff\1\66\1\u011e\1\66\1\u0120\3\66\1\u0124\1"+
-        "\u0125\1\66\1\uffff\3\66\1\uffff\1\u012a\3\66\1\uffff\15\66\1\u013b"+
-        "\1\uffff\1\66\1\u013d\5\66\1\u0143\3\66\1\uffff\1\66\1\uffff\1\u0148"+
-        "\1\uffff\1\u0149\2\66\2\uffff\1\66\1\u014e\1\66\1\u0150\1\uffff"+
-        "\5\66\1\u0156\5\66\1\u015c\4\66\1\uffff\1\u0161\1\uffff\1\66\1\u0164"+
-        "\1\66\1\u0166\1\u0167\1\uffff\4\66\2\uffff\1\u016c\1\u016d\2\66"+
-        "\1\uffff\1\66\1\uffff\1\66\1\u0172\2\66\1\u0175\1\uffff\1\u0176"+
-        "\3\66\1\u017a\1\uffff\2\66\1\u017d\1\66\1\uffff\2\66\1\uffff\1\66"+
-        "\2\uffff\4\66\2\uffff\1\u0186\1\66\1\u0188\1\66\1\uffff\2\66\2\uffff"+
-        "\3\66\1\uffff\1\u018f\1\66\1\uffff\1\u0191\6\66\1\u0198\1\uffff"+
-        "\1\66\1\uffff\1\66\1\u019b\4\66\1\uffff\1\66\1\uffff\6\66\1\uffff"+
-        "\1\u01a7\1\66\1\uffff\1\66\1\u01aa\1\u01ab\1\uffff\6\66\1\u01b2"+
-        "\1\uffff\1\u01b3\1\u01b4\2\uffff\3\66\1\u01b8\1\66\1\u01ba\3\uffff"+
-        "\3\66\1\uffff\1\u01be\1\uffff\1\u01bf\1\u01c0\1\66\3\uffff\1\66"+
-        "\1\u01c3\1\uffff";
+        "\1\uffff\1\67\2\uffff\20\67\1\147\1\67\5\uffff\1\162\3\uffff\1\170\1\174\1\u0080\1\u0082\1\u0084\1\u0086\1\u0088\1\u008a\1\u008c\1\u008e\1\u0091\1\u0093\1\67\2\u0097\1\63\5\uffff\3\67\3\uffff\3\67\1\u00a4\3\67\1\u00a9\1\67\1\u00ab\1\67\1\u00ad\15\67\1\u00bf\21\67\3\uffff\1\u00d6\2\67\5\uffff\1\u00da\32\uffff\1\u00dc\1\uffff\1\u00de\6\uffff\1\67\1\uffff\1\u0097\4\uffff\11\67\1\uffff\4\67\1\uffff\1\67\1\uffff\1\67\1\uffff\4\67\1\u00f3\14\67\1\uffff\1\67\1\u0101\1\u0102\17\67\1\u0112\3\67\1\uffff\1\u0116\1\67\6\uffff\2\67\1\u011b\20\67\1\u012c\1\uffff\14\67\1\u0139\2\uffff\1\67\1\u013b\1\u013c\1\u013d\1\67\1\u013f\1\u0140\10\67\1\uffff\2\67\1\u014b\1\uffff\1\u014c\3\67\1\uffff\3\67\1\u0153\13\67\1\u015f\1\uffff\1\67\1\u0161\6\67\1\u0168\3\67\1\uffff\1\67\3\uffff\1\u016d\2\uffff\1\u016e\4\67\1\u0173\2\67\1\u0176\1\67\2\uffff\6\67\1\uffff\1\67\1\u0180\5\67\1\u0186\3\67\1\uffff\1\u018a\1\uffff\1\67\1\u018d\1\u018e\1\67\1\u0190\1\u0191\1\uffff\4\67\2\uffff\1\u0196\1\u0197\1\u0198\1\67\1\uffff\2\67\1\uffff\3\67\1\u019f\2\67\1\u01a2\1\67\1\u01a4\1\uffff\2\67\1\u01a7\2\67\1\uffff\1\67\1\u01ab\1\67\1\uffff\2\67\2\uffff\1\67\2\uffff\4\67\3\uffff\1\u01b4\1\67\1\u01b6\1\67\1\u01b8\1\67\1\uffff\2\67\1\uffff\1\67\1\uffff\1\67\1\u01be\1\uffff\3\67\1\uffff\1\u01c2\6\67\1\u01c9\1\uffff\1\67\1\uffff\1\67\1\uffff\1\67\1\u01cd\3\67\1\uffff\3\67\1\uffff\6\67\1\uffff\1\67\1\u01db\1\67\1\uffff\3\67\1\u01e0\1\u01e1\6\67\1\u01e8\1\67\1\uffff\1\u01ea\1\u01eb\1\u01ec\1\67\2\uffff\3\67\1\u01f1\1\67\1\u01f3\1\uffff\1\67\3\uffff\4\67\1\uffff\1\u01f9\1\uffff\2\67\1\u01fc\1\u01fd\1\67\1\uffff\1\u01ff\1\67\2\uffff\1\67\1\uffff\1\u0202\1\u0203\2\uffff";
     static final String DFA21_eofS =
-        "\u01c4\uffff";
+        "\u0204\uffff";
     static final String DFA21_minS =
-        "\1\0\1\141\2\uffff\1\143\1\145\1\163\1\143\2\141\1\162\1\141\1"+
-        "\162\1\141\1\145\1\160\1\56\1\52\4\uffff\1\75\3\uffff\1\53\1\55"+
-        "\1\52\1\75\1\76\1\75\1\174\1\46\1\75\1\56\1\72\1\uffff\1\154\1\141"+
-        "\1\150\1\145\1\157\2\60\1\44\5\uffff\1\143\1\162\1\157\3\uffff\1"+
-        "\160\1\157\1\103\1\163\1\44\1\146\1\141\1\44\1\145\1\143\1\44\1"+
-        "\157\1\142\1\165\1\160\1\162\1\163\1\154\1\141\1\151\1\141\1\160"+
-        "\1\156\1\147\1\145\1\154\1\162\1\151\1\141\1\163\1\160\1\155\1\74"+
-        "\10\uffff\1\75\32\uffff\1\75\7\uffff\1\163\1\164\1\162\1\154\1\156"+
-        "\1\151\1\167\1\154\1\162\1\uffff\1\60\4\uffff\1\153\1\164\1\163"+
-        "\1\143\1\157\1\156\1\154\1\164\1\uffff\1\143\1\141\1\154\1\uffff"+
-        "\1\162\1\145\1\uffff\1\154\1\157\1\154\1\145\1\44\1\145\1\157\1"+
-        "\150\1\145\1\143\2\164\1\145\1\143\1\145\1\141\1\167\2\44\1\164"+
-        "\1\144\1\162\1\145\1\143\1\157\1\165\1\156\6\uffff\2\145\1\44\1"+
-        "\163\1\141\1\154\1\44\1\154\1\151\1\141\1\44\1\160\1\145\1\162\1"+
-        "\125\1\157\1\141\1\162\1\165\1\157\1\164\1\163\1\142\1\154\1\145"+
-        "\1\44\1\uffff\1\157\1\167\1\103\1\143\1\145\1\143\1\151\1\162\1"+
-        "\150\2\156\1\44\2\uffff\1\151\1\44\1\164\1\44\1\150\2\162\2\44\1"+
-        "\156\1\uffff\1\145\1\154\1\145\1\uffff\1\44\1\172\1\147\1\164\1"+
-        "\uffff\1\145\1\163\1\164\1\122\1\163\1\156\1\151\1\154\1\147\1\141"+
-        "\1\163\1\141\1\157\1\44\1\uffff\1\146\1\44\1\157\1\164\1\126\1\150"+
-        "\1\143\1\44\1\162\1\164\1\151\1\uffff\1\143\1\uffff\1\44\1\uffff"+
-        "\1\44\1\164\1\156\2\uffff\1\144\1\44\1\154\1\44\1\uffff\1\157\1"+
-        "\145\1\141\1\143\1\163\1\44\1\111\1\141\1\143\1\142\1\164\1\44\1"+
-        "\163\1\151\1\162\1\147\1\uffff\1\44\1\uffff\1\156\1\44\1\157\2\44"+
-        "\1\uffff\1\157\1\141\1\147\1\141\2\uffff\2\44\1\163\1\151\1\uffff"+
-        "\1\171\1\uffff\1\156\1\44\1\143\1\164\1\44\1\uffff\1\44\1\142\2"+
-        "\145\1\44\1\uffff\1\153\1\142\1\44\1\171\1\uffff\1\164\1\144\1\uffff"+
-        "\1\154\2\uffff\1\156\1\164\1\162\1\154\2\uffff\1\44\1\157\1\44\1"+
-        "\164\1\uffff\1\153\1\151\2\uffff\1\154\1\157\1\144\1\uffff\1\44"+
-        "\1\151\1\uffff\1\44\1\141\1\105\1\165\2\151\1\141\1\44\1\uffff\1"+
-        "\156\1\uffff\1\141\1\44\1\166\1\145\1\146\1\40\1\uffff\1\154\1\uffff"+
-        "\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\44\1\154\1\uffff"+
-        "\1\145\2\44\1\uffff\1\151\1\156\3\145\1\156\1\44\1\uffff\2\44\2"+
-        "\uffff\1\164\1\145\1\155\1\44\1\144\1\44\3\uffff\1\171\1\162\1\145"+
-        "\1\uffff\1\44\1\uffff\2\44\1\156\3\uffff\1\164\1\44\1\uffff";
+        "\1\0\1\141\2\uffff\1\141\1\163\2\143\2\141\1\146\1\141\1\162\1\145\1\141\1\145\1\141\1\145\1\141\1\154\1\52\1\145\5\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\72\1\157\2\60\1\44\5\uffff\1\143\1\162\1\157\3\uffff\1\146\1\141\1\164\1\44\1\145\1\157\1\103\1\44\1\160\1\44\1\143\1\44\1\157\1\142\1\165\1\160\1\162\1\163\3\141\1\151\1\160\1\156\1\147\1\44\1\145\1\154\1\162\1\151\1\141\1\155\1\141\1\162\1\160\1\156\1\154\1\151\1\154\1\162\1\154\1\164\1\163\3\uffff\1\44\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\6\uffff\1\162\1\uffff\1\60\4\uffff\1\153\1\164\1\163\2\143\1\164\1\141\1\154\1\141\1\uffff\1\162\1\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\uffff\1\154\1\157\1\154\1\145\1\44\1\145\1\157\1\150\1\145\1\162\1\143\2\164\1\145\1\143\1\145\1\141\1\uffff\1\167\2\44\1\164\1\144\2\156\1\162\1\144\1\145\1\143\1\157\1\165\1\142\1\143\1\154\1\164\1\141\1\44\1\163\2\145\1\uffff\1\44\1\154\6\uffff\1\151\1\141\1\44\1\160\1\145\1\162\1\150\1\165\1\157\1\111\1\164\1\125\1\157\1\141\1\162\1\163\1\142\1\154\1\145\1\44\1\uffff\1\157\1\167\1\103\2\143\1\145\1\151\1\143\1\162\1\150\2\156\1\44\2\uffff\1\151\3\44\1\164\2\44\1\150\2\162\1\141\1\157\2\145\1\154\1\uffff\1\145\1\156\1\44\1\uffff\1\44\1\172\1\147\1\164\1\uffff\1\145\1\163\1\151\1\44\1\154\1\147\1\156\1\141\1\122\1\163\1\156\1\164\1\163\1\141\1\157\1\44\1\uffff\1\146\1\44\1\157\1\164\1\150\1\126\1\143\1\150\1\44\1\162\1\164\1\151\1\uffff\1\143\3\uffff\1\44\2\uffff\1\44\1\164\2\156\1\155\1\44\1\162\1\154\1\44\1\144\2\uffff\1\157\1\145\1\141\1\143\1\163\1\142\1\uffff\1\164\1\44\1\164\1\163\1\111\1\141\1\143\1\44\1\151\1\162\1\147\1\uffff\1\44\1\uffff\1\156\2\44\1\157\2\44\1\uffff\1\157\1\141\1\147\1\141\2\uffff\3\44\1\145\1\uffff\1\103\1\171\1\uffff\1\151\1\163\1\156\1\44\1\143\1\164\1\44\1\145\1\44\1\uffff\1\145\1\153\1\44\1\142\1\145\1\uffff\1\142\1\44\1\171\1\uffff\1\164\1\144\2\uffff\1\154\2\uffff\1\156\1\164\1\162\1\154\3\uffff\1\44\1\157\1\44\1\157\1\44\1\164\1\uffff\1\153\1\151\1\uffff\1\144\1\uffff\1\162\1\44\1\uffff\1\154\1\157\1\151\1\uffff\1\44\1\141\1\105\1\165\2\151\1\141\1\44\1\uffff\1\154\1\uffff\1\156\1\uffff\1\141\1\44\1\166\1\102\1\143\1\uffff\1\145\1\146\1\154\1\uffff\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\165\1\44\1\154\1\uffff\1\145\1\171\1\150\2\44\1\151\1\156\3\145\1\156\1\44\1\155\1\uffff\3\44\1\141\2\uffff\1\164\1\145\1\155\1\44\1\144\1\44\1\uffff\1\156\3\uffff\1\156\1\171\1\162\1\145\1\uffff\1\44\1\uffff\1\163\1\147\2\44\1\156\1\uffff\1\44\1\145\2\uffff\1\164\1\uffff\2\44\2\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\162\2\uffff\1\163\1\157\2\163\2\171\1\162\1\151\1\162"+
-        "\1\150\1\145\1\160\1\56\1\75\4\uffff\1\76\3\uffff\1\75\1\76\2\75"+
-        "\1\76\1\75\1\174\1\46\1\75\2\72\1\uffff\1\170\1\157\1\150\1\165"+
-        "\1\157\1\170\1\154\1\172\5\uffff\2\162\1\157\3\uffff\1\160\1\157"+
-        "\1\103\1\163\1\172\1\163\1\141\1\172\1\145\1\143\1\172\1\160\1\142"+
-        "\1\171\1\160\1\162\1\163\1\154\1\141\1\151\1\141\1\160\1\156\1\151"+
-        "\1\145\2\162\1\151\1\141\2\164\1\155\1\74\10\uffff\1\75\32\uffff"+
-        "\1\75\7\uffff\1\163\1\164\1\162\1\154\1\156\1\151\1\167\1\154\1"+
-        "\162\1\uffff\1\154\4\uffff\1\153\1\164\1\163\1\143\1\157\1\156\1"+
-        "\154\1\164\1\uffff\1\143\1\141\1\154\1\uffff\1\162\1\145\1\uffff"+
-        "\1\154\1\157\1\154\1\145\1\172\1\145\1\157\1\150\1\145\1\143\2\164"+
-        "\1\145\1\143\1\145\1\141\1\167\2\172\1\164\1\144\1\162\1\145\1\143"+
-        "\1\157\1\165\1\156\6\uffff\2\145\1\172\1\163\1\141\1\154\1\172\1"+
-        "\154\1\151\1\141\1\172\1\160\1\145\1\162\1\125\1\157\1\141\1\162"+
-        "\1\165\1\157\1\164\1\163\1\142\1\154\1\145\1\172\1\uffff\1\157\1"+
-        "\167\1\103\1\143\1\145\1\143\1\151\1\162\1\150\2\156\1\172\2\uffff"+
-        "\1\151\1\172\1\164\1\172\1\150\2\162\2\172\1\156\1\uffff\1\145\1"+
-        "\154\1\145\1\uffff\2\172\1\147\1\164\1\uffff\1\145\1\163\1\164\1"+
-        "\122\1\163\1\156\1\151\1\154\1\147\1\141\1\163\1\141\1\157\1\172"+
-        "\1\uffff\1\146\1\172\1\157\1\164\1\126\1\150\1\143\1\172\1\162\1"+
-        "\164\1\151\1\uffff\1\143\1\uffff\1\172\1\uffff\1\172\1\164\1\156"+
-        "\2\uffff\1\163\1\172\1\154\1\172\1\uffff\1\157\1\145\1\141\1\143"+
-        "\1\163\1\172\1\111\1\141\1\143\1\142\1\164\1\172\1\163\1\151\1\162"+
-        "\1\147\1\uffff\1\172\1\uffff\1\156\1\172\1\157\2\172\1\uffff\1\157"+
-        "\1\141\1\147\1\141\2\uffff\2\172\1\163\1\151\1\uffff\1\171\1\uffff"+
-        "\1\156\1\172\1\143\1\164\1\172\1\uffff\1\172\1\142\2\145\1\172\1"+
-        "\uffff\1\153\1\142\1\172\1\171\1\uffff\1\164\1\144\1\uffff\1\154"+
-        "\2\uffff\1\156\1\164\1\162\1\154\2\uffff\1\172\1\157\1\172\1\164"+
-        "\1\uffff\1\153\1\151\2\uffff\1\154\1\157\1\144\1\uffff\1\172\1\151"+
-        "\1\uffff\1\172\1\141\1\105\1\165\2\151\1\141\1\172\1\uffff\1\156"+
-        "\1\uffff\1\141\1\172\1\166\1\145\1\146\1\40\1\uffff\1\154\1\uffff"+
-        "\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\172\1\154\1\uffff"+
-        "\1\145\2\172\1\uffff\1\151\1\156\3\145\1\156\1\172\1\uffff\2\172"+
-        "\2\uffff\1\164\1\145\1\155\1\172\1\144\1\172\3\uffff\1\171\1\162"+
-        "\1\145\1\uffff\1\172\1\uffff\2\172\1\156\3\uffff\1\164\1\172\1\uffff";
+        "\1\uffff\1\162\2\uffff\1\157\3\163\2\171\1\162\1\151\1\162\1\160\1\150\1\145\1\141\1\150\1\157\1\170\1\75\1\165\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\1\56\2\72\1\157\1\170\1\154\1\172\5\uffff\2\162\1\157\3\uffff\1\163\1\141\1\164\1\172\1\145\1\157\1\103\1\172\1\160\1\172\1\143\1\172\1\160\1\142\1\171\1\160\1\162\1\163\1\154\2\141\1\151\1\160\1\156\1\151\1\172\1\145\2\162\1\151\1\141\1\155\1\141\2\164\1\156\1\154\1\151\1\156\1\162\1\154\1\164\1\163\3\uffff\1\172\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\6\uffff\1\162\1\uffff\1\154\4\uffff\1\153\1\164\1\163\2\143\1\164\1\141\1\154\1\141\1\uffff\1\162\1\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\uffff\1\154\1\157\1\154\1\145\1\172\1\145\1\157\1\150\1\145\1\162\1\143\2\164\1\145\1\143\1\145\1\141\1\uffff\1\167\2\172\1\164\1\144\2\156\1\162\1\144\1\145\1\143\1\157\1\165\1\142\1\143\1\154\1\164\1\141\1\172\1\163\2\145\1\uffff\1\172\1\154\6\uffff\1\151\1\141\1\172\1\160\1\145\1\162\1\150\1\165\1\157\1\111\1\164\1\125\1\157\1\141\1\162\1\163\1\142\1\154\1\145\1\172\1\uffff\1\157\1\167\1\103\2\143\1\145\1\151\1\143\1\162\1\150\2\156\1\172\2\uffff\1\151\3\172\1\164\2\172\1\150\2\162\1\141\1\157\2\145\1\154\1\uffff\1\145\1\156\1\172\1\uffff\2\172\1\147\1\164\1\uffff\1\145\1\163\1\151\1\172\1\154\1\147\1\156\1\141\1\122\1\163\1\156\1\164\1\163\1\141\1\157\1\172\1\uffff\1\146\1\172\1\157\1\164\1\150\1\126\1\143\1\150\1\172\1\162\1\164\1\151\1\uffff\1\143\3\uffff\1\172\2\uffff\1\172\1\164\2\156\1\155\1\172\1\162\1\154\1\172\1\163\2\uffff\1\157\1\145\1\141\1\143\1\163\1\142\1\uffff\1\164\1\172\1\164\1\163\1\111\1\141\1\143\1\172\1\151\1\162\1\147\1\uffff\1\172\1\uffff\1\156\2\172\1\157\2\172\1\uffff\1\157\1\141\1\147\1\141\2\uffff\3\172\1\145\1\uffff\1\103\1\171\1\uffff\1\151\1\163\1\156\1\172\1\143\1\164\1\172\1\145\1\172\1\uffff\1\145\1\153\1\172\1\142\1\145\1\uffff\1\142\1\172\1\171\1\uffff\1\164\1\144\2\uffff\1\154\2\uffff\1\156\1\164\1\162\1\154\3\uffff\1\172\1\157\1\172\1\157\1\172\1\164\1\uffff\1\153\1\151\1\uffff\1\144\1\uffff\1\162\1\172\1\uffff\1\154\1\157\1\151\1\uffff\1\172\1\141\1\105\1\165\2\151\1\141\1\172\1\uffff\1\154\1\uffff\1\156\1\uffff\1\141\1\172\1\166\1\102\1\143\1\uffff\1\145\1\146\1\154\1\uffff\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\165\1\172\1\154\1\uffff\1\145\1\171\1\150\2\172\1\151\1\156\3\145\1\156\1\172\1\155\1\uffff\3\172\1\141\2\uffff\1\164\1\145\1\155\1\172\1\144\1\172\1\uffff\1\156\3\uffff\1\156\1\171\1\162\1\145\1\uffff\1\172\1\uffff\1\163\1\147\2\172\1\156\1\uffff\1\172\1\145\2\uffff\1\164\1\uffff\2\172\2\uffff";
     static final String DFA21_acceptS =
-        "\2\uffff\1\2\1\3\16\uffff\1\37\1\40\1\41\1\42\1\uffff\1\44\1\45"+
-        "\1\46\13\uffff\1\110\10\uffff\1\152\2\153\1\156\1\157\3\uffff\1"+
-        "\152\1\2\1\3\41\uffff\1\35\1\51\1\76\1\36\1\37\1\40\1\41\1\42\1"+
-        "\uffff\1\71\1\43\1\44\1\45\1\46\1\47\1\103\1\74\1\50\1\66\1\104"+
-        "\1\75\1\52\1\154\1\155\1\77\1\53\1\100\1\72\1\54\1\56\1\55\1\57"+
-        "\1\107\1\60\1\144\1\uffff\1\101\1\73\1\106\1\143\1\105\1\114\1\110"+
-        "\11\uffff\1\147\1\uffff\1\150\1\151\1\153\1\156\10\uffff\1\111\3"+
-        "\uffff\1\121\2\uffff\1\102\33\uffff\1\67\1\70\1\63\1\61\1\64\1\62"+
-        "\32\uffff\1\137\14\uffff\1\122\1\123\12\uffff\1\117\3\uffff\1\130"+
-        "\4\uffff\1\21\16\uffff\1\132\13\uffff\1\22\1\uffff\1\26\1\uffff"+
-        "\1\116\3\uffff\1\34\1\112\4\uffff\1\133\20\uffff\1\25\1\uffff\1"+
-        "\135\5\uffff\1\127\4\uffff\1\27\1\142\4\uffff\1\131\1\uffff\1\120"+
-        "\5\uffff\1\4\5\uffff\1\33\4\uffff\1\134\2\uffff\1\24\1\uffff\1\113"+
-        "\1\125\4\uffff\1\30\1\136\4\uffff\1\1\2\uffff\1\7\1\11\3\uffff\1"+
-        "\115\2\uffff\1\13\10\uffff\1\124\1\uffff\1\140\6\uffff\1\10\1\uffff"+
-        "\1\32\6\uffff\1\146\2\uffff\1\20\3\uffff\1\6\7\uffff\1\126\2\uffff"+
-        "\1\23\1\65\6\uffff\1\31\1\145\1\5\3\uffff\1\17\1\uffff\1\15\3\uffff"+
-        "\1\141\1\12\1\14\2\uffff\1\16";
+        "\2\uffff\1\2\1\3\22\uffff\1\53\1\54\1\55\1\56\1\57\1\uffff\1\61\1\62\1\63\20\uffff\1\165\2\166\1\171\1\172\3\uffff\1\165\1\2\1\3\53\uffff\1\66\1\113\1\51\3\uffff\1\53\1\54\1\55\1\56\1\57\1\uffff\1\106\1\60\1\61\1\62\1\63\1\64\1\120\1\111\1\65\1\103\1\121\1\112\1\67\1\167\1\170\1\114\1\70\1\115\1\107\1\71\1\73\1\72\1\74\1\125\1\75\1\157\1\uffff\1\116\1\uffff\1\122\1\110\1\124\1\156\1\123\1\131\1\uffff\1\162\1\uffff\1\163\1\164\1\166\1\171\11\uffff\1\136\4\uffff\1\42\1\uffff\1\126\1\uffff\1\117\21\uffff\1\36\26\uffff\1\52\2\uffff\1\100\1\76\1\101\1\77\1\104\1\105\24\uffff\1\152\15\uffff\1\137\1\140\17\uffff\1\134\3\uffff\1\143\4\uffff\1\20\20\uffff\1\145\14\uffff\1\21\1\uffff\1\25\1\26\1\34\1\uffff\1\37\1\133\12\uffff\1\127\1\146\6\uffff\1\43\13\uffff\1\24\1\uffff\1\150\6\uffff\1\142\4\uffff\1\27\1\155\4\uffff\1\135\2\uffff\1\144\11\uffff\1\33\5\uffff\1\46\3\uffff\1\147\2\uffff\1\23\1\41\1\uffff\1\47\1\130\4\uffff\1\30\1\151\1\35\6\uffff\1\1\2\uffff\1\6\1\uffff\1\132\2\uffff\1\10\3\uffff\1\12\10\uffff\1\40\1\uffff\1\153\1\uffff\1\141\5\uffff\1\7\3\uffff\1\32\6\uffff\1\161\3\uffff\1\17\15\uffff\1\50\4\uffff\1\22\1\102\6\uffff\1\31\1\uffff\1\160\1\4\1\5\4\uffff\1\16\1\uffff\1\14\5\uffff\1\154\2\uffff\1\11\1\13\1\uffff\1\44\2\uffff\1\45\1\15";
     static final String DFA21_specialS =
-        "\1\0\u01c3\uffff}>";
+        "\1\0\u0203\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\62\2\61\2\62\1\61\22\62\1\61\1\42\1\57\1\27\1\56\1\35\1"+
-            "\41\1\60\1\23\1\25\1\21\1\32\1\24\1\33\1\20\1\34\1\53\11\54"+
-            "\1\44\1\45\1\36\1\26\1\37\1\43\1\22\32\56\1\30\1\62\1\31\1\55"+
-            "\1\56\1\62\1\7\1\17\1\15\1\5\1\46\1\47\1\14\1\52\1\4\4\56\1"+
-            "\51\1\12\1\1\1\56\1\16\1\11\1\10\1\6\1\13\1\50\3\56\1\2\1\40"+
-            "\1\3\uff82\62",
-            "\1\63\3\uffff\1\64\14\uffff\1\65",
+            "\11\63\2\62\2\63\1\62\22\63\1\62\1\47\1\60\1\34\1\57\1\42\1\46\1\61\1\30\1\32\1\24\1\37\1\31\1\40\1\50\1\41\1\54\11\55\1\52\1\26\1\43\1\33\1\44\1\51\1\27\32\57\1\35\1\63\1\36\1\56\1\57\1\63\1\7\1\15\1\16\1\4\1\23\1\22\1\14\1\53\1\6\1\57\1\20\2\57\1\25\1\12\1\1\1\57\1\17\1\11\1\10\1\5\1\13\1\21\3\57\1\2\1\45\1\3\uff82\63",
+            "\1\64\3\uffff\1\65\14\uffff\1\66",
             "",
             "",
-            "\1\72\2\uffff\1\75\6\uffff\1\71\1\74\4\uffff\1\73",
-            "\1\76\3\uffff\1\77\5\uffff\1\100",
-            "\1\101",
-            "\1\102\17\uffff\1\103",
-            "\1\105\6\uffff\1\110\6\uffff\1\104\2\uffff\1\106\6\uffff\1"+
-            "\107",
-            "\1\111\3\uffff\1\112\12\uffff\1\113\3\uffff\1\115\1\116\1"+
-            "\uffff\1\114\1\uffff\1\117",
-            "\1\120",
-            "\1\122\3\uffff\1\123\3\uffff\1\121",
-            "\1\124",
-            "\1\126\6\uffff\1\125",
+            "\1\74\3\uffff\1\72\3\uffff\1\73\5\uffff\1\75",
+            "\1\76",
+            "\1\77\2\uffff\1\103\6\uffff\1\102\1\101\4\uffff\1\100",
+            "\1\104\17\uffff\1\105",
+            "\1\107\6\uffff\1\112\6\uffff\1\106\2\uffff\1\110\6\uffff\1\111",
+            "\1\113\3\uffff\1\114\12\uffff\1\115\3\uffff\1\116\1\120\1\uffff\1\117\1\uffff\1\121",
+            "\1\123\13\uffff\1\122",
+            "\1\125\3\uffff\1\126\3\uffff\1\124",
             "\1\127",
-            "\1\130",
-            "\1\131",
-            "\1\134\22\uffff\1\133",
+            "\1\130\12\uffff\1\131",
+            "\1\133\6\uffff\1\132",
+            "\1\134",
+            "\1\135",
+            "\1\136\2\uffff\1\137",
+            "\1\142\7\uffff\1\140\5\uffff\1\141",
+            "\1\144\13\uffff\1\143",
+            "\1\146\22\uffff\1\145",
+            "\1\151\15\uffff\1\150\1\uffff\1\152",
             "",
             "",
             "",
             "",
-            "\1\142\1\143",
+            "",
+            "\1\160\1\161",
             "",
             "",
             "",
-            "\1\151\21\uffff\1\150",
-            "\1\155\17\uffff\1\153\1\154",
-            "\1\160\4\uffff\1\161\15\uffff\1\157",
-            "\1\163",
-            "\1\165",
-            "\1\167",
-            "\1\171",
-            "\1\173",
-            "\1\175",
-            "\1\u0080\13\uffff\1\177",
-            "\1\u0082",
-            "",
-            "\1\u0085\13\uffff\1\u0086",
-            "\1\u0088\7\uffff\1\u0089\5\uffff\1\u0087",
-            "\1\u008a",
-            "\1\u008b\17\uffff\1\u008c",
+            "\1\167\21\uffff\1\166",
+            "\1\173\17\uffff\1\171\1\172",
+            "\1\176\4\uffff\1\177\15\uffff\1\175",
+            "\1\u0081",
+            "\1\u0083",
+            "\1\u0085",
+            "\1\u0087",
+            "\1\u0089",
+            "\1\u008b",
             "\1\u008d",
-            "\12\u008f\10\uffff\1\u0091\1\uffff\3\u0091\5\uffff\1\u0091"+
-            "\13\uffff\1\u008e\6\uffff\1\u008f\2\uffff\1\u0091\1\uffff\3"+
-            "\u0091\5\uffff\1\u0091\13\uffff\1\u008e",
-            "\12\u008f\10\uffff\1\u0091\1\uffff\3\u0091\5\uffff\1\u0091"+
-            "\22\uffff\1\u008f\2\uffff\1\u0091\1\uffff\3\u0091\5\uffff\1"+
-            "\u0091",
-            "\1\66\34\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u0090\13\uffff\1\u008f",
+            "\1\u0092",
+            "\1\u0094",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\13\uffff\1\u0095\6\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\13\uffff\1\u0095",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "\1\67\34\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "",
             "",
             "",
             "",
             "",
-            "\1\u0094\16\uffff\1\u0095",
-            "\1\u0096",
-            "\1\u0097",
+            "\1\u009b\16\uffff\1\u009c",
+            "\1\u009d",
+            "\1\u009e",
             "",
             "",
             "",
-            "\1\u0098",
-            "\1\u0099",
-            "\1\u009a",
-            "\1\u009b",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\u009e\14\uffff\1\u009d",
-            "\1\u009f",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\u00a1",
+            "\1\u00a1\11\uffff\1\u00a0\2\uffff\1\u009f",
             "\1\u00a2",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\u00a4\1\u00a5",
+            "\1\u00a3",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u00a5",
             "\1\u00a6",
-            "\1\u00a7\3\uffff\1\u00a8",
-            "\1\u00a9",
+            "\1\u00a7",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\22\67\1\u00a8\7\67",
             "\1\u00aa",
-            "\1\u00ab",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u00ac",
-            "\1\u00ad",
-            "\1\u00ae",
-            "\1\u00af",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u00ae\1\u00af",
             "\1\u00b0",
-            "\1\u00b1",
-            "\1\u00b3\1\uffff\1\u00b2",
+            "\1\u00b1\3\uffff\1\u00b2",
+            "\1\u00b3",
             "\1\u00b4",
-            "\1\u00b6\5\uffff\1\u00b5",
-            "\1\u00b7",
+            "\1\u00b5",
+            "\1\u00b7\12\uffff\1\u00b6",
             "\1\u00b8",
             "\1\u00b9",
-            "\1\u00ba\1\u00bb",
-            "\1\u00bc\3\uffff\1\u00bd",
-            "\1\u00be",
-            "\1\u00bf",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00c1",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00be\1\uffff\1\u00bd",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u00c0",
+            "\1\u00c2\5\uffff\1\u00c1",
             "\1\u00c3",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u00c4",
             "\1\u00c5",
             "\1\u00c6",
             "\1\u00c7",
-            "\1\u00c8",
-            "\1\u00c9",
-            "\1\u00ca",
-            "\1\u00cb",
-            "\1\u00cc",
+            "\1\u00c8\1\u00c9\1\u00ca",
+            "\1\u00cb\3\uffff\1\u00cc",
             "\1\u00cd",
-            "",
-            "\12\u008f\10\uffff\1\u0091\1\uffff\3\u0091\5\uffff\1\u0091"+
-            "\22\uffff\1\u008f\2\uffff\1\u0091\1\uffff\3\u0091\5\uffff\1"+
-            "\u0091",
-            "",
-            "",
-            "",
-            "",
             "\1\u00ce",
             "\1\u00cf",
-            "\1\u00d0",
-            "\1\u00d1",
+            "\1\u00d0\1\uffff\1\u00d1",
             "\1\u00d2",
             "\1\u00d3",
             "\1\u00d4",
             "\1\u00d5",
             "",
-            "\1\u00d6",
+            "",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u00d7",
             "\1\u00d8",
             "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00d9",
-            "\1\u00da",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "",
             "\1\u00db",
-            "\1\u00dc",
+            "",
             "\1\u00dd",
-            "\1\u00de",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00df",
+            "",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "",
+            "",
+            "",
+            "",
             "\1\u00e0",
             "\1\u00e1",
             "\1\u00e2",
@@ -4214,42 +4396,37 @@
             "\1\u00e6",
             "\1\u00e7",
             "\1\u00e8",
+            "",
             "\1\u00e9",
             "\1\u00ea",
             "\1\u00eb",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u00ec",
+            "",
+            "\1\u00ed",
+            "",
             "\1\u00ee",
+            "",
             "\1\u00ef",
             "\1\u00f0",
             "\1\u00f1",
             "\1\u00f2",
-            "\1\u00f3",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u00f4",
             "\1\u00f5",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
             "\1\u00f6",
             "\1\u00f7",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u00f8",
             "\1\u00f9",
             "\1\u00fa",
             "\1\u00fb",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u00fc",
             "\1\u00fd",
             "\1\u00fe",
             "\1\u00ff",
-            "\1\66\13\uffff\12\66\7\uffff\22\66\1\u0100\7\66\4\uffff\1"+
-            "\66\1\uffff\32\66",
-            "\1\u0102",
+            "",
+            "\1\u0100",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0103",
             "\1\u0104",
             "\1\u0105",
@@ -4263,49 +4440,43 @@
             "\1\u010d",
             "\1\u010e",
             "\1\u010f",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "",
+            "\1\u0110",
             "\1\u0111",
-            "\1\u0112",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0113",
             "\1\u0114",
             "\1\u0115",
-            "\1\u0116",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0117",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u0118",
             "\1\u0119",
-            "\1\u011a",
-            "\1\u011b",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "",
-            "",
+            "\1\67\13\uffff\12\67\7\uffff\22\67\1\u011a\7\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u011c",
             "\1\u011d",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u011e",
             "\1\u011f",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u0120",
             "\1\u0121",
             "\1\u0122",
             "\1\u0123",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u0124",
+            "\1\u0125",
             "\1\u0126",
-            "",
             "\1\u0127",
             "\1\u0128",
             "\1\u0129",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u012a",
             "\1\u012b",
-            "\1\u012c",
-            "\1\u012d",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "",
+            "\1\u012d",
             "\1\u012e",
             "\1\u012f",
             "\1\u0130",
@@ -4317,226 +4488,265 @@
             "\1\u0136",
             "\1\u0137",
             "\1\u0138",
-            "\1\u0139",
-            "\1\u013a",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "",
-            "\1\u013c",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "",
+            "\1\u013a",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u013e",
-            "\1\u013f",
-            "\1\u0140",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0141",
             "\1\u0142",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u0143",
             "\1\u0144",
             "\1\u0145",
             "\1\u0146",
-            "",
             "\1\u0147",
+            "\1\u0148",
             "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u0149",
             "\1\u014a",
-            "\1\u014b",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "",
-            "",
-            "\1\u014c\16\uffff\1\u014d",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u014d",
+            "\1\u014e",
             "\1\u014f",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
             "",
+            "\1\u0150",
             "\1\u0151",
             "\1\u0152",
-            "\1\u0153",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0154",
             "\1\u0155",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u0156",
             "\1\u0157",
             "\1\u0158",
             "\1\u0159",
             "\1\u015a",
             "\1\u015b",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u015c",
             "\1\u015d",
             "\1\u015e",
-            "\1\u015f",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
             "\1\u0160",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0162",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4"+
-            "\66\1\u0163\25\66",
+            "\1\u0163",
+            "\1\u0164",
             "\1\u0165",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "",
-            "\1\u0168",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0169",
             "\1\u016a",
             "\1\u016b",
             "",
+            "\1\u016c",
             "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\u016e",
+            "",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u016f",
-            "",
             "\1\u0170",
-            "",
             "\1\u0171",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\u0173",
+            "\1\u0172",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0174",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u0175",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0178\16\uffff\1\u0177",
             "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\u0177",
-            "\1\u0178",
+            "",
             "\1\u0179",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "",
+            "\1\u017a",
             "\1\u017b",
             "\1\u017c",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u017d",
             "\1\u017e",
             "",
             "\1\u017f",
-            "\1\u0180",
-            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0181",
-            "",
-            "",
             "\1\u0182",
             "\1\u0183",
             "\1\u0184",
             "\1\u0185",
-            "",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0187",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u0188",
             "\1\u0189",
             "",
-            "\1\u018a",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
             "\1\u018b",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\4\67\1\u018c\25\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u018f",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "",
-            "",
-            "\1\u018c",
-            "\1\u018d",
-            "\1\u018e",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\u0190",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
             "\1\u0192",
             "\1\u0193",
             "\1\u0194",
             "\1\u0195",
-            "\1\u0196",
-            "\1\u0197",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
             "",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u0199",
             "",
             "\1\u019a",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u019b",
+            "",
             "\1\u019c",
             "\1\u019d",
             "\1\u019e",
-            "\1\u019f",
-            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u01a0",
-            "",
             "\1\u01a1",
-            "\1\u01a2",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u01a3",
-            "\1\u01a4",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
             "\1\u01a5",
             "\1\u01a6",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u01a8",
-            "",
             "\1\u01a9",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
             "",
+            "\1\u01aa",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u01ac",
+            "",
             "\1\u01ad",
             "\1\u01ae",
+            "",
+            "",
             "\1\u01af",
+            "",
+            "",
             "\1\u01b0",
             "\1\u01b1",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u01b2",
+            "\1\u01b3",
             "",
             "",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u01b5",
-            "\1\u01b6",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u01b7",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "\1\u01b9",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
             "",
-            "",
-            "",
+            "\1\u01ba",
             "\1\u01bb",
+            "",
             "\1\u01bc",
+            "",
             "\1\u01bd",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
             "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u01bf",
+            "\1\u01c0",
             "\1\u01c1",
             "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01ca",
+            "",
+            "\1\u01cb",
+            "",
+            "\1\u01cc",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0",
+            "",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\u01d3",
+            "",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\u01d9",
+            "",
+            "\1\u01da",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01dc",
+            "",
+            "\1\u01dd",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01e2",
+            "\1\u01e3",
+            "\1\u01e4",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01e9",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01ed",
             "",
             "",
-            "\1\u01c2",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32"+
-            "\66",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01f2",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01f4",
+            "",
+            "",
+            "",
+            "\1\u01f5",
+            "\1\u01f6",
+            "\1\u01f7",
+            "\1\u01f8",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01fe",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0200",
+            "",
+            "",
+            "\1\u0201",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
             ""
     };
 
@@ -4570,7 +4780,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 | 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 | 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;
@@ -4586,11 +4796,11 @@
 
                         else if ( (LA21_0=='}') ) {s = 3;}
 
-                        else if ( (LA21_0=='i') ) {s = 4;}
+                        else if ( (LA21_0=='d') ) {s = 4;}
 
-                        else if ( (LA21_0=='d') ) {s = 5;}
+                        else if ( (LA21_0=='u') ) {s = 5;}
 
-                        else if ( (LA21_0=='u') ) {s = 6;}
+                        else if ( (LA21_0=='i') ) {s = 6;}
 
                         else if ( (LA21_0=='a') ) {s = 7;}
 
@@ -4604,81 +4814,83 @@
 
                         else if ( (LA21_0=='g') ) {s = 12;}
 
-                        else if ( (LA21_0=='c') ) {s = 13;}
+                        else if ( (LA21_0=='b') ) {s = 13;}
 
-                        else if ( (LA21_0=='r') ) {s = 14;}
+                        else if ( (LA21_0=='c') ) {s = 14;}
 
-                        else if ( (LA21_0=='b') ) {s = 15;}
+                        else if ( (LA21_0=='r') ) {s = 15;}
 
-                        else if ( (LA21_0=='.') ) {s = 16;}
+                        else if ( (LA21_0=='k') ) {s = 16;}
 
-                        else if ( (LA21_0=='*') ) {s = 17;}
+                        else if ( (LA21_0=='w') ) {s = 17;}
 
-                        else if ( (LA21_0=='@') ) {s = 18;}
+                        else if ( (LA21_0=='f') ) {s = 18;}
 
-                        else if ( (LA21_0=='(') ) {s = 19;}
+                        else if ( (LA21_0=='e') ) {s = 19;}
 
-                        else if ( (LA21_0==',') ) {s = 20;}
+                        else if ( (LA21_0=='*') ) {s = 20;}
 
-                        else if ( (LA21_0==')') ) {s = 21;}
+                        else if ( (LA21_0=='n') ) {s = 21;}
 
-                        else if ( (LA21_0=='=') ) {s = 22;}
+                        else if ( (LA21_0==';') ) {s = 22;}
 
-                        else if ( (LA21_0=='#') ) {s = 23;}
+                        else if ( (LA21_0=='@') ) {s = 23;}
 
-                        else if ( (LA21_0=='[') ) {s = 24;}
+                        else if ( (LA21_0=='(') ) {s = 24;}
 
-                        else if ( (LA21_0==']') ) {s = 25;}
+                        else if ( (LA21_0==',') ) {s = 25;}
 
-                        else if ( (LA21_0=='+') ) {s = 26;}
+                        else if ( (LA21_0==')') ) {s = 26;}
 
-                        else if ( (LA21_0=='-') ) {s = 27;}
+                        else if ( (LA21_0=='=') ) {s = 27;}
 
-                        else if ( (LA21_0=='/') ) {s = 28;}
+                        else if ( (LA21_0=='#') ) {s = 28;}
 
-                        else if ( (LA21_0=='%') ) {s = 29;}
+                        else if ( (LA21_0=='[') ) {s = 29;}
 
-                        else if ( (LA21_0=='<') ) {s = 30;}
+                        else if ( (LA21_0==']') ) {s = 30;}
 
-                        else if ( (LA21_0=='>') ) {s = 31;}
+                        else if ( (LA21_0=='+') ) {s = 31;}
 
-                        else if ( (LA21_0=='|') ) {s = 32;}
+                        else if ( (LA21_0=='-') ) {s = 32;}
 
-                        else if ( (LA21_0=='&') ) {s = 33;}
+                        else if ( (LA21_0=='/') ) {s = 33;}
 
-                        else if ( (LA21_0=='!') ) {s = 34;}
+                        else if ( (LA21_0=='%') ) {s = 34;}
 
-                        else if ( (LA21_0=='?') ) {s = 35;}
+                        else if ( (LA21_0=='<') ) {s = 35;}
 
-                        else if ( (LA21_0==':') ) {s = 36;}
+                        else if ( (LA21_0=='>') ) {s = 36;}
 
-                        else if ( (LA21_0==';') ) {s = 37;}
+                        else if ( (LA21_0=='|') ) {s = 37;}
 
-                        else if ( (LA21_0=='e') ) {s = 38;}
+                        else if ( (LA21_0=='&') ) {s = 38;}
 
-                        else if ( (LA21_0=='f') ) {s = 39;}
+                        else if ( (LA21_0=='!') ) {s = 39;}
 
-                        else if ( (LA21_0=='w') ) {s = 40;}
+                        else if ( (LA21_0=='.') ) {s = 40;}
 
-                        else if ( (LA21_0=='n') ) {s = 41;}
+                        else if ( (LA21_0=='?') ) {s = 41;}
 
-                        else if ( (LA21_0=='h') ) {s = 42;}
+                        else if ( (LA21_0==':') ) {s = 42;}
 
-                        else if ( (LA21_0=='0') ) {s = 43;}
+                        else if ( (LA21_0=='h') ) {s = 43;}
 
-                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 44;}
+                        else if ( (LA21_0=='0') ) {s = 44;}
 
-                        else if ( (LA21_0=='^') ) {s = 45;}
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 45;}
 
-                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||(LA21_0>='j' && LA21_0<='m')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 46;}
+                        else if ( (LA21_0=='^') ) {s = 46;}
 
-                        else if ( (LA21_0=='\"') ) {s = 47;}
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='j'||(LA21_0>='l' && LA21_0<='m')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 47;}
 
-                        else if ( (LA21_0=='\'') ) {s = 48;}
+                        else if ( (LA21_0=='\"') ) {s = 48;}
 
-                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 49;}
+                        else if ( (LA21_0=='\'') ) {s = 49;}
 
-                        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 = 50;}
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 50;}
+
+                        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 = 51;}
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.java
index 17e04f6..0de137d 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.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.perspective.parser.antlr.internal; 
+package org.eclipse.osbp.xtext.perspective.parser.antlr.internal;
 
 import org.eclipse.xtext.*;
 import org.eclipse.xtext.parser.*;
@@ -33,12 +20,27 @@
 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 InternalPerspectiveDslParser extends AbstractInternalAntlrParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'import'", "'perspective'", "'described by'", "'process'", "'usertask'", "'iconURI'", "'accessibility'", "'toolbar'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'part'", "'view'", "'isClosable'", "'select'", "'table'", "'grid'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'bpmn'", "'.'", "'*'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "';'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'horizontal'", "'vertical'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'perspective'", "'describedBy'", "'process'", "'usertask'", "'iconURI'", "'accessibility'", "'toolbar'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'part'", "'view'", "'isClosable'", "'select'", "'table'", "'grid'", "'bean'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'bpmn'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'horizontal'", "'vertical'"
     };
-    public static final int RULE_HEX=6;
+    public static final int RULE_HEX=7;
     public static final int T__50=50;
     public static final int T__59=59;
     public static final int T__55=55;
@@ -52,7 +54,7 @@
     public static final int T__60=60;
     public static final int T__61=61;
     public static final int RULE_ID=4;
-    public static final int RULE_INT=7;
+    public static final int RULE_INT=6;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=9;
     public static final int T__67=67;
@@ -60,6 +62,7 @@
     public static final int T__69=69;
     public static final int T__62=62;
     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__65=65;
     public static final int T__37=37;
@@ -113,20 +116,30 @@
     public static final int T__25=25;
     public static final int T__20=20;
     public static final int T__21=21;
+    public static final int T__122=122;
     public static final int T__70=70;
+    public static final int T__121=121;
     public static final int T__71=71;
+    public static final int T__124=124;
     public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
     public static final int RULE_STRING=5;
     public static final int RULE_SL_COMMENT=10;
     public static final int T__77=77;
+    public static final int T__119=119;
     public static final int T__78=78;
+    public static final int T__118=118;
     public static final int T__79=79;
     public static final int T__73=73;
+    public static final int T__115=115;
     public static final int EOF=-1;
     public static final int T__74=74;
     public static final int T__114=114;
     public static final int T__75=75;
+    public static final int T__117=117;
     public static final int T__76=76;
+    public static final int T__116=116;
     public static final int T__80=80;
     public static final int T__111=111;
     public static final int T__81=81;
@@ -165,23 +178,23 @@
         
 
     public String[] getTokenNames() { return InternalPerspectiveDslParser.tokenNames; }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g"; }
+    public String getGrammarFileName() { return "InternalPerspectiveDsl.g"; }
 
 
 
      	private PerspectiveDslGrammarAccess grammarAccess;
-     	
+
         public InternalPerspectiveDslParser(TokenStream input, PerspectiveDslGrammarAccess grammarAccess) {
             this(input);
             this.grammarAccess = grammarAccess;
             registerRules(grammarAccess.getGrammar());
         }
-        
+
         @Override
         protected String getFirstRuleName() {
-        	return "PerspectiveModel";	
+        	return "PerspectiveModel";
        	}
-       	
+
        	@Override
        	protected PerspectiveDslGrammarAccess getGrammarAccess() {
        		return grammarAccess;
@@ -189,8 +202,9 @@
 
 
 
+
     // $ANTLR start "entryRulePerspectiveModel"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:68:1: entryRulePerspectiveModel returns [EObject current=null] : iv_rulePerspectiveModel= rulePerspectiveModel EOF ;
+    // InternalPerspectiveDsl.g:78:1: entryRulePerspectiveModel returns [EObject current=null] : iv_rulePerspectiveModel= rulePerspectiveModel EOF ;
     public final EObject entryRulePerspectiveModel() throws RecognitionException {
         EObject current = null;
 
@@ -198,13 +212,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:69:2: (iv_rulePerspectiveModel= rulePerspectiveModel EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:70:2: iv_rulePerspectiveModel= rulePerspectiveModel EOF
+            // InternalPerspectiveDsl.g:78:57: (iv_rulePerspectiveModel= rulePerspectiveModel EOF )
+            // InternalPerspectiveDsl.g:79:2: iv_rulePerspectiveModel= rulePerspectiveModel EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveModelRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveModel_in_entryRulePerspectiveModel75);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveModel=rulePerspectiveModel();
 
             state._fsp--;
@@ -212,16 +226,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveModel; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveModel85); 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;
@@ -230,59 +244,111 @@
 
 
     // $ANTLR start "rulePerspectiveModel"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:77:1: rulePerspectiveModel returns [EObject current=null] : ( (lv_packages_0_0= rulePerspectivePackage ) )* ;
+    // InternalPerspectiveDsl.g:85:1: rulePerspectiveModel returns [EObject current=null] : ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= rulePerspectivePackage ) )* ) ;
     public final EObject rulePerspectiveModel() 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:80:28: ( ( (lv_packages_0_0= rulePerspectivePackage ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:81:1: ( (lv_packages_0_0= rulePerspectivePackage ) )*
+            // InternalPerspectiveDsl.g:91:2: ( ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= rulePerspectivePackage ) )* ) )
+            // InternalPerspectiveDsl.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= rulePerspectivePackage ) )* )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:81:1: ( (lv_packages_0_0= rulePerspectivePackage ) )*
-            loop1:
-            do {
-                int alt1=2;
-                int LA1_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= rulePerspectivePackage ) )* )
+            // InternalPerspectiveDsl.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= rulePerspectivePackage ) )*
+            {
+            // InternalPerspectiveDsl.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==50) ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:94:4: (lv_importSection_0_0= ruleXImportSection )
+                    {
+                    // InternalPerspectiveDsl.g:94:4: (lv_importSection_0_0= ruleXImportSection )
+                    // InternalPerspectiveDsl.g:95:5: lv_importSection_0_0= ruleXImportSection
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getPerspectiveModelAccess().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.getPerspectiveModelRule());
+                      					}
+                      					set(
+                      						current,
+                      						"importSection",
+                      						lv_importSection_0_0,
+                      						"org.eclipse.xtext.xbase.Xtype.XImportSection");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalPerspectiveDsl.g:112:3: ( (lv_packages_1_0= rulePerspectivePackage ) )*
+            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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:82:1: (lv_packages_0_0= rulePerspectivePackage )
+            	    // InternalPerspectiveDsl.g:113:4: (lv_packages_1_0= rulePerspectivePackage )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:82:1: (lv_packages_0_0= rulePerspectivePackage )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:83:3: lv_packages_0_0= rulePerspectivePackage
+            	    // InternalPerspectiveDsl.g:113:4: (lv_packages_1_0= rulePerspectivePackage )
+            	    // InternalPerspectiveDsl.g:114:5: lv_packages_1_0= rulePerspectivePackage
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_1_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_rulePerspectivePackage_in_rulePerspectiveModel130);
-            	    lv_packages_0_0=rulePerspectivePackage();
+            	    pushFollow(FOLLOW_3);
+            	    lv_packages_1_0=rulePerspectivePackage();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getPerspectiveModelRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"packages",
-            	              		lv_packages_0_0, 
-            	              		"PerspectivePackage");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getPerspectiveModelRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"packages",
+            	      						lv_packages_1_0,
+            	      						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectivePackage");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -292,22 +358,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;
@@ -316,7 +387,7 @@
 
 
     // $ANTLR start "entryRulePerspectivePackage"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:107:1: entryRulePerspectivePackage returns [EObject current=null] : iv_rulePerspectivePackage= rulePerspectivePackage EOF ;
+    // InternalPerspectiveDsl.g:135:1: entryRulePerspectivePackage returns [EObject current=null] : iv_rulePerspectivePackage= rulePerspectivePackage EOF ;
     public final EObject entryRulePerspectivePackage() throws RecognitionException {
         EObject current = null;
 
@@ -324,13 +395,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:108:2: (iv_rulePerspectivePackage= rulePerspectivePackage EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:109:2: iv_rulePerspectivePackage= rulePerspectivePackage EOF
+            // InternalPerspectiveDsl.g:135:59: (iv_rulePerspectivePackage= rulePerspectivePackage EOF )
+            // InternalPerspectiveDsl.g:136:2: iv_rulePerspectivePackage= rulePerspectivePackage EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectivePackageRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectivePackage_in_entryRulePerspectivePackage166);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectivePackage=rulePerspectivePackage();
 
             state._fsp--;
@@ -338,16 +409,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectivePackage; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectivePackage176); 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;
@@ -356,76 +427,75 @@
 
 
     // $ANTLR start "rulePerspectivePackage"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:116:1: rulePerspectivePackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= rulePerspectiveImport ) )* ( (lv_perspectives_5_0= rulePerspective ) )* otherlv_6= '}' )? ) ;
+    // InternalPerspectiveDsl.g:142:1: rulePerspectivePackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_perspectives_4_0= rulePerspective ) )* otherlv_5= '}' )? ) ;
     public final EObject rulePerspectivePackage() 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_perspectives_5_0 = null;
+        EObject lv_perspectives_4_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:119:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= rulePerspectiveImport ) )* ( (lv_perspectives_5_0= rulePerspective ) )* otherlv_6= '}' )? ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= rulePerspectiveImport ) )* ( (lv_perspectives_5_0= rulePerspective ) )* otherlv_6= '}' )? )
+            // InternalPerspectiveDsl.g:148:2: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_perspectives_4_0= rulePerspective ) )* otherlv_5= '}' )? ) )
+            // InternalPerspectiveDsl.g:149:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_perspectives_4_0= rulePerspective ) )* otherlv_5= '}' )? )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= rulePerspectiveImport ) )* ( (lv_perspectives_5_0= rulePerspective ) )* otherlv_6= '}' )? )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:120:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= rulePerspectiveImport ) )* ( (lv_perspectives_5_0= rulePerspective ) )* otherlv_6= '}' )?
+            // InternalPerspectiveDsl.g:149:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_perspectives_4_0= rulePerspective ) )* otherlv_5= '}' )? )
+            // InternalPerspectiveDsl.g:150:3: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_perspectives_4_0= rulePerspective ) )* otherlv_5= '}' )?
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:120:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:121:5: 
+            // InternalPerspectiveDsl.g:150:3: ()
+            // InternalPerspectiveDsl.g:151:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,13,FOLLOW_13_in_rulePerspectivePackage222); 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.getPerspectivePackageAccess().getPackageKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectivePackageAccess().getPackageKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:130:1: ( (lv_name_2_0= ruleQualifiedName ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            // InternalPerspectiveDsl.g:161:3: ( (lv_name_2_0= ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:162:4: (lv_name_2_0= ruleQualifiedName )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:131:1: (lv_name_2_0= ruleQualifiedName )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:132:3: lv_name_2_0= ruleQualifiedName
+            // InternalPerspectiveDsl.g:162:4: (lv_name_2_0= ruleQualifiedName )
+            // InternalPerspectiveDsl.g:163:5: lv_name_2_0= ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleQualifiedName_in_rulePerspectivePackage243);
+            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.getPerspectivePackageRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_2_0, 
-                      		"QualifiedName");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getPerspectivePackageRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -433,7 +503,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:148:2: (otherlv_3= '{' ( (lv_imports_4_0= rulePerspectiveImport ) )* ( (lv_perspectives_5_0= rulePerspective ) )* otherlv_6= '}' )?
+            // InternalPerspectiveDsl.g:180:3: (otherlv_3= '{' ( (lv_perspectives_4_0= rulePerspective ) )* otherlv_5= '}' )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -442,107 +512,54 @@
             }
             switch (alt4) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:148:4: otherlv_3= '{' ( (lv_imports_4_0= rulePerspectiveImport ) )* ( (lv_perspectives_5_0= rulePerspective ) )* otherlv_6= '}'
+                    // InternalPerspectiveDsl.g:181:4: otherlv_3= '{' ( (lv_perspectives_4_0= rulePerspective ) )* otherlv_5= '}'
                     {
-                    otherlv_3=(Token)match(input,14,FOLLOW_14_in_rulePerspectivePackage256); 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.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0());
-                          
+                      				newLeafNode(otherlv_3, grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:152:1: ( (lv_imports_4_0= rulePerspectiveImport ) )*
-                    loop2:
-                    do {
-                        int alt2=2;
-                        int LA2_0 = input.LA(1);
-
-                        if ( (LA2_0==16) ) {
-                            alt2=1;
-                        }
-
-
-                        switch (alt2) {
-                    	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:153:1: (lv_imports_4_0= rulePerspectiveImport )
-                    	    {
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:153:1: (lv_imports_4_0= rulePerspectiveImport )
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:154:3: lv_imports_4_0= rulePerspectiveImport
-                    	    {
-                    	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getPerspectivePackageAccess().getImportsPerspectiveImportParserRuleCall_3_1_0()); 
-                    	      	    
-                    	    }
-                    	    pushFollow(FOLLOW_rulePerspectiveImport_in_rulePerspectivePackage277);
-                    	    lv_imports_4_0=rulePerspectiveImport();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return current;
-                    	    if ( state.backtracking==0 ) {
-
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getPerspectivePackageRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"imports",
-                    	              		lv_imports_4_0, 
-                    	              		"PerspectiveImport");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
-                    	    }
-
-                    	    }
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop2;
-                        }
-                    } while (true);
-
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:170:3: ( (lv_perspectives_5_0= rulePerspective ) )*
+                    // InternalPerspectiveDsl.g:185:4: ( (lv_perspectives_4_0= rulePerspective ) )*
                     loop3:
                     do {
                         int alt3=2;
                         int LA3_0 = input.LA(1);
 
-                        if ( (LA3_0==17) ) {
+                        if ( (LA3_0==16) ) {
                             alt3=1;
                         }
 
 
                         switch (alt3) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:171:1: (lv_perspectives_5_0= rulePerspective )
+                    	    // InternalPerspectiveDsl.g:186:5: (lv_perspectives_4_0= rulePerspective )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:171:1: (lv_perspectives_5_0= rulePerspective )
-                    	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:172:3: lv_perspectives_5_0= rulePerspective
+                    	    // InternalPerspectiveDsl.g:186:5: (lv_perspectives_4_0= rulePerspective )
+                    	    // InternalPerspectiveDsl.g:187:6: lv_perspectives_4_0= rulePerspective
                     	    {
                     	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_2_0()); 
-                    	      	    
+
+                    	      						newCompositeNode(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_1_0());
+                    	      					
                     	    }
-                    	    pushFollow(FOLLOW_rulePerspective_in_rulePerspectivePackage299);
-                    	    lv_perspectives_5_0=rulePerspective();
+                    	    pushFollow(FOLLOW_6);
+                    	    lv_perspectives_4_0=rulePerspective();
 
                     	    state._fsp--;
                     	    if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getPerspectivePackageRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"perspectives",
-                    	              		lv_perspectives_5_0, 
-                    	              		"Perspective");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
+                    	      						if (current==null) {
+                    	      							current = createModelElementForParent(grammarAccess.getPerspectivePackageRule());
+                    	      						}
+                    	      						add(
+                    	      							current,
+                    	      							"perspectives",
+                    	      							lv_perspectives_4_0,
+                    	      							"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Perspective");
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
                     	    }
 
                     	    }
@@ -556,11 +573,11 @@
                         }
                     } while (true);
 
-                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_rulePerspectivePackage312); 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.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_3());
-                          
+                      				newLeafNode(otherlv_5, grammarAccess.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_2());
+                      			
                     }
 
                     }
@@ -575,14 +592,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -590,129 +609,8 @@
     // $ANTLR end "rulePerspectivePackage"
 
 
-    // $ANTLR start "entryRulePerspectiveImport"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:200:1: entryRulePerspectiveImport returns [EObject current=null] : iv_rulePerspectiveImport= rulePerspectiveImport EOF ;
-    public final EObject entryRulePerspectiveImport() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_rulePerspectiveImport = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:201:2: (iv_rulePerspectiveImport= rulePerspectiveImport EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:202:2: iv_rulePerspectiveImport= rulePerspectiveImport EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getPerspectiveImportRule()); 
-            }
-            pushFollow(FOLLOW_rulePerspectiveImport_in_entryRulePerspectiveImport350);
-            iv_rulePerspectiveImport=rulePerspectiveImport();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_rulePerspectiveImport; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveImport360); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRulePerspectiveImport"
-
-
-    // $ANTLR start "rulePerspectiveImport"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:209:1: rulePerspectiveImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= rulePerspectiveQualifiedNameWithWildCard ) ) ) ;
-    public final EObject rulePerspectiveImport() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_0=null;
-        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:212:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= rulePerspectiveQualifiedNameWithWildCard ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:213:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= rulePerspectiveQualifiedNameWithWildCard ) ) )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:213:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= rulePerspectiveQualifiedNameWithWildCard ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:213:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= rulePerspectiveQualifiedNameWithWildCard ) )
-            {
-            otherlv_0=(Token)match(input,16,FOLLOW_16_in_rulePerspectiveImport397); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_0, grammarAccess.getPerspectiveImportAccess().getImportKeyword_0());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:217:1: ( (lv_importedNamespace_1_0= rulePerspectiveQualifiedNameWithWildCard ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:218:1: (lv_importedNamespace_1_0= rulePerspectiveQualifiedNameWithWildCard )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:218:1: (lv_importedNamespace_1_0= rulePerspectiveQualifiedNameWithWildCard )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:219:3: lv_importedNamespace_1_0= rulePerspectiveQualifiedNameWithWildCard
-            {
-            if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getPerspectiveImportAccess().getImportedNamespacePerspectiveQualifiedNameWithWildCardParserRuleCall_1_0()); 
-              	    
-            }
-            pushFollow(FOLLOW_rulePerspectiveQualifiedNameWithWildCard_in_rulePerspectiveImport418);
-            lv_importedNamespace_1_0=rulePerspectiveQualifiedNameWithWildCard();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getPerspectiveImportRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"importedNamespace",
-                      		lv_importedNamespace_1_0, 
-                      		"PerspectiveQualifiedNameWithWildCard");
-              	        afterParserOrEnumRuleCall();
-              	    
-            }
-
-            }
-
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "rulePerspectiveImport"
-
-
     // $ANTLR start "entryRulePerspective"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:243:1: entryRulePerspective returns [EObject current=null] : iv_rulePerspective= rulePerspective EOF ;
+    // InternalPerspectiveDsl.g:213:1: entryRulePerspective returns [EObject current=null] : iv_rulePerspective= rulePerspective EOF ;
     public final EObject entryRulePerspective() throws RecognitionException {
         EObject current = null;
 
@@ -720,13 +618,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:244:2: (iv_rulePerspective= rulePerspective EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:245:2: iv_rulePerspective= rulePerspective EOF
+            // InternalPerspectiveDsl.g:213:52: (iv_rulePerspective= rulePerspective EOF )
+            // InternalPerspectiveDsl.g:214:2: iv_rulePerspective= rulePerspective EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveRule()); 
             }
-            pushFollow(FOLLOW_rulePerspective_in_entryRulePerspective454);
+            pushFollow(FOLLOW_1);
             iv_rulePerspective=rulePerspective();
 
             state._fsp--;
@@ -734,16 +632,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspective; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspective464); 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;
@@ -752,7 +650,7 @@
 
 
     // $ANTLR start "rulePerspective"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:252:1: rulePerspective returns [EObject current=null] : ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}' ) ;
+    // InternalPerspectiveDsl.g:220:1: rulePerspective returns [EObject current=null] : ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}' ) ;
     public final EObject rulePerspective() throws RecognitionException {
         EObject current = null;
 
@@ -777,62 +675,63 @@
         EObject lv_elements_17_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:255:28: ( ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}' ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:256:1: ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}' )
+            // InternalPerspectiveDsl.g:226:2: ( ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}' ) )
+            // InternalPerspectiveDsl.g:227:2: ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}' )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:256:1: ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:256:2: () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}'
+            // InternalPerspectiveDsl.g:227:2: ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}' )
+            // InternalPerspectiveDsl.g:228:3: () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* otherlv_18= '}'
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:256:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:257:5: 
+            // InternalPerspectiveDsl.g:228:3: ()
+            // InternalPerspectiveDsl.g:229:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveAccess().getPerspectiveAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveAccess().getPerspectiveAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,17,FOLLOW_17_in_rulePerspective510); 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.getPerspectiveAccess().getPerspectiveKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveAccess().getPerspectiveKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:266:1: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:267:1: (lv_name_2_0= ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:239:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
+            // InternalPerspectiveDsl.g:240:4: (lv_name_2_0= ruleTRANSLATABLEID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:267:1: (lv_name_2_0= ruleTRANSLATABLEID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:268:3: lv_name_2_0= ruleTRANSLATABLEID
+            // InternalPerspectiveDsl.g:240:4: (lv_name_2_0= ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:241:5: lv_name_2_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_rulePerspective531);
+            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.getPerspectiveRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_2_0, 
-                      		"TRANSLATABLEID");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getPerspectiveRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -840,36 +739,36 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:284:2: ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )?
+            // InternalPerspectiveDsl.g:258:3: ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
-            if ( (LA5_0==18) ) {
+            if ( (LA5_0==17) ) {
                 alt5=1;
             }
             switch (alt5) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:284:3: ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
+                    // InternalPerspectiveDsl.g:259:4: ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:284:3: ( (lv_description_3_0= 'described by' ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:285:1: (lv_description_3_0= 'described by' )
+                    // InternalPerspectiveDsl.g:259:4: ( (lv_description_3_0= 'describedBy' ) )
+                    // InternalPerspectiveDsl.g:260:5: (lv_description_3_0= 'describedBy' )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:285:1: (lv_description_3_0= 'described by' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:286:3: lv_description_3_0= 'described by'
+                    // InternalPerspectiveDsl.g:260:5: (lv_description_3_0= 'describedBy' )
+                    // InternalPerspectiveDsl.g:261:6: lv_description_3_0= 'describedBy'
                     {
-                    lv_description_3_0=(Token)match(input,18,FOLLOW_18_in_rulePerspective550); 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.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0());
-                          
+                      						newLeafNode(lv_description_3_0, grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getPerspectiveRule());
-                      	        }
-                             		setWithLastConsumed(current, "description", true, "described by");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getPerspectiveRule());
+                      						}
+                      						setWithLastConsumed(current, "description", true, "describedBy");
+                      					
                     }
 
                     }
@@ -877,34 +776,34 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:299:2: ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:300:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
+                    // InternalPerspectiveDsl.g:273:4: ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
+                    // InternalPerspectiveDsl.g:274:5: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:300:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:301:3: lv_descriptionValue_4_0= ruleTRANSLATABLESTRING
+                    // InternalPerspectiveDsl.g:274:5: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
+                    // InternalPerspectiveDsl.g:275:6: lv_descriptionValue_4_0= ruleTRANSLATABLESTRING
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_rulePerspective584);
+                    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.getPerspectiveRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"descriptionValue",
-                              		lv_descriptionValue_4_0, 
-                              		"TRANSLATABLESTRING");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getPerspectiveRule());
+                      						}
+                      						set(
+                      							current,
+                      							"descriptionValue",
+                      							lv_descriptionValue_4_0,
+                      							"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.TRANSLATABLESTRING");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -918,41 +817,41 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:317:4: (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )?
+            // InternalPerspectiveDsl.g:293:3: (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
-            if ( (LA6_0==19) ) {
+            if ( (LA6_0==18) ) {
                 alt6=1;
             }
             switch (alt6) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:317:6: otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) )
+                    // InternalPerspectiveDsl.g:294:4: otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) )
                     {
-                    otherlv_5=(Token)match(input,19,FOLLOW_19_in_rulePerspective599); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_5, grammarAccess.getPerspectiveAccess().getProcessKeyword_4_0());
-                          
+                      				newLeafNode(otherlv_5, grammarAccess.getPerspectiveAccess().getProcessKeyword_4_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:321:1: ( (otherlv_6= RULE_ID ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:322:1: (otherlv_6= RULE_ID )
+                    // InternalPerspectiveDsl.g:298:4: ( (otherlv_6= RULE_ID ) )
+                    // InternalPerspectiveDsl.g:299:5: (otherlv_6= RULE_ID )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:322:1: (otherlv_6= RULE_ID )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:323:3: otherlv_6= RULE_ID
+                    // InternalPerspectiveDsl.g:299:5: (otherlv_6= RULE_ID )
+                    // InternalPerspectiveDsl.g:300:6: otherlv_6= RULE_ID
                     {
                     if ( state.backtracking==0 ) {
 
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getPerspectiveRule());
-                      	        }
-                              
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getPerspectiveRule());
+                      						}
+                      					
                     }
-                    otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspective619); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,RULE_ID,FOLLOW_10); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      		newLeafNode(otherlv_6, grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0()); 
-                      	
+                      						newLeafNode(otherlv_6, grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0());
+                      					
                     }
 
                     }
@@ -960,30 +859,30 @@
 
                     }
 
-                    otherlv_7=(Token)match(input,20,FOLLOW_20_in_rulePerspective631); if (state.failed) return current;
+                    otherlv_7=(Token)match(input,19,FOLLOW_4); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_7, grammarAccess.getPerspectiveAccess().getUsertaskKeyword_4_2());
-                          
+                      				newLeafNode(otherlv_7, grammarAccess.getPerspectiveAccess().getUsertaskKeyword_4_2());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:338:1: ( (otherlv_8= RULE_ID ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:339:1: (otherlv_8= RULE_ID )
+                    // InternalPerspectiveDsl.g:315:4: ( (otherlv_8= RULE_ID ) )
+                    // InternalPerspectiveDsl.g:316:5: (otherlv_8= RULE_ID )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:339:1: (otherlv_8= RULE_ID )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:340:3: otherlv_8= RULE_ID
+                    // InternalPerspectiveDsl.g:316:5: (otherlv_8= RULE_ID )
+                    // InternalPerspectiveDsl.g:317:6: otherlv_8= RULE_ID
                     {
                     if ( state.backtracking==0 ) {
 
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getPerspectiveRule());
-                      	        }
-                              
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getPerspectiveRule());
+                      						}
+                      					
                     }
-                    otherlv_8=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspective651); if (state.failed) return current;
+                    otherlv_8=(Token)match(input,RULE_ID,FOLLOW_11); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      		newLeafNode(otherlv_8, grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0()); 
-                      	
+                      						newLeafNode(otherlv_8, grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0());
+                      					
                     }
 
                     }
@@ -997,87 +896,87 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:351:4: ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:353:1: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:329:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:330:4: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:353:1: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:354:2: ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:330:4: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:331:5: ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:357:2: ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:358:3: ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:334:5: ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:335:6: ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )*
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:358:3: ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:335:6: ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )*
             loop7:
             do {
                 int alt7=4;
                 int LA7_0 = input.LA(1);
 
-                if ( LA7_0 ==21 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
+                if ( LA7_0 == 20 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
                     alt7=1;
                 }
-                else if ( LA7_0 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
+                else if ( LA7_0 == 21 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
                     alt7=2;
                 }
-                else if ( LA7_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2) ) {
+                else if ( LA7_0 == 22 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2) ) {
                     alt7=3;
                 }
 
 
                 switch (alt7) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:360:4: ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:336:4: ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:360:4: ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:361:5: {...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:336:4: ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:337:5: {...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspective", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:361:108: ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:362:6: ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:337:108: ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:338:6: ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:365:6: ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:365:7: {...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:341:9: ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:341:10: {...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspective", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:365:16: (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:365:18: otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:341:19: (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:341:20: otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) )
             	    {
-            	    otherlv_10=(Token)match(input,21,FOLLOW_21_in_rulePerspective711); if (state.failed) return current;
+            	    otherlv_10=(Token)match(input,20,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_10, grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0());
-            	          
+            	      									newLeafNode(otherlv_10, grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:369:1: ( (lv_iconURI_11_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:370:1: (lv_iconURI_11_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:345:9: ( (lv_iconURI_11_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:346:10: (lv_iconURI_11_0= RULE_STRING )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:370:1: (lv_iconURI_11_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:371:3: lv_iconURI_11_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:346:10: (lv_iconURI_11_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:347:11: lv_iconURI_11_0= RULE_STRING
             	    {
-            	    lv_iconURI_11_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePerspective728); if (state.failed) return current;
+            	    lv_iconURI_11_0=(Token)match(input,RULE_STRING,FOLLOW_11); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_iconURI_11_0, grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0()); 
-            	      		
+            	      											newLeafNode(lv_iconURI_11_0, grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectiveRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"iconURI",
-            	              		lv_iconURI_11_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectiveRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"iconURI",
+            	      												lv_iconURI_11_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -1102,58 +1001,58 @@
             	    }
             	    break;
             	case 2 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:394:4: ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:369:4: ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:394:4: ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:395:5: {...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:369:4: ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:370:5: {...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspective", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:395:108: ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:396:6: ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:370:108: ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:371:6: ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:399:6: ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:399:7: {...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:374:9: ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:374:10: {...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspective", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:399:16: (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:399:18: otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:374:19: (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:374:20: otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) )
             	    {
-            	    otherlv_12=(Token)match(input,22,FOLLOW_22_in_rulePerspective801); if (state.failed) return current;
+            	    otherlv_12=(Token)match(input,21,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_12, grammarAccess.getPerspectiveAccess().getAccessibilityKeyword_5_1_0());
-            	          
+            	      									newLeafNode(otherlv_12, grammarAccess.getPerspectiveAccess().getAccessibilityKeyword_5_1_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:403:1: ( (lv_accessibilityPhrase_13_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:404:1: (lv_accessibilityPhrase_13_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:378:9: ( (lv_accessibilityPhrase_13_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:379:10: (lv_accessibilityPhrase_13_0= RULE_STRING )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:404:1: (lv_accessibilityPhrase_13_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:405:3: lv_accessibilityPhrase_13_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:379:10: (lv_accessibilityPhrase_13_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:380:11: lv_accessibilityPhrase_13_0= RULE_STRING
             	    {
-            	    lv_accessibilityPhrase_13_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePerspective818); if (state.failed) return current;
+            	    lv_accessibilityPhrase_13_0=(Token)match(input,RULE_STRING,FOLLOW_11); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_accessibilityPhrase_13_0, grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0()); 
-            	      		
+            	      											newLeafNode(lv_accessibilityPhrase_13_0, grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectiveRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"accessibilityPhrase",
-            	              		lv_accessibilityPhrase_13_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectiveRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"accessibilityPhrase",
+            	      												lv_accessibilityPhrase_13_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -1178,53 +1077,53 @@
             	    }
             	    break;
             	case 3 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:428:4: ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:402:4: ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:428:4: ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:429:5: {...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:402:4: ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:403:5: {...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspective", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:429:108: ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:430:6: ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) )
+            	    // InternalPerspectiveDsl.g:403:108: ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:404:6: ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:433:6: ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:433:7: {...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) )
+            	    // InternalPerspectiveDsl.g:407:9: ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) )
+            	    // InternalPerspectiveDsl.g:407:10: {...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspective", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:433:16: (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:433:18: otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) )
+            	    // InternalPerspectiveDsl.g:407:19: (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) )
+            	    // InternalPerspectiveDsl.g:407:20: otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) )
             	    {
-            	    otherlv_14=(Token)match(input,23,FOLLOW_23_in_rulePerspective891); if (state.failed) return current;
+            	    otherlv_14=(Token)match(input,22,FOLLOW_4); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_14, grammarAccess.getPerspectiveAccess().getToolbarKeyword_5_2_0());
-            	          
+            	      									newLeafNode(otherlv_14, grammarAccess.getPerspectiveAccess().getToolbarKeyword_5_2_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:437:1: ( (otherlv_15= RULE_ID ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:438:1: (otherlv_15= RULE_ID )
+            	    // InternalPerspectiveDsl.g:411:9: ( (otherlv_15= RULE_ID ) )
+            	    // InternalPerspectiveDsl.g:412:10: (otherlv_15= RULE_ID )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:438:1: (otherlv_15= RULE_ID )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:439:3: otherlv_15= RULE_ID
+            	    // InternalPerspectiveDsl.g:412:10: (otherlv_15= RULE_ID )
+            	    // InternalPerspectiveDsl.g:413:11: otherlv_15= RULE_ID
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectiveRule());
-            	      	        }
-            	              
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectiveRule());
+            	      											}
+            	      										
             	    }
-            	    otherlv_15=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspective911); if (state.failed) return current;
+            	    otherlv_15=(Token)match(input,RULE_ID,FOLLOW_11); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      		newLeafNode(otherlv_15, grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0()); 
-            	      	
+            	      											newLeafNode(otherlv_15, grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0());
+            	      										
             	    }
 
             	    }
@@ -1264,52 +1163,52 @@
 
             }
 
-            otherlv_16=(Token)match(input,14,FOLLOW_14_in_rulePerspective964); if (state.failed) return current;
+            otherlv_16=(Token)match(input,14,FOLLOW_12); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_16, grammarAccess.getPerspectiveAccess().getLeftCurlyBracketKeyword_6());
-                  
+              			newLeafNode(otherlv_16, grammarAccess.getPerspectiveAccess().getLeftCurlyBracketKeyword_6());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:468:1: ( (lv_elements_17_0= rulePerspectiveElement ) )*
+            // InternalPerspectiveDsl.g:441:3: ( (lv_elements_17_0= rulePerspectiveElement ) )*
             loop8:
             do {
                 int alt8=2;
                 int LA8_0 = input.LA(1);
 
-                if ( (LA8_0==24||(LA8_0>=28 && LA8_0<=29)) ) {
+                if ( (LA8_0==23||(LA8_0>=27 && LA8_0<=28)) ) {
                     alt8=1;
                 }
 
 
                 switch (alt8) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:469:1: (lv_elements_17_0= rulePerspectiveElement )
+            	    // InternalPerspectiveDsl.g:442:4: (lv_elements_17_0= rulePerspectiveElement )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:469:1: (lv_elements_17_0= rulePerspectiveElement )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:470:3: lv_elements_17_0= rulePerspectiveElement
+            	    // InternalPerspectiveDsl.g:442:4: (lv_elements_17_0= rulePerspectiveElement )
+            	    // InternalPerspectiveDsl.g:443:5: lv_elements_17_0= rulePerspectiveElement
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_rulePerspectiveElement_in_rulePerspective985);
+            	    pushFollow(FOLLOW_12);
             	    lv_elements_17_0=rulePerspectiveElement();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getPerspectiveRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"elements",
-            	              		lv_elements_17_0, 
-            	              		"PerspectiveElement");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getPerspectiveRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"elements",
+            	      						lv_elements_17_0,
+            	      						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveElement");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -1323,11 +1222,11 @@
                 }
             } while (true);
 
-            otherlv_18=(Token)match(input,15,FOLLOW_15_in_rulePerspective998); if (state.failed) return current;
+            otherlv_18=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_18, grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8());
-                  
+              			newLeafNode(otherlv_18, grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8());
+              		
             }
 
             }
@@ -1336,14 +1235,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1352,7 +1253,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveElement"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:498:1: entryRulePerspectiveElement returns [EObject current=null] : iv_rulePerspectiveElement= rulePerspectiveElement EOF ;
+    // InternalPerspectiveDsl.g:468:1: entryRulePerspectiveElement returns [EObject current=null] : iv_rulePerspectiveElement= rulePerspectiveElement EOF ;
     public final EObject entryRulePerspectiveElement() throws RecognitionException {
         EObject current = null;
 
@@ -1360,13 +1261,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:499:2: (iv_rulePerspectiveElement= rulePerspectiveElement EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:500:2: iv_rulePerspectiveElement= rulePerspectiveElement EOF
+            // InternalPerspectiveDsl.g:468:59: (iv_rulePerspectiveElement= rulePerspectiveElement EOF )
+            // InternalPerspectiveDsl.g:469:2: iv_rulePerspectiveElement= rulePerspectiveElement EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveElementRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveElement_in_entryRulePerspectiveElement1034);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveElement=rulePerspectiveElement();
 
             state._fsp--;
@@ -1374,16 +1275,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveElement; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveElement1044); 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;
@@ -1392,7 +1293,7 @@
 
 
     // $ANTLR start "rulePerspectiveElement"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:507:1: rulePerspectiveElement returns [EObject current=null] : (this_PerspectiveSashContainer_0= rulePerspectiveSashContainer | this_PerspectivePartStack_1= rulePerspectivePartStack | this_PerspectivePart_2= rulePerspectivePart ) ;
+    // InternalPerspectiveDsl.g:475:1: rulePerspectiveElement returns [EObject current=null] : (this_PerspectiveSashContainer_0= rulePerspectiveSashContainer | this_PerspectivePartStack_1= rulePerspectivePartStack | this_PerspectivePart_2= rulePerspectivePart ) ;
     public final EObject rulePerspectiveElement() throws RecognitionException {
         EObject current = null;
 
@@ -1403,26 +1304,27 @@
         EObject this_PerspectivePart_2 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:510:28: ( (this_PerspectiveSashContainer_0= rulePerspectiveSashContainer | this_PerspectivePartStack_1= rulePerspectivePartStack | this_PerspectivePart_2= rulePerspectivePart ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:511:1: (this_PerspectiveSashContainer_0= rulePerspectiveSashContainer | this_PerspectivePartStack_1= rulePerspectivePartStack | this_PerspectivePart_2= rulePerspectivePart )
+            // InternalPerspectiveDsl.g:481:2: ( (this_PerspectiveSashContainer_0= rulePerspectiveSashContainer | this_PerspectivePartStack_1= rulePerspectivePartStack | this_PerspectivePart_2= rulePerspectivePart ) )
+            // InternalPerspectiveDsl.g:482:2: (this_PerspectiveSashContainer_0= rulePerspectiveSashContainer | this_PerspectivePartStack_1= rulePerspectivePartStack | this_PerspectivePart_2= rulePerspectivePart )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:511:1: (this_PerspectiveSashContainer_0= rulePerspectiveSashContainer | this_PerspectivePartStack_1= rulePerspectivePartStack | this_PerspectivePart_2= rulePerspectivePart )
+            // InternalPerspectiveDsl.g:482:2: (this_PerspectiveSashContainer_0= rulePerspectiveSashContainer | this_PerspectivePartStack_1= rulePerspectivePartStack | this_PerspectivePart_2= rulePerspectivePart )
             int alt9=3;
             switch ( input.LA(1) ) {
-            case 24:
+            case 23:
                 {
                 alt9=1;
                 }
                 break;
-            case 28:
+            case 27:
                 {
                 alt9=2;
                 }
                 break;
-            case 29:
+            case 28:
                 {
                 alt9=3;
                 }
@@ -1437,67 +1339,67 @@
 
             switch (alt9) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:512:5: this_PerspectiveSashContainer_0= rulePerspectiveSashContainer
+                    // InternalPerspectiveDsl.g:483:3: this_PerspectiveSashContainer_0= rulePerspectiveSashContainer
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveSashContainer_in_rulePerspectiveElement1091);
+                    pushFollow(FOLLOW_2);
                     this_PerspectiveSashContainer_0=rulePerspectiveSashContainer();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveSashContainer_0; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveSashContainer_0;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:522:5: this_PerspectivePartStack_1= rulePerspectivePartStack
+                    // InternalPerspectiveDsl.g:492:3: this_PerspectivePartStack_1= rulePerspectivePartStack
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectivePartStack_in_rulePerspectiveElement1118);
+                    pushFollow(FOLLOW_2);
                     this_PerspectivePartStack_1=rulePerspectivePartStack();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectivePartStack_1; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectivePartStack_1;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:532:5: this_PerspectivePart_2= rulePerspectivePart
+                    // InternalPerspectiveDsl.g:501:3: this_PerspectivePart_2= rulePerspectivePart
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectivePart_in_rulePerspectiveElement1145);
+                    pushFollow(FOLLOW_2);
                     this_PerspectivePart_2=rulePerspectivePart();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectivePart_2; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectivePart_2;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
@@ -1509,14 +1411,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1525,7 +1429,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveSashContainer"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:548:1: entryRulePerspectiveSashContainer returns [EObject current=null] : iv_rulePerspectiveSashContainer= rulePerspectiveSashContainer EOF ;
+    // InternalPerspectiveDsl.g:513:1: entryRulePerspectiveSashContainer returns [EObject current=null] : iv_rulePerspectiveSashContainer= rulePerspectiveSashContainer EOF ;
     public final EObject entryRulePerspectiveSashContainer() throws RecognitionException {
         EObject current = null;
 
@@ -1533,13 +1437,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:549:2: (iv_rulePerspectiveSashContainer= rulePerspectiveSashContainer EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:550:2: iv_rulePerspectiveSashContainer= rulePerspectiveSashContainer EOF
+            // InternalPerspectiveDsl.g:513:65: (iv_rulePerspectiveSashContainer= rulePerspectiveSashContainer EOF )
+            // InternalPerspectiveDsl.g:514:2: iv_rulePerspectiveSashContainer= rulePerspectiveSashContainer EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveSashContainerRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveSashContainer_in_entryRulePerspectiveSashContainer1180);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveSashContainer=rulePerspectiveSashContainer();
 
             state._fsp--;
@@ -1547,16 +1451,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveSashContainer; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveSashContainer1190); 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;
@@ -1565,7 +1469,7 @@
 
 
     // $ANTLR start "rulePerspectiveSashContainer"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:557:1: rulePerspectiveSashContainer returns [EObject current=null] : ( () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' ) ;
+    // InternalPerspectiveDsl.g:520:1: rulePerspectiveSashContainer returns [EObject current=null] : ( () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' ) ;
     public final EObject rulePerspectiveSashContainer() throws RecognitionException {
         EObject current = null;
 
@@ -1585,57 +1489,58 @@
         EObject lv_elements_13_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:560:28: ( ( () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:561:1: ( () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' )
+            // InternalPerspectiveDsl.g:526:2: ( ( () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' ) )
+            // InternalPerspectiveDsl.g:527:2: ( () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:561:1: ( () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:561:2: () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}'
+            // InternalPerspectiveDsl.g:527:2: ( () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' )
+            // InternalPerspectiveDsl.g:528:3: () otherlv_1= 'sashContainer' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}'
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:561:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:562:5: 
+            // InternalPerspectiveDsl.g:528:3: ()
+            // InternalPerspectiveDsl.g:529:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveSashContainerAccess().getPerspectiveSashContainerAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveSashContainerAccess().getPerspectiveSashContainerAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,24,FOLLOW_24_in_rulePerspectiveSashContainer1236); if (state.failed) return current;
+            otherlv_1=(Token)match(input,23,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveSashContainerAccess().getSashContainerKeyword_1());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:571:1: ( (lv_elementId_2_0= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:572:1: (lv_elementId_2_0= RULE_ID )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:572:1: (lv_elementId_2_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:573:3: lv_elementId_2_0= RULE_ID
-            {
-            lv_elementId_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveSashContainer1253); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(lv_elementId_2_0, grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0()); 
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveSashContainerAccess().getSashContainerKeyword_1());
               		
             }
+            // InternalPerspectiveDsl.g:539:3: ( (lv_elementId_2_0= RULE_ID ) )
+            // InternalPerspectiveDsl.g:540:4: (lv_elementId_2_0= RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:540:4: (lv_elementId_2_0= RULE_ID )
+            // InternalPerspectiveDsl.g:541:5: lv_elementId_2_0= RULE_ID
+            {
+            lv_elementId_2_0=(Token)match(input,RULE_ID,FOLLOW_13); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
-              	        }
-                     		setWithLastConsumed(
-                     			current, 
-                     			"elementId",
-                      		lv_elementId_2_0, 
-                      		"ID");
-              	    
+              					newLeafNode(lv_elementId_2_0, grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"elementId",
+              						lv_elementId_2_0,
+              						"org.eclipse.xtext.xbase.Xtype.ID");
+              				
             }
 
             }
@@ -1643,95 +1548,95 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:589:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:591:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:557:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:558:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:591:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:592:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:558:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:559:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:595:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:596:3: ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:562:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:563:6: ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )*
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:596:3: ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:563:6: ( ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )*
             loop10:
             do {
                 int alt10=5;
                 int LA10_0 = input.LA(1);
 
-                if ( LA10_0 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
+                if ( LA10_0 == 24 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
                     alt10=1;
                 }
-                else if ( LA10_0 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
+                else if ( LA10_0 == 25 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
                     alt10=2;
                 }
-                else if ( LA10_0 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
+                else if ( LA10_0 == 26 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
                     alt10=3;
                 }
-                else if ( LA10_0 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
+                else if ( LA10_0 == 21 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
                     alt10=4;
                 }
 
 
                 switch (alt10) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:598:4: ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:564:4: ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:598:4: ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:599:5: {...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:564:4: ({...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:565:5: {...}? => ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSashContainer", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:599:121: ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:600:6: ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) )
+            	    // InternalPerspectiveDsl.g:565:121: ( ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:566:6: ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:603:6: ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:603:7: {...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) )
+            	    // InternalPerspectiveDsl.g:569:9: ({...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) ) )
+            	    // InternalPerspectiveDsl.g:569:10: {...}? => (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSashContainer", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:603:16: (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:603:18: otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) )
+            	    // InternalPerspectiveDsl.g:569:19: (otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) ) )
+            	    // InternalPerspectiveDsl.g:569:20: otherlv_4= 'orientation' ( (lv_orientation_5_0= ruleSashOrientation ) )
             	    {
-            	    otherlv_4=(Token)match(input,25,FOLLOW_25_in_rulePerspectiveSashContainer1316); if (state.failed) return current;
+            	    otherlv_4=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_4, grammarAccess.getPerspectiveSashContainerAccess().getOrientationKeyword_3_0_0());
-            	          
+            	      									newLeafNode(otherlv_4, grammarAccess.getPerspectiveSashContainerAccess().getOrientationKeyword_3_0_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:607:1: ( (lv_orientation_5_0= ruleSashOrientation ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:608:1: (lv_orientation_5_0= ruleSashOrientation )
+            	    // InternalPerspectiveDsl.g:573:9: ( (lv_orientation_5_0= ruleSashOrientation ) )
+            	    // InternalPerspectiveDsl.g:574:10: (lv_orientation_5_0= ruleSashOrientation )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:608:1: (lv_orientation_5_0= ruleSashOrientation )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:609:3: lv_orientation_5_0= ruleSashOrientation
+            	    // InternalPerspectiveDsl.g:574:10: (lv_orientation_5_0= ruleSashOrientation )
+            	    // InternalPerspectiveDsl.g:575:11: lv_orientation_5_0= ruleSashOrientation
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0()); 
-            	      	    
+
+            	      											newCompositeNode(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0());
+            	      										
             	    }
-            	    pushFollow(FOLLOW_ruleSashOrientation_in_rulePerspectiveSashContainer1337);
+            	    pushFollow(FOLLOW_13);
             	    lv_orientation_5_0=ruleSashOrientation();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getPerspectiveSashContainerRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"orientation",
-            	              		lv_orientation_5_0, 
-            	              		"SashOrientation");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElementForParent(grammarAccess.getPerspectiveSashContainerRule());
+            	      											}
+            	      											set(
+            	      												current,
+            	      												"orientation",
+            	      												lv_orientation_5_0,
+            	      												"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.SashOrientation");
+            	      											afterParserOrEnumRuleCall();
+            	      										
             	    }
 
             	    }
@@ -1756,53 +1661,53 @@
             	    }
             	    break;
             	case 2 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:632:4: ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:598:4: ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:632:4: ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:633:5: {...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:598:4: ({...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:599:5: {...}? => ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSashContainer", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:633:121: ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:634:6: ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) )
+            	    // InternalPerspectiveDsl.g:599:121: ( ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:600:6: ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:637:6: ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:637:7: {...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) )
+            	    // InternalPerspectiveDsl.g:603:9: ({...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) ) )
+            	    // InternalPerspectiveDsl.g:603:10: {...}? => (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSashContainer", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:637:16: (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:637:18: otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) )
+            	    // InternalPerspectiveDsl.g:603:19: (otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) ) )
+            	    // InternalPerspectiveDsl.g:603:20: otherlv_6= 'selectedElement' ( (otherlv_7= RULE_ID ) )
             	    {
-            	    otherlv_6=(Token)match(input,26,FOLLOW_26_in_rulePerspectiveSashContainer1405); if (state.failed) return current;
+            	    otherlv_6=(Token)match(input,25,FOLLOW_4); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_6, grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementKeyword_3_1_0());
-            	          
+            	      									newLeafNode(otherlv_6, grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementKeyword_3_1_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:641:1: ( (otherlv_7= RULE_ID ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:642:1: (otherlv_7= RULE_ID )
+            	    // InternalPerspectiveDsl.g:607:9: ( (otherlv_7= RULE_ID ) )
+            	    // InternalPerspectiveDsl.g:608:10: (otherlv_7= RULE_ID )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:642:1: (otherlv_7= RULE_ID )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:643:3: otherlv_7= RULE_ID
+            	    // InternalPerspectiveDsl.g:608:10: (otherlv_7= RULE_ID )
+            	    // InternalPerspectiveDsl.g:609:11: otherlv_7= RULE_ID
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
-            	      	        }
-            	              
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
+            	      											}
+            	      										
             	    }
-            	    otherlv_7=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveSashContainer1425); if (state.failed) return current;
+            	    otherlv_7=(Token)match(input,RULE_ID,FOLLOW_13); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      		newLeafNode(otherlv_7, grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0()); 
-            	      	
+            	      											newLeafNode(otherlv_7, grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0());
+            	      										
             	    }
 
             	    }
@@ -1827,58 +1732,58 @@
             	    }
             	    break;
             	case 3 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:661:4: ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:626:4: ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:661:4: ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:662:5: {...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:626:4: ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:627:5: {...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSashContainer", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:662:121: ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:663:6: ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:627:121: ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:628:6: ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:666:6: ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:666:7: {...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:631:9: ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:631:10: {...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSashContainer", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:666:16: (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:666:18: otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:631:19: (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:631:20: otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) )
             	    {
-            	    otherlv_8=(Token)match(input,27,FOLLOW_27_in_rulePerspectiveSashContainer1493); if (state.failed) return current;
+            	    otherlv_8=(Token)match(input,26,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_8, grammarAccess.getPerspectiveSashContainerAccess().getSpaceVolumeKeyword_3_2_0());
-            	          
+            	      									newLeafNode(otherlv_8, grammarAccess.getPerspectiveSashContainerAccess().getSpaceVolumeKeyword_3_2_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:670:1: ( (lv_containerData_9_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:671:1: (lv_containerData_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:635:9: ( (lv_containerData_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:636:10: (lv_containerData_9_0= RULE_STRING )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:671:1: (lv_containerData_9_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:672:3: lv_containerData_9_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:636:10: (lv_containerData_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:637:11: lv_containerData_9_0= RULE_STRING
             	    {
-            	    lv_containerData_9_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePerspectiveSashContainer1510); if (state.failed) return current;
+            	    lv_containerData_9_0=(Token)match(input,RULE_STRING,FOLLOW_13); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_containerData_9_0, grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); 
-            	      		
+            	      											newLeafNode(lv_containerData_9_0, grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"containerData",
-            	              		lv_containerData_9_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"containerData",
+            	      												lv_containerData_9_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -1903,58 +1808,58 @@
             	    }
             	    break;
             	case 4 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:695:4: ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:659:4: ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:695:4: ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:696:5: {...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:659:4: ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:660:5: {...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSashContainer", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:696:121: ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:697:6: ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:660:121: ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:661:6: ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:700:6: ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:700:7: {...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:664:9: ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:664:10: {...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSashContainer", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:700:16: (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:700:18: otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:664:19: (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:664:20: otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) )
             	    {
-            	    otherlv_10=(Token)match(input,22,FOLLOW_22_in_rulePerspectiveSashContainer1583); if (state.failed) return current;
+            	    otherlv_10=(Token)match(input,21,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_10, grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityKeyword_3_3_0());
-            	          
+            	      									newLeafNode(otherlv_10, grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityKeyword_3_3_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:704:1: ( (lv_accessibilityPhrase_11_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:705:1: (lv_accessibilityPhrase_11_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:668:9: ( (lv_accessibilityPhrase_11_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:669:10: (lv_accessibilityPhrase_11_0= RULE_STRING )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:705:1: (lv_accessibilityPhrase_11_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:706:3: lv_accessibilityPhrase_11_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:669:10: (lv_accessibilityPhrase_11_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:670:11: lv_accessibilityPhrase_11_0= RULE_STRING
             	    {
-            	    lv_accessibilityPhrase_11_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePerspectiveSashContainer1600); if (state.failed) return current;
+            	    lv_accessibilityPhrase_11_0=(Token)match(input,RULE_STRING,FOLLOW_13); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_accessibilityPhrase_11_0, grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); 
-            	      		
+            	      											newLeafNode(lv_accessibilityPhrase_11_0, grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"accessibilityPhrase",
-            	              		lv_accessibilityPhrase_11_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectiveSashContainerRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"accessibilityPhrase",
+            	      												lv_accessibilityPhrase_11_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -1994,52 +1899,52 @@
 
             }
 
-            otherlv_12=(Token)match(input,14,FOLLOW_14_in_rulePerspectiveSashContainer1658); if (state.failed) return current;
+            otherlv_12=(Token)match(input,14,FOLLOW_12); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_12, grammarAccess.getPerspectiveSashContainerAccess().getLeftCurlyBracketKeyword_4());
-                  
+              			newLeafNode(otherlv_12, grammarAccess.getPerspectiveSashContainerAccess().getLeftCurlyBracketKeyword_4());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:740:1: ( (lv_elements_13_0= rulePerspectiveElement ) )*
+            // InternalPerspectiveDsl.g:703:3: ( (lv_elements_13_0= rulePerspectiveElement ) )*
             loop11:
             do {
                 int alt11=2;
                 int LA11_0 = input.LA(1);
 
-                if ( (LA11_0==24||(LA11_0>=28 && LA11_0<=29)) ) {
+                if ( (LA11_0==23||(LA11_0>=27 && LA11_0<=28)) ) {
                     alt11=1;
                 }
 
 
                 switch (alt11) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:741:1: (lv_elements_13_0= rulePerspectiveElement )
+            	    // InternalPerspectiveDsl.g:704:4: (lv_elements_13_0= rulePerspectiveElement )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:741:1: (lv_elements_13_0= rulePerspectiveElement )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:742:3: lv_elements_13_0= rulePerspectiveElement
+            	    // InternalPerspectiveDsl.g:704:4: (lv_elements_13_0= rulePerspectiveElement )
+            	    // InternalPerspectiveDsl.g:705:5: lv_elements_13_0= rulePerspectiveElement
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_rulePerspectiveElement_in_rulePerspectiveSashContainer1679);
+            	    pushFollow(FOLLOW_12);
             	    lv_elements_13_0=rulePerspectiveElement();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getPerspectiveSashContainerRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"elements",
-            	              		lv_elements_13_0, 
-            	              		"PerspectiveElement");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getPerspectiveSashContainerRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"elements",
+            	      						lv_elements_13_0,
+            	      						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveElement");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -2053,11 +1958,11 @@
                 }
             } while (true);
 
-            otherlv_14=(Token)match(input,15,FOLLOW_15_in_rulePerspectiveSashContainer1692); if (state.failed) return current;
+            otherlv_14=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_14, grammarAccess.getPerspectiveSashContainerAccess().getRightCurlyBracketKeyword_6());
-                  
+              			newLeafNode(otherlv_14, grammarAccess.getPerspectiveSashContainerAccess().getRightCurlyBracketKeyword_6());
+              		
             }
 
             }
@@ -2066,14 +1971,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2082,7 +1989,7 @@
 
 
     // $ANTLR start "entryRulePerspectivePartStack"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:770:1: entryRulePerspectivePartStack returns [EObject current=null] : iv_rulePerspectivePartStack= rulePerspectivePartStack EOF ;
+    // InternalPerspectiveDsl.g:730:1: entryRulePerspectivePartStack returns [EObject current=null] : iv_rulePerspectivePartStack= rulePerspectivePartStack EOF ;
     public final EObject entryRulePerspectivePartStack() throws RecognitionException {
         EObject current = null;
 
@@ -2090,13 +1997,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:771:2: (iv_rulePerspectivePartStack= rulePerspectivePartStack EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:772:2: iv_rulePerspectivePartStack= rulePerspectivePartStack EOF
+            // InternalPerspectiveDsl.g:730:61: (iv_rulePerspectivePartStack= rulePerspectivePartStack EOF )
+            // InternalPerspectiveDsl.g:731:2: iv_rulePerspectivePartStack= rulePerspectivePartStack EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectivePartStackRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectivePartStack_in_entryRulePerspectivePartStack1728);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectivePartStack=rulePerspectivePartStack();
 
             state._fsp--;
@@ -2104,16 +2011,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectivePartStack; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectivePartStack1738); 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;
@@ -2122,7 +2029,7 @@
 
 
     // $ANTLR start "rulePerspectivePartStack"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:779:1: rulePerspectivePartStack returns [EObject current=null] : ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' ) ;
+    // InternalPerspectiveDsl.g:737:1: rulePerspectivePartStack returns [EObject current=null] : ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' ) ;
     public final EObject rulePerspectivePartStack() throws RecognitionException {
         EObject current = null;
 
@@ -2139,57 +2046,58 @@
         EObject lv_elements_11_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:782:28: ( ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:783:1: ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' )
+            // InternalPerspectiveDsl.g:743:2: ( ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' ) )
+            // InternalPerspectiveDsl.g:744:2: ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:783:1: ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:783:2: () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}'
+            // InternalPerspectiveDsl.g:744:2: ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' )
+            // InternalPerspectiveDsl.g:745:3: () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}'
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:783:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:784:5: 
+            // InternalPerspectiveDsl.g:745:3: ()
+            // InternalPerspectiveDsl.g:746:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectivePartStackAccess().getPerspectivePartStackAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectivePartStackAccess().getPerspectivePartStackAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,28,FOLLOW_28_in_rulePerspectivePartStack1784); if (state.failed) return current;
+            otherlv_1=(Token)match(input,27,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectivePartStackAccess().getPartStackKeyword_1());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:793:1: ( (lv_elementId_2_0= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:794:1: (lv_elementId_2_0= RULE_ID )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:794:1: (lv_elementId_2_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:795:3: lv_elementId_2_0= RULE_ID
-            {
-            lv_elementId_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectivePartStack1801); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(lv_elementId_2_0, grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0()); 
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectivePartStackAccess().getPartStackKeyword_1());
               		
             }
+            // InternalPerspectiveDsl.g:756:3: ( (lv_elementId_2_0= RULE_ID ) )
+            // InternalPerspectiveDsl.g:757:4: (lv_elementId_2_0= RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:757:4: (lv_elementId_2_0= RULE_ID )
+            // InternalPerspectiveDsl.g:758:5: lv_elementId_2_0= RULE_ID
+            {
+            lv_elementId_2_0=(Token)match(input,RULE_ID,FOLLOW_15); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectivePartStackRule());
-              	        }
-                     		setWithLastConsumed(
-                     			current, 
-                     			"elementId",
-                      		lv_elementId_2_0, 
-                      		"ID");
-              	    
+              					newLeafNode(lv_elementId_2_0, grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"elementId",
+              						lv_elementId_2_0,
+              						"org.eclipse.xtext.xbase.Xtype.ID");
+              				
             }
 
             }
@@ -2197,82 +2105,82 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:811:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:813:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:774:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:775:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:813:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:814:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:775:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:776:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:817:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:818:3: ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:779:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:780:6: ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )*
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:818:3: ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:780:6: ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )*
             loop12:
             do {
                 int alt12=4;
                 int LA12_0 = input.LA(1);
 
-                if ( LA12_0 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
+                if ( LA12_0 == 25 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
                     alt12=1;
                 }
-                else if ( LA12_0 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+                else if ( LA12_0 == 26 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
                     alt12=2;
                 }
-                else if ( LA12_0 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                else if ( LA12_0 == 21 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
                     alt12=3;
                 }
 
 
                 switch (alt12) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:820:4: ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:781:4: ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:820:4: ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:821:5: {...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:781:4: ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:782:5: {...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:821:117: ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:822:6: ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) )
+            	    // InternalPerspectiveDsl.g:782:117: ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:783:6: ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:825:6: ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:825:7: {...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) )
+            	    // InternalPerspectiveDsl.g:786:9: ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) )
+            	    // InternalPerspectiveDsl.g:786:10: {...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:825:16: (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:825:18: otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) )
+            	    // InternalPerspectiveDsl.g:786:19: (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) )
+            	    // InternalPerspectiveDsl.g:786:20: otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) )
             	    {
-            	    otherlv_4=(Token)match(input,26,FOLLOW_26_in_rulePerspectivePartStack1864); if (state.failed) return current;
+            	    otherlv_4=(Token)match(input,25,FOLLOW_4); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_4, grammarAccess.getPerspectivePartStackAccess().getSelectedElementKeyword_3_0_0());
-            	          
+            	      									newLeafNode(otherlv_4, grammarAccess.getPerspectivePartStackAccess().getSelectedElementKeyword_3_0_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:829:1: ( (otherlv_5= RULE_ID ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:830:1: (otherlv_5= RULE_ID )
+            	    // InternalPerspectiveDsl.g:790:9: ( (otherlv_5= RULE_ID ) )
+            	    // InternalPerspectiveDsl.g:791:10: (otherlv_5= RULE_ID )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:830:1: (otherlv_5= RULE_ID )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:831:3: otherlv_5= RULE_ID
+            	    // InternalPerspectiveDsl.g:791:10: (otherlv_5= RULE_ID )
+            	    // InternalPerspectiveDsl.g:792:11: otherlv_5= RULE_ID
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectivePartStackRule());
-            	      	        }
-            	              
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+            	      											}
+            	      										
             	    }
-            	    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectivePartStack1884); if (state.failed) return current;
+            	    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_15); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      		newLeafNode(otherlv_5, grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0()); 
-            	      	
+            	      											newLeafNode(otherlv_5, grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0());
+            	      										
             	    }
 
             	    }
@@ -2297,58 +2205,58 @@
             	    }
             	    break;
             	case 2 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:849:4: ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:809:4: ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:849:4: ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:850:5: {...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:809:4: ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:810:5: {...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:850:117: ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:851:6: ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:810:117: ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:811:6: ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:854:6: ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:854:7: {...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:814:9: ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:814:10: {...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:854:16: (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:854:18: otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:814:19: (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:814:20: otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) )
             	    {
-            	    otherlv_6=(Token)match(input,27,FOLLOW_27_in_rulePerspectivePartStack1952); if (state.failed) return current;
+            	    otherlv_6=(Token)match(input,26,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_6, grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0());
-            	          
+            	      									newLeafNode(otherlv_6, grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:858:1: ( (lv_containerData_7_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:859:1: (lv_containerData_7_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:818:9: ( (lv_containerData_7_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:819:10: (lv_containerData_7_0= RULE_STRING )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:859:1: (lv_containerData_7_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:860:3: lv_containerData_7_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:819:10: (lv_containerData_7_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:820:11: lv_containerData_7_0= RULE_STRING
             	    {
-            	    lv_containerData_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePerspectivePartStack1969); if (state.failed) return current;
+            	    lv_containerData_7_0=(Token)match(input,RULE_STRING,FOLLOW_15); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_containerData_7_0, grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); 
-            	      		
+            	      											newLeafNode(lv_containerData_7_0, grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectivePartStackRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"containerData",
-            	              		lv_containerData_7_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"containerData",
+            	      												lv_containerData_7_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -2373,58 +2281,58 @@
             	    }
             	    break;
             	case 3 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:883:4: ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:842:4: ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:883:4: ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:884:5: {...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:842:4: ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:843:5: {...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:884:117: ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:885:6: ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:843:117: ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:844:6: ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:888:6: ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:888:7: {...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:847:9: ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:847:10: {...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:888:16: (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:888:18: otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:847:19: (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:847:20: otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) )
             	    {
-            	    otherlv_8=(Token)match(input,22,FOLLOW_22_in_rulePerspectivePartStack2042); if (state.failed) return current;
+            	    otherlv_8=(Token)match(input,21,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_8, grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0());
-            	          
+            	      									newLeafNode(otherlv_8, grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:892:1: ( (lv_accessibilityPhrase_9_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:893:1: (lv_accessibilityPhrase_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:851:9: ( (lv_accessibilityPhrase_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:852:10: (lv_accessibilityPhrase_9_0= RULE_STRING )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:893:1: (lv_accessibilityPhrase_9_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:894:3: lv_accessibilityPhrase_9_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:852:10: (lv_accessibilityPhrase_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:853:11: lv_accessibilityPhrase_9_0= RULE_STRING
             	    {
-            	    lv_accessibilityPhrase_9_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePerspectivePartStack2059); if (state.failed) return current;
+            	    lv_accessibilityPhrase_9_0=(Token)match(input,RULE_STRING,FOLLOW_15); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_accessibilityPhrase_9_0, grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); 
-            	      		
+            	      											newLeafNode(lv_accessibilityPhrase_9_0, grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectivePartStackRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"accessibilityPhrase",
-            	              		lv_accessibilityPhrase_9_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"accessibilityPhrase",
+            	      												lv_accessibilityPhrase_9_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -2464,52 +2372,52 @@
 
             }
 
-            otherlv_10=(Token)match(input,14,FOLLOW_14_in_rulePerspectivePartStack2117); if (state.failed) return current;
+            otherlv_10=(Token)match(input,14,FOLLOW_12); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_10, grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4());
-                  
+              			newLeafNode(otherlv_10, grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:928:1: ( (lv_elements_11_0= rulePerspectiveElement ) )*
+            // InternalPerspectiveDsl.g:886:3: ( (lv_elements_11_0= rulePerspectiveElement ) )*
             loop13:
             do {
                 int alt13=2;
                 int LA13_0 = input.LA(1);
 
-                if ( (LA13_0==24||(LA13_0>=28 && LA13_0<=29)) ) {
+                if ( (LA13_0==23||(LA13_0>=27 && LA13_0<=28)) ) {
                     alt13=1;
                 }
 
 
                 switch (alt13) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:929:1: (lv_elements_11_0= rulePerspectiveElement )
+            	    // InternalPerspectiveDsl.g:887:4: (lv_elements_11_0= rulePerspectiveElement )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:929:1: (lv_elements_11_0= rulePerspectiveElement )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:930:3: lv_elements_11_0= rulePerspectiveElement
+            	    // InternalPerspectiveDsl.g:887:4: (lv_elements_11_0= rulePerspectiveElement )
+            	    // InternalPerspectiveDsl.g:888:5: lv_elements_11_0= rulePerspectiveElement
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_rulePerspectiveElement_in_rulePerspectivePartStack2138);
+            	    pushFollow(FOLLOW_12);
             	    lv_elements_11_0=rulePerspectiveElement();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getPerspectivePartStackRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"elements",
-            	              		lv_elements_11_0, 
-            	              		"PerspectiveElement");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getPerspectivePartStackRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"elements",
+            	      						lv_elements_11_0,
+            	      						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveElement");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -2523,11 +2431,11 @@
                 }
             } while (true);
 
-            otherlv_12=(Token)match(input,15,FOLLOW_15_in_rulePerspectivePartStack2151); if (state.failed) return current;
+            otherlv_12=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_12, grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6());
-                  
+              			newLeafNode(otherlv_12, grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6());
+              		
             }
 
             }
@@ -2536,14 +2444,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2552,7 +2462,7 @@
 
 
     // $ANTLR start "entryRulePerspectivePart"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:958:1: entryRulePerspectivePart returns [EObject current=null] : iv_rulePerspectivePart= rulePerspectivePart EOF ;
+    // InternalPerspectiveDsl.g:913:1: entryRulePerspectivePart returns [EObject current=null] : iv_rulePerspectivePart= rulePerspectivePart EOF ;
     public final EObject entryRulePerspectivePart() throws RecognitionException {
         EObject current = null;
 
@@ -2560,13 +2470,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:959:2: (iv_rulePerspectivePart= rulePerspectivePart EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:960:2: iv_rulePerspectivePart= rulePerspectivePart EOF
+            // InternalPerspectiveDsl.g:913:56: (iv_rulePerspectivePart= rulePerspectivePart EOF )
+            // InternalPerspectiveDsl.g:914:2: iv_rulePerspectivePart= rulePerspectivePart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectivePartRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectivePart_in_entryRulePerspectivePart2187);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectivePart=rulePerspectivePart();
 
             state._fsp--;
@@ -2574,16 +2484,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectivePart; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectivePart2197); 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;
@@ -2592,83 +2502,81 @@
 
 
     // $ANTLR start "rulePerspectivePart"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:967:1: rulePerspectivePart returns [EObject current=null] : ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* ) ) ) ) ;
+    // InternalPerspectiveDsl.g:920:1: rulePerspectivePart returns [EObject current=null] : ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) ) ;
     public final EObject rulePerspectivePart() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
-        Token lv_description_4_0=null;
+        Token otherlv_4=null;
+        Token lv_containerData_5_0=null;
         Token otherlv_6=null;
-        Token lv_containerData_7_0=null;
+        Token lv_accessibilityPhrase_7_0=null;
         Token otherlv_8=null;
-        Token lv_accessibilityPhrase_9_0=null;
+        Token lv_iconURI_9_0=null;
         Token otherlv_10=null;
-        Token lv_iconURI_11_0=null;
-        Token otherlv_12=null;
-        Token lv_isClosable_14_0=null;
+        Token lv_isClosable_12_0=null;
         AntlrDatatypeRuleToken lv_elementId_2_0 = null;
 
-        AntlrDatatypeRuleToken lv_descriptionValue_5_0 = null;
-
-        EObject lv_view_13_0 = null;
+        EObject lv_view_11_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:970:28: ( ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* ) ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:971:1: ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* ) ) ) )
+            // InternalPerspectiveDsl.g:926:2: ( ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) ) )
+            // InternalPerspectiveDsl.g:927:2: ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:971:1: ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:971:2: () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:927:2: ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) )
+            // InternalPerspectiveDsl.g:928:3: () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:971:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:972:5: 
+            // InternalPerspectiveDsl.g:928:3: ()
+            // InternalPerspectiveDsl.g:929:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,29,FOLLOW_29_in_rulePerspectivePart2243); if (state.failed) return current;
+            otherlv_1=(Token)match(input,28,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectivePartAccess().getPartKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectivePartAccess().getPartKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:981:1: ( (lv_elementId_2_0= ruleTRANSLATABLEID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:982:1: (lv_elementId_2_0= ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:939:3: ( (lv_elementId_2_0= ruleTRANSLATABLEID ) )
+            // InternalPerspectiveDsl.g:940:4: (lv_elementId_2_0= ruleTRANSLATABLEID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:982:1: (lv_elementId_2_0= ruleTRANSLATABLEID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:983:3: lv_elementId_2_0= ruleTRANSLATABLEID
+            // InternalPerspectiveDsl.g:940:4: (lv_elementId_2_0= ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:941:5: lv_elementId_2_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_rulePerspectivePart2264);
+            pushFollow(FOLLOW_16);
             lv_elementId_2_0=ruleTRANSLATABLEID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"elementId",
-                      		lv_elementId_2_0, 
-                      		"TRANSLATABLEID");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
+              					}
+              					set(
+              						current,
+              						"elementId",
+              						lv_elementId_2_0,
+              						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2676,121 +2584,93 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:999:2: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1001:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:958:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:959:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1001:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1002:2: ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:959:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:960:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1005:2: ( ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1006:3: ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:963:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:964:6: ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )*
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1006:3: ( ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:964:6: ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )*
             loop14:
             do {
-                int alt14=7;
+                int alt14=6;
                 int LA14_0 = input.LA(1);
 
-                if ( LA14_0 ==18 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                if ( LA14_0 == 26 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
                     alt14=1;
                 }
-                else if ( LA14_0 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                else if ( LA14_0 == 21 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
                     alt14=2;
                 }
-                else if ( LA14_0 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                else if ( LA14_0 == 20 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
                     alt14=3;
                 }
-                else if ( LA14_0 ==21 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                else if ( LA14_0 == 29 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
                     alt14=4;
                 }
-                else if ( LA14_0 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                else if ( LA14_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
                     alt14=5;
                 }
-                else if ( LA14_0 ==31 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 5) ) {
-                    alt14=6;
-                }
 
 
                 switch (alt14) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1008:4: ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:965:4: ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1008:4: ({...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1009:5: {...}? => ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:965:4: ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:966:5: {...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1009:112: ( ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1010:6: ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:966:112: ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:967:6: ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1013:6: ({...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1013:7: {...}? => ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) )
+            	    // InternalPerspectiveDsl.g:970:9: ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:970:10: {...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1013:16: ( ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1013:17: ( (lv_description_4_0= 'described by' ) ) ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) )
+            	    // InternalPerspectiveDsl.g:970:19: (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:970:20: otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1013:17: ( (lv_description_4_0= 'described by' ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1014:1: (lv_description_4_0= 'described by' )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1014:1: (lv_description_4_0= 'described by' )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1015:3: lv_description_4_0= 'described by'
-            	    {
-            	    lv_description_4_0=(Token)match(input,18,FOLLOW_18_in_rulePerspectivePart2328); if (state.failed) return current;
+            	    otherlv_4=(Token)match(input,26,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_description_4_0, grammarAccess.getPerspectivePartAccess().getDescriptionDescribedByKeyword_3_0_0_0());
-            	          
+            	      									newLeafNode(otherlv_4, grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_0_0());
+            	      								
+            	    }
+            	    // InternalPerspectiveDsl.g:974:9: ( (lv_containerData_5_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:975:10: (lv_containerData_5_0= RULE_STRING )
+            	    {
+            	    // InternalPerspectiveDsl.g:975:10: (lv_containerData_5_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:976:11: lv_containerData_5_0= RULE_STRING
+            	    {
+            	    lv_containerData_5_0=(Token)match(input,RULE_STRING,FOLLOW_16); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      											newLeafNode(lv_containerData_5_0, grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_0_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectivePartRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "description", true, "described by");
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1028:2: ( (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1029:1: (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1029:1: (lv_descriptionValue_5_0= ruleTRANSLATABLESTRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1030:3: lv_descriptionValue_5_0= ruleTRANSLATABLESTRING
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getPerspectivePartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_rulePerspectivePart2362);
-            	    lv_descriptionValue_5_0=ruleTRANSLATABLESTRING();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"descriptionValue",
-            	              		lv_descriptionValue_5_0, 
-            	              		"TRANSLATABLESTRING");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectivePartRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"containerData",
+            	      												lv_containerData_5_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -2815,58 +2695,58 @@
             	    }
             	    break;
             	case 2 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1053:4: ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:998:4: ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1053:4: ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1054:5: {...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:998:4: ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:999:5: {...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1054:112: ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1055:6: ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:999:112: ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1000:6: ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1058:6: ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1058:7: {...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1003:9: ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1003:10: {...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1058:16: (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1058:18: otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1003:19: (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1003:20: otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) )
             	    {
-            	    otherlv_6=(Token)match(input,27,FOLLOW_27_in_rulePerspectivePart2430); if (state.failed) return current;
+            	    otherlv_6=(Token)match(input,21,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_6, grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_1_0());
-            	          
+            	      									newLeafNode(otherlv_6, grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_1_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1062:1: ( (lv_containerData_7_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1063:1: (lv_containerData_7_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1007:9: ( (lv_accessibilityPhrase_7_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1008:10: (lv_accessibilityPhrase_7_0= RULE_STRING )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1063:1: (lv_containerData_7_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1064:3: lv_containerData_7_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:1008:10: (lv_accessibilityPhrase_7_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1009:11: lv_accessibilityPhrase_7_0= RULE_STRING
             	    {
-            	    lv_containerData_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePerspectivePart2447); if (state.failed) return current;
+            	    lv_accessibilityPhrase_7_0=(Token)match(input,RULE_STRING,FOLLOW_16); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_containerData_7_0, grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); 
-            	      		
+            	      											newLeafNode(lv_accessibilityPhrase_7_0, grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectivePartRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"containerData",
-            	              		lv_containerData_7_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectivePartRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"accessibilityPhrase",
+            	      												lv_accessibilityPhrase_7_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -2891,58 +2771,58 @@
             	    }
             	    break;
             	case 3 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1087:4: ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1031:4: ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1087:4: ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1088:5: {...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1031:4: ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1032:5: {...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1088:112: ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1089:6: ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1032:112: ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1033:6: ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1092:6: ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1092:7: {...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1036:9: ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1036:10: {...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1092:16: (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1092:18: otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1036:19: (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1036:20: otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) )
             	    {
-            	    otherlv_8=(Token)match(input,22,FOLLOW_22_in_rulePerspectivePart2520); if (state.failed) return current;
+            	    otherlv_8=(Token)match(input,20,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_8, grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_2_0());
-            	          
+            	      									newLeafNode(otherlv_8, grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1096:1: ( (lv_accessibilityPhrase_9_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1097:1: (lv_accessibilityPhrase_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1040:9: ( (lv_iconURI_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1041:10: (lv_iconURI_9_0= RULE_STRING )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1097:1: (lv_accessibilityPhrase_9_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1098:3: lv_accessibilityPhrase_9_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:1041:10: (lv_iconURI_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1042:11: lv_iconURI_9_0= RULE_STRING
             	    {
-            	    lv_accessibilityPhrase_9_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePerspectivePart2537); if (state.failed) return current;
+            	    lv_iconURI_9_0=(Token)match(input,RULE_STRING,FOLLOW_16); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_accessibilityPhrase_9_0, grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); 
-            	      		
+            	      											newLeafNode(lv_iconURI_9_0, grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_2_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectivePartRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"accessibilityPhrase",
-            	              		lv_accessibilityPhrase_9_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectivePartRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"iconURI",
+            	      												lv_iconURI_9_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -2967,58 +2847,63 @@
             	    }
             	    break;
             	case 4 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1121:4: ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1064:4: ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1121:4: ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1122:5: {...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1064:4: ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1065:5: {...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1122:112: ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1123:6: ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1065:112: ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1066:6: ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1126:6: ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1126:7: {...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1069:9: ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) )
+            	    // InternalPerspectiveDsl.g:1069:10: {...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1126:16: (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1126:18: otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1069:19: (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) )
+            	    // InternalPerspectiveDsl.g:1069:20: otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) )
             	    {
-            	    otherlv_10=(Token)match(input,21,FOLLOW_21_in_rulePerspectivePart2610); if (state.failed) return current;
+            	    otherlv_10=(Token)match(input,29,FOLLOW_17); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_10, grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_3_0());
-            	          
+            	      									newLeafNode(otherlv_10, grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1130:1: ( (lv_iconURI_11_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1131:1: (lv_iconURI_11_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1073:9: ( (lv_view_11_0= rulePerspectiveView ) )
+            	    // InternalPerspectiveDsl.g:1074:10: (lv_view_11_0= rulePerspectiveView )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1131:1: (lv_iconURI_11_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1132:3: lv_iconURI_11_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:1074:10: (lv_view_11_0= rulePerspectiveView )
+            	    // InternalPerspectiveDsl.g:1075:11: lv_view_11_0= rulePerspectiveView
             	    {
-            	    lv_iconURI_11_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePerspectivePart2627); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_iconURI_11_0, grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_3_1_0()); 
-            	      		
+            	      											newCompositeNode(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_3_1_0());
+            	      										
             	    }
+            	    pushFollow(FOLLOW_16);
+            	    lv_view_11_0=rulePerspectiveView();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectivePartRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"iconURI",
-            	              		lv_iconURI_11_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
+            	      											}
+            	      											set(
+            	      												current,
+            	      												"view",
+            	      												lv_view_11_0,
+            	      												"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveView");
+            	      											afterParserOrEnumRuleCall();
+            	      										
             	    }
 
             	    }
@@ -3043,126 +2928,45 @@
             	    }
             	    break;
             	case 5 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1155:4: ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1098:4: ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1155:4: ({...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1156:5: {...}? => ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1098:4: ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1099:5: {...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1156:112: ( ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1157:6: ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) )
+            	    // InternalPerspectiveDsl.g:1099:112: ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) )
+            	    // InternalPerspectiveDsl.g:1100:6: ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1160:6: ({...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1160:7: {...}? => (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) )
+            	    // InternalPerspectiveDsl.g:1103:9: ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) )
+            	    // InternalPerspectiveDsl.g:1103:10: {...}? => ( (lv_isClosable_12_0= 'isClosable' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1160:16: (otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1160:18: otherlv_12= 'view' ( (lv_view_13_0= rulePerspectiveView ) )
+            	    // InternalPerspectiveDsl.g:1103:19: ( (lv_isClosable_12_0= 'isClosable' ) )
+            	    // InternalPerspectiveDsl.g:1103:20: (lv_isClosable_12_0= 'isClosable' )
             	    {
-            	    otherlv_12=(Token)match(input,30,FOLLOW_30_in_rulePerspectivePart2700); if (state.failed) return current;
+            	    // InternalPerspectiveDsl.g:1103:20: (lv_isClosable_12_0= 'isClosable' )
+            	    // InternalPerspectiveDsl.g:1104:10: lv_isClosable_12_0= 'isClosable'
+            	    {
+            	    lv_isClosable_12_0=(Token)match(input,30,FOLLOW_16); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_12, grammarAccess.getPerspectivePartAccess().getViewKeyword_3_4_0());
-            	          
-            	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1164:1: ( (lv_view_13_0= rulePerspectiveView ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1165:1: (lv_view_13_0= rulePerspectiveView )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1165:1: (lv_view_13_0= rulePerspectiveView )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1166:3: lv_view_13_0= rulePerspectiveView
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_4_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_rulePerspectiveView_in_rulePerspectivePart2721);
-            	    lv_view_13_0=rulePerspectiveView();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getPerspectivePartRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"view",
-            	              		lv_view_13_0, 
-            	              		"PerspectiveView");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-            	case 6 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1189:4: ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1189:4: ({...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1190:5: {...}? => ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) )
-            	    {
-            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 5) ) {
-            	        if (state.backtracking>0) {state.failed=true; return current;}
-            	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 5)");
-            	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1190:112: ( ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1191:6: ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) )
-            	    {
-            	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 5);
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1194:6: ({...}? => ( (lv_isClosable_14_0= 'isClosable' ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1194:7: {...}? => ( (lv_isClosable_14_0= 'isClosable' ) )
-            	    {
-            	    if ( !((true)) ) {
-            	        if (state.backtracking>0) {state.failed=true; return current;}
-            	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
-            	    }
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1194:16: ( (lv_isClosable_14_0= 'isClosable' ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1195:1: (lv_isClosable_14_0= 'isClosable' )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1195:1: (lv_isClosable_14_0= 'isClosable' )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1196:3: lv_isClosable_14_0= 'isClosable'
-            	    {
-            	    lv_isClosable_14_0=(Token)match(input,31,FOLLOW_31_in_rulePerspectivePart2794); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	              newLeafNode(lv_isClosable_14_0, grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_5_0());
-            	          
+            	      										newLeafNode(lv_isClosable_12_0, grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getPerspectivePartRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "isClosable", true, "isClosable");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getPerspectivePartRule());
+            	      										}
+            	      										setWithLastConsumed(current, "isClosable", true, "isClosable");
+            	      									
             	    }
 
             	    }
@@ -3206,14 +3010,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3222,7 +3028,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveView"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1231:1: entryRulePerspectiveView returns [EObject current=null] : iv_rulePerspectiveView= rulePerspectiveView EOF ;
+    // InternalPerspectiveDsl.g:1132:1: entryRulePerspectiveView returns [EObject current=null] : iv_rulePerspectiveView= rulePerspectiveView EOF ;
     public final EObject entryRulePerspectiveView() throws RecognitionException {
         EObject current = null;
 
@@ -3230,13 +3036,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1232:2: (iv_rulePerspectiveView= rulePerspectiveView EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1233:2: iv_rulePerspectiveView= rulePerspectiveView EOF
+            // InternalPerspectiveDsl.g:1132:56: (iv_rulePerspectiveView= rulePerspectiveView EOF )
+            // InternalPerspectiveDsl.g:1133:2: iv_rulePerspectiveView= rulePerspectiveView EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveViewRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveView_in_entryRulePerspectiveView2883);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveView=rulePerspectiveView();
 
             state._fsp--;
@@ -3244,16 +3050,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveView; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveView2893); 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;
@@ -3262,7 +3068,7 @@
 
 
     // $ANTLR start "rulePerspectiveView"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1240:1: rulePerspectiveView returns [EObject current=null] : (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveBPMN_7= rulePerspectiveBPMN | this_PerspectiveGrid_8= rulePerspectiveGrid ) ;
+    // InternalPerspectiveDsl.g:1139:1: rulePerspectiveView returns [EObject current=null] : (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveBean_3= rulePerspectiveBean | this_PerspectiveReport_4= rulePerspectiveReport | this_PerspectiveOrganization_5= rulePerspectiveOrganization | this_PerspectiveTopology_6= rulePerspectiveTopology | this_PerspectiveDialog_7= rulePerspectiveDialog | this_PerspectiveBPMN_8= rulePerspectiveBPMN | this_PerspectiveGrid_9= rulePerspectiveGrid | this_PerspectiveWelcome_10= rulePerspectiveWelcome | this_PerspectiveSearch_11= rulePerspectiveSearch | this_PerspectiveDataInterchange_12= rulePerspectiveDataInterchange | this_PerspectiveKanban_13= rulePerspectiveKanban ) ;
     public final EObject rulePerspectiveView() throws RecognitionException {
         EObject current = null;
 
@@ -3272,34 +3078,45 @@
 
         EObject this_PerspectiveChart_2 = null;
 
-        EObject this_PerspectiveReport_3 = null;
+        EObject this_PerspectiveBean_3 = null;
 
-        EObject this_PerspectiveOrganization_4 = null;
+        EObject this_PerspectiveReport_4 = null;
 
-        EObject this_PerspectiveTopology_5 = null;
+        EObject this_PerspectiveOrganization_5 = null;
 
-        EObject this_PerspectiveDialog_6 = null;
+        EObject this_PerspectiveTopology_6 = null;
 
-        EObject this_PerspectiveBPMN_7 = null;
+        EObject this_PerspectiveDialog_7 = null;
 
-        EObject this_PerspectiveGrid_8 = null;
+        EObject this_PerspectiveBPMN_8 = null;
+
+        EObject this_PerspectiveGrid_9 = null;
+
+        EObject this_PerspectiveWelcome_10 = null;
+
+        EObject this_PerspectiveSearch_11 = null;
+
+        EObject this_PerspectiveDataInterchange_12 = null;
+
+        EObject this_PerspectiveKanban_13 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1243:28: ( (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveBPMN_7= rulePerspectiveBPMN | this_PerspectiveGrid_8= rulePerspectiveGrid ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1244:1: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveBPMN_7= rulePerspectiveBPMN | this_PerspectiveGrid_8= rulePerspectiveGrid )
+            // InternalPerspectiveDsl.g:1145:2: ( (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveBean_3= rulePerspectiveBean | this_PerspectiveReport_4= rulePerspectiveReport | this_PerspectiveOrganization_5= rulePerspectiveOrganization | this_PerspectiveTopology_6= rulePerspectiveTopology | this_PerspectiveDialog_7= rulePerspectiveDialog | this_PerspectiveBPMN_8= rulePerspectiveBPMN | this_PerspectiveGrid_9= rulePerspectiveGrid | this_PerspectiveWelcome_10= rulePerspectiveWelcome | this_PerspectiveSearch_11= rulePerspectiveSearch | this_PerspectiveDataInterchange_12= rulePerspectiveDataInterchange | this_PerspectiveKanban_13= rulePerspectiveKanban ) )
+            // InternalPerspectiveDsl.g:1146:2: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveBean_3= rulePerspectiveBean | this_PerspectiveReport_4= rulePerspectiveReport | this_PerspectiveOrganization_5= rulePerspectiveOrganization | this_PerspectiveTopology_6= rulePerspectiveTopology | this_PerspectiveDialog_7= rulePerspectiveDialog | this_PerspectiveBPMN_8= rulePerspectiveBPMN | this_PerspectiveGrid_9= rulePerspectiveGrid | this_PerspectiveWelcome_10= rulePerspectiveWelcome | this_PerspectiveSearch_11= rulePerspectiveSearch | this_PerspectiveDataInterchange_12= rulePerspectiveDataInterchange | this_PerspectiveKanban_13= rulePerspectiveKanban )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1244:1: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveBPMN_7= rulePerspectiveBPMN | this_PerspectiveGrid_8= rulePerspectiveGrid )
-            int alt15=9;
+            // InternalPerspectiveDsl.g:1146:2: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveBean_3= rulePerspectiveBean | this_PerspectiveReport_4= rulePerspectiveReport | this_PerspectiveOrganization_5= rulePerspectiveOrganization | this_PerspectiveTopology_6= rulePerspectiveTopology | this_PerspectiveDialog_7= rulePerspectiveDialog | this_PerspectiveBPMN_8= rulePerspectiveBPMN | this_PerspectiveGrid_9= rulePerspectiveGrid | this_PerspectiveWelcome_10= rulePerspectiveWelcome | this_PerspectiveSearch_11= rulePerspectiveSearch | this_PerspectiveDataInterchange_12= rulePerspectiveDataInterchange | this_PerspectiveKanban_13= rulePerspectiveKanban )
+            int alt15=14;
             switch ( input.LA(1) ) {
-            case 32:
+            case 31:
                 {
                 alt15=1;
                 }
                 break;
-            case 33:
+            case 32:
                 {
                 alt15=2;
                 }
@@ -3309,36 +3126,61 @@
                 alt15=3;
                 }
                 break;
-            case 36:
+            case 34:
                 {
                 alt15=4;
                 }
                 break;
-            case 37:
+            case 36:
                 {
                 alt15=5;
                 }
                 break;
-            case 38:
+            case 37:
                 {
                 alt15=6;
                 }
                 break;
-            case 39:
+            case 38:
                 {
                 alt15=7;
                 }
                 break;
-            case 40:
+            case 39:
                 {
                 alt15=8;
                 }
                 break;
-            case 34:
+            case 40:
                 {
                 alt15=9;
                 }
                 break;
+            case 33:
+                {
+                alt15=10;
+                }
+                break;
+            case 44:
+                {
+                alt15=11;
+                }
+                break;
+            case 45:
+                {
+                alt15=12;
+                }
+                break;
+            case 49:
+                {
+                alt15=13;
+                }
+                break;
+            case 41:
+                {
+                alt15=14;
+                }
+                break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
@@ -3349,199 +3191,309 @@
 
             switch (alt15) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1245:5: this_PerspectiveSelection_0= rulePerspectiveSelection
+                    // InternalPerspectiveDsl.g:1147:3: this_PerspectiveSelection_0= rulePerspectiveSelection
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveSelection_in_rulePerspectiveView2940);
+                    pushFollow(FOLLOW_2);
                     this_PerspectiveSelection_0=rulePerspectiveSelection();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveSelection_0; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveSelection_0;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1255:5: this_PerspectiveTable_1= rulePerspectiveTable
+                    // InternalPerspectiveDsl.g:1156:3: this_PerspectiveTable_1= rulePerspectiveTable
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveTable_in_rulePerspectiveView2967);
+                    pushFollow(FOLLOW_2);
                     this_PerspectiveTable_1=rulePerspectiveTable();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveTable_1; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveTable_1;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1265:5: this_PerspectiveChart_2= rulePerspectiveChart
+                    // InternalPerspectiveDsl.g:1165:3: this_PerspectiveChart_2= rulePerspectiveChart
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveChart_in_rulePerspectiveView2994);
+                    pushFollow(FOLLOW_2);
                     this_PerspectiveChart_2=rulePerspectiveChart();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveChart_2; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveChart_2;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1275:5: this_PerspectiveReport_3= rulePerspectiveReport
+                    // InternalPerspectiveDsl.g:1174:3: this_PerspectiveBean_3= rulePerspectiveBean
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_3()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBeanParserRuleCall_3());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveReport_in_rulePerspectiveView3021);
-                    this_PerspectiveReport_3=rulePerspectiveReport();
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveBean_3=rulePerspectiveBean();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveReport_3; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveBean_3;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 5 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1285:5: this_PerspectiveOrganization_4= rulePerspectiveOrganization
+                    // InternalPerspectiveDsl.g:1183:3: this_PerspectiveReport_4= rulePerspectiveReport
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_4()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_4());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveOrganization_in_rulePerspectiveView3048);
-                    this_PerspectiveOrganization_4=rulePerspectiveOrganization();
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveReport_4=rulePerspectiveReport();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveOrganization_4; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveReport_4;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1295:5: this_PerspectiveTopology_5= rulePerspectiveTopology
+                    // InternalPerspectiveDsl.g:1192:3: this_PerspectiveOrganization_5= rulePerspectiveOrganization
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_5()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_5());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveTopology_in_rulePerspectiveView3075);
-                    this_PerspectiveTopology_5=rulePerspectiveTopology();
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveOrganization_5=rulePerspectiveOrganization();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveTopology_5; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveOrganization_5;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1305:5: this_PerspectiveDialog_6= rulePerspectiveDialog
+                    // InternalPerspectiveDsl.g:1201:3: this_PerspectiveTopology_6= rulePerspectiveTopology
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_6()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_6());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveDialog_in_rulePerspectiveView3102);
-                    this_PerspectiveDialog_6=rulePerspectiveDialog();
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveTopology_6=rulePerspectiveTopology();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveDialog_6; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveTopology_6;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 8 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1315:5: this_PerspectiveBPMN_7= rulePerspectiveBPMN
+                    // InternalPerspectiveDsl.g:1210:3: this_PerspectiveDialog_7= rulePerspectiveDialog
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_7()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_7());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveBPMN_in_rulePerspectiveView3129);
-                    this_PerspectiveBPMN_7=rulePerspectiveBPMN();
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveDialog_7=rulePerspectiveDialog();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveBPMN_7; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveDialog_7;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 9 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1325:5: this_PerspectiveGrid_8= rulePerspectiveGrid
+                    // InternalPerspectiveDsl.g:1219:3: this_PerspectiveBPMN_8= rulePerspectiveBPMN
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_8()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_8());
+                      		
                     }
-                    pushFollow(FOLLOW_rulePerspectiveGrid_in_rulePerspectiveView3156);
-                    this_PerspectiveGrid_8=rulePerspectiveGrid();
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveBPMN_8=rulePerspectiveBPMN();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_PerspectiveGrid_8; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_PerspectiveBPMN_8;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 10 :
+                    // InternalPerspectiveDsl.g:1228:3: this_PerspectiveGrid_9= rulePerspectiveGrid
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_9());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveGrid_9=rulePerspectiveGrid();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_PerspectiveGrid_9;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 11 :
+                    // InternalPerspectiveDsl.g:1237:3: this_PerspectiveWelcome_10= rulePerspectiveWelcome
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_10());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveWelcome_10=rulePerspectiveWelcome();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_PerspectiveWelcome_10;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 12 :
+                    // InternalPerspectiveDsl.g:1246:3: this_PerspectiveSearch_11= rulePerspectiveSearch
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_11());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveSearch_11=rulePerspectiveSearch();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_PerspectiveSearch_11;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 13 :
+                    // InternalPerspectiveDsl.g:1255:3: this_PerspectiveDataInterchange_12= rulePerspectiveDataInterchange
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_12());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveDataInterchange_12=rulePerspectiveDataInterchange();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_PerspectiveDataInterchange_12;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 14 :
+                    // InternalPerspectiveDsl.g:1264:3: this_PerspectiveKanban_13= rulePerspectiveKanban
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPerspectiveViewAccess().getPerspectiveKanbanParserRuleCall_13());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_PerspectiveKanban_13=rulePerspectiveKanban();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_PerspectiveKanban_13;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
@@ -3553,14 +3505,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3569,7 +3523,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveSelection"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1341:1: entryRulePerspectiveSelection returns [EObject current=null] : iv_rulePerspectiveSelection= rulePerspectiveSelection EOF ;
+    // InternalPerspectiveDsl.g:1276:1: entryRulePerspectiveSelection returns [EObject current=null] : iv_rulePerspectiveSelection= rulePerspectiveSelection EOF ;
     public final EObject entryRulePerspectiveSelection() throws RecognitionException {
         EObject current = null;
 
@@ -3577,13 +3531,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1342:2: (iv_rulePerspectiveSelection= rulePerspectiveSelection EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1343:2: iv_rulePerspectiveSelection= rulePerspectiveSelection EOF
+            // InternalPerspectiveDsl.g:1276:61: (iv_rulePerspectiveSelection= rulePerspectiveSelection EOF )
+            // InternalPerspectiveDsl.g:1277:2: iv_rulePerspectiveSelection= rulePerspectiveSelection EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveSelectionRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveSelection_in_entryRulePerspectiveSelection3191);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveSelection=rulePerspectiveSelection();
 
             state._fsp--;
@@ -3591,16 +3545,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveSelection; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveSelection3201); 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;
@@ -3609,59 +3563,60 @@
 
 
     // $ANTLR start "rulePerspectiveSelection"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1350:1: rulePerspectiveSelection returns [EObject current=null] : ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1283:1: rulePerspectiveSelection returns [EObject current=null] : ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveSelection() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token otherlv_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1353:28: ( ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1354:1: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1289:2: ( ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1290:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1354:1: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1354:2: () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1290:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1291:3: () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1354:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1355:5: 
+            // InternalPerspectiveDsl.g:1291:3: ()
+            // InternalPerspectiveDsl.g:1292:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,32,FOLLOW_32_in_rulePerspectiveSelection3247); if (state.failed) return current;
+            otherlv_1=(Token)match(input,31,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1364:1: ( (otherlv_2= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1365:1: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1302:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1303:4: (otherlv_2= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1365:1: (otherlv_2= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1366:3: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1303:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1304:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectiveSelectionRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveSelectionRule());
+              					}
+              				
             }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveSelection3267); if (state.failed) return current;
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_2, grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0()); 
-              	
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0());
+              				
             }
 
             }
@@ -3676,14 +3631,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3692,7 +3649,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveTable"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1385:1: entryRulePerspectiveTable returns [EObject current=null] : iv_rulePerspectiveTable= rulePerspectiveTable EOF ;
+    // InternalPerspectiveDsl.g:1319:1: entryRulePerspectiveTable returns [EObject current=null] : iv_rulePerspectiveTable= rulePerspectiveTable EOF ;
     public final EObject entryRulePerspectiveTable() throws RecognitionException {
         EObject current = null;
 
@@ -3700,13 +3657,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1386:2: (iv_rulePerspectiveTable= rulePerspectiveTable EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1387:2: iv_rulePerspectiveTable= rulePerspectiveTable EOF
+            // InternalPerspectiveDsl.g:1319:57: (iv_rulePerspectiveTable= rulePerspectiveTable EOF )
+            // InternalPerspectiveDsl.g:1320:2: iv_rulePerspectiveTable= rulePerspectiveTable EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveTableRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveTable_in_entryRulePerspectiveTable3303);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveTable=rulePerspectiveTable();
 
             state._fsp--;
@@ -3714,16 +3671,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveTable; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveTable3313); 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;
@@ -3732,59 +3689,60 @@
 
 
     // $ANTLR start "rulePerspectiveTable"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1394:1: rulePerspectiveTable returns [EObject current=null] : ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1326:1: rulePerspectiveTable returns [EObject current=null] : ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveTable() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token otherlv_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1397:28: ( ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1398:1: ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1332:2: ( ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1333:2: ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1398:1: ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1398:2: () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1333:2: ( () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1334:3: () otherlv_1= 'table' ( (otherlv_2= RULE_ID ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1398:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1399:5: 
+            // InternalPerspectiveDsl.g:1334:3: ()
+            // InternalPerspectiveDsl.g:1335:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,33,FOLLOW_33_in_rulePerspectiveTable3359); if (state.failed) return current;
+            otherlv_1=(Token)match(input,32,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveTableAccess().getTableKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTableAccess().getTableKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1408:1: ( (otherlv_2= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1409:1: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1345:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1346:4: (otherlv_2= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1409:1: (otherlv_2= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1410:3: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1346:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1347:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectiveTableRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveTableRule());
+              					}
+              				
             }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveTable3379); if (state.failed) return current;
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_2, grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0()); 
-              	
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0());
+              				
             }
 
             }
@@ -3799,14 +3757,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3815,7 +3775,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveGrid"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1429:1: entryRulePerspectiveGrid returns [EObject current=null] : iv_rulePerspectiveGrid= rulePerspectiveGrid EOF ;
+    // InternalPerspectiveDsl.g:1362:1: entryRulePerspectiveGrid returns [EObject current=null] : iv_rulePerspectiveGrid= rulePerspectiveGrid EOF ;
     public final EObject entryRulePerspectiveGrid() throws RecognitionException {
         EObject current = null;
 
@@ -3823,13 +3783,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1430:2: (iv_rulePerspectiveGrid= rulePerspectiveGrid EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1431:2: iv_rulePerspectiveGrid= rulePerspectiveGrid EOF
+            // InternalPerspectiveDsl.g:1362:56: (iv_rulePerspectiveGrid= rulePerspectiveGrid EOF )
+            // InternalPerspectiveDsl.g:1363:2: iv_rulePerspectiveGrid= rulePerspectiveGrid EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveGridRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveGrid_in_entryRulePerspectiveGrid3415);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveGrid=rulePerspectiveGrid();
 
             state._fsp--;
@@ -3837,16 +3797,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveGrid; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveGrid3425); 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;
@@ -3855,59 +3815,60 @@
 
 
     // $ANTLR start "rulePerspectiveGrid"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1438:1: rulePerspectiveGrid returns [EObject current=null] : ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1369:1: rulePerspectiveGrid returns [EObject current=null] : ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveGrid() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token otherlv_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1441:28: ( ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1442:1: ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1375:2: ( ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1376:2: ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1442:1: ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1442:2: () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1376:2: ( () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1377:3: () otherlv_1= 'grid' ( (otherlv_2= RULE_ID ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1442:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1443:5: 
+            // InternalPerspectiveDsl.g:1377:3: ()
+            // InternalPerspectiveDsl.g:1378:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,34,FOLLOW_34_in_rulePerspectiveGrid3471); if (state.failed) return current;
+            otherlv_1=(Token)match(input,33,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveGridAccess().getGridKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveGridAccess().getGridKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1452:1: ( (otherlv_2= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1453:1: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1388:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1389:4: (otherlv_2= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1453:1: (otherlv_2= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1454:3: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1389:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1390:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectiveGridRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveGridRule());
+              					}
+              				
             }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveGrid3491); if (state.failed) return current;
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_2, grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0()); 
-              	
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0());
+              				
             }
 
             }
@@ -3922,14 +3883,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3937,8 +3900,134 @@
     // $ANTLR end "rulePerspectiveGrid"
 
 
+    // $ANTLR start "entryRulePerspectiveBean"
+    // InternalPerspectiveDsl.g:1405:1: entryRulePerspectiveBean returns [EObject current=null] : iv_rulePerspectiveBean= rulePerspectiveBean EOF ;
+    public final EObject entryRulePerspectiveBean() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePerspectiveBean = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:1405:56: (iv_rulePerspectiveBean= rulePerspectiveBean EOF )
+            // InternalPerspectiveDsl.g:1406:2: iv_rulePerspectiveBean= rulePerspectiveBean EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getPerspectiveBeanRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_rulePerspectiveBean=rulePerspectiveBean();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_rulePerspectiveBean; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePerspectiveBean"
+
+
+    // $ANTLR start "rulePerspectiveBean"
+    // InternalPerspectiveDsl.g:1412:1: rulePerspectiveBean returns [EObject current=null] : ( () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) ) ) ;
+    public final EObject rulePerspectiveBean() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:1418:2: ( ( () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1419:2: ( () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) ) )
+            {
+            // InternalPerspectiveDsl.g:1419:2: ( () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1420:3: () otherlv_1= 'bean' ( (otherlv_2= RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:1420:3: ()
+            // InternalPerspectiveDsl.g:1421:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveBeanAccess().getPerspectiveBeanAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,34,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBeanAccess().getBeanKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:1431:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1432:4: (otherlv_2= RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:1432:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1433:5: otherlv_2= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveBeanRule());
+              					}
+              				
+            }
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveBeanAccess().getRefTableCrossReference_2_0());
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePerspectiveBean"
+
+
     // $ANTLR start "entryRulePerspectiveChart"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1473:1: entryRulePerspectiveChart returns [EObject current=null] : iv_rulePerspectiveChart= rulePerspectiveChart EOF ;
+    // InternalPerspectiveDsl.g:1448:1: entryRulePerspectiveChart returns [EObject current=null] : iv_rulePerspectiveChart= rulePerspectiveChart EOF ;
     public final EObject entryRulePerspectiveChart() throws RecognitionException {
         EObject current = null;
 
@@ -3946,13 +4035,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1474:2: (iv_rulePerspectiveChart= rulePerspectiveChart EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1475:2: iv_rulePerspectiveChart= rulePerspectiveChart EOF
+            // InternalPerspectiveDsl.g:1448:57: (iv_rulePerspectiveChart= rulePerspectiveChart EOF )
+            // InternalPerspectiveDsl.g:1449:2: iv_rulePerspectiveChart= rulePerspectiveChart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveChartRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveChart_in_entryRulePerspectiveChart3527);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveChart=rulePerspectiveChart();
 
             state._fsp--;
@@ -3960,16 +4049,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveChart; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveChart3537); 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;
@@ -3978,59 +4067,60 @@
 
 
     // $ANTLR start "rulePerspectiveChart"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1482:1: rulePerspectiveChart returns [EObject current=null] : ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1455:1: rulePerspectiveChart returns [EObject current=null] : ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveChart() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token otherlv_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1485:28: ( ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1486:1: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1461:2: ( ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1462:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1486:1: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1486:2: () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1462:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1463:3: () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1486:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1487:5: 
+            // InternalPerspectiveDsl.g:1463:3: ()
+            // InternalPerspectiveDsl.g:1464:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,35,FOLLOW_35_in_rulePerspectiveChart3583); if (state.failed) return current;
+            otherlv_1=(Token)match(input,35,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveChartAccess().getChartKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveChartAccess().getChartKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1496:1: ( (otherlv_2= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1497:1: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1474:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1475:4: (otherlv_2= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1497:1: (otherlv_2= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1498:3: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1475:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1476:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectiveChartRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveChartRule());
+              					}
+              				
             }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveChart3603); if (state.failed) return current;
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_2, grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0()); 
-              	
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0());
+              				
             }
 
             }
@@ -4045,14 +4135,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4061,7 +4153,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveReport"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1517:1: entryRulePerspectiveReport returns [EObject current=null] : iv_rulePerspectiveReport= rulePerspectiveReport EOF ;
+    // InternalPerspectiveDsl.g:1491:1: entryRulePerspectiveReport returns [EObject current=null] : iv_rulePerspectiveReport= rulePerspectiveReport EOF ;
     public final EObject entryRulePerspectiveReport() throws RecognitionException {
         EObject current = null;
 
@@ -4069,13 +4161,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1518:2: (iv_rulePerspectiveReport= rulePerspectiveReport EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1519:2: iv_rulePerspectiveReport= rulePerspectiveReport EOF
+            // InternalPerspectiveDsl.g:1491:58: (iv_rulePerspectiveReport= rulePerspectiveReport EOF )
+            // InternalPerspectiveDsl.g:1492:2: iv_rulePerspectiveReport= rulePerspectiveReport EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveReportRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveReport_in_entryRulePerspectiveReport3639);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveReport=rulePerspectiveReport();
 
             state._fsp--;
@@ -4083,16 +4175,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveReport; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveReport3649); 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;
@@ -4101,59 +4193,60 @@
 
 
     // $ANTLR start "rulePerspectiveReport"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1526:1: rulePerspectiveReport returns [EObject current=null] : ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1498:1: rulePerspectiveReport returns [EObject current=null] : ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveReport() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token otherlv_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1529:28: ( ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1530:1: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1504:2: ( ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1505:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1530:1: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1530:2: () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1505:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1506:3: () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1530:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1531:5: 
+            // InternalPerspectiveDsl.g:1506:3: ()
+            // InternalPerspectiveDsl.g:1507:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,36,FOLLOW_36_in_rulePerspectiveReport3695); if (state.failed) return current;
+            otherlv_1=(Token)match(input,36,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveReportAccess().getReportKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveReportAccess().getReportKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1540:1: ( (otherlv_2= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1541:1: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1517:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1518:4: (otherlv_2= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1541:1: (otherlv_2= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1542:3: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1518:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1519:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectiveReportRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveReportRule());
+              					}
+              				
             }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveReport3715); if (state.failed) return current;
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_2, grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0()); 
-              	
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0());
+              				
             }
 
             }
@@ -4168,14 +4261,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4184,7 +4279,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveOrganization"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1561:1: entryRulePerspectiveOrganization returns [EObject current=null] : iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF ;
+    // InternalPerspectiveDsl.g:1534:1: entryRulePerspectiveOrganization returns [EObject current=null] : iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF ;
     public final EObject entryRulePerspectiveOrganization() throws RecognitionException {
         EObject current = null;
 
@@ -4192,13 +4287,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1562:2: (iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1563:2: iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF
+            // InternalPerspectiveDsl.g:1534:64: (iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF )
+            // InternalPerspectiveDsl.g:1535:2: iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveOrganizationRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveOrganization_in_entryRulePerspectiveOrganization3751);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveOrganization=rulePerspectiveOrganization();
 
             state._fsp--;
@@ -4206,16 +4301,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveOrganization; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveOrganization3761); 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;
@@ -4224,59 +4319,60 @@
 
 
     // $ANTLR start "rulePerspectiveOrganization"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1570:1: rulePerspectiveOrganization returns [EObject current=null] : ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1541:1: rulePerspectiveOrganization returns [EObject current=null] : ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveOrganization() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token otherlv_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1573:28: ( ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1574:1: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1547:2: ( ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1548:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1574:1: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1574:2: () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1548:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1549:3: () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1574:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1575:5: 
+            // InternalPerspectiveDsl.g:1549:3: ()
+            // InternalPerspectiveDsl.g:1550:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,37,FOLLOW_37_in_rulePerspectiveOrganization3807); if (state.failed) return current;
+            otherlv_1=(Token)match(input,37,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1584:1: ( (otherlv_2= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1585:1: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1560:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1561:4: (otherlv_2= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1585:1: (otherlv_2= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1586:3: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1561:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1562:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectiveOrganizationRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveOrganizationRule());
+              					}
+              				
             }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveOrganization3827); if (state.failed) return current;
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_2, grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0()); 
-              	
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0());
+              				
             }
 
             }
@@ -4291,14 +4387,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4307,7 +4405,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveTopology"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1605:1: entryRulePerspectiveTopology returns [EObject current=null] : iv_rulePerspectiveTopology= rulePerspectiveTopology EOF ;
+    // InternalPerspectiveDsl.g:1577:1: entryRulePerspectiveTopology returns [EObject current=null] : iv_rulePerspectiveTopology= rulePerspectiveTopology EOF ;
     public final EObject entryRulePerspectiveTopology() throws RecognitionException {
         EObject current = null;
 
@@ -4315,13 +4413,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1606:2: (iv_rulePerspectiveTopology= rulePerspectiveTopology EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1607:2: iv_rulePerspectiveTopology= rulePerspectiveTopology EOF
+            // InternalPerspectiveDsl.g:1577:60: (iv_rulePerspectiveTopology= rulePerspectiveTopology EOF )
+            // InternalPerspectiveDsl.g:1578:2: iv_rulePerspectiveTopology= rulePerspectiveTopology EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveTopologyRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveTopology_in_entryRulePerspectiveTopology3863);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveTopology=rulePerspectiveTopology();
 
             state._fsp--;
@@ -4329,16 +4427,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveTopology; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveTopology3873); 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;
@@ -4347,59 +4445,60 @@
 
 
     // $ANTLR start "rulePerspectiveTopology"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1614:1: rulePerspectiveTopology returns [EObject current=null] : ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1584:1: rulePerspectiveTopology returns [EObject current=null] : ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveTopology() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token otherlv_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1617:28: ( ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1618:1: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1590:2: ( ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1591:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1618:1: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1618:2: () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1591:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1592:3: () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1618:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1619:5: 
+            // InternalPerspectiveDsl.g:1592:3: ()
+            // InternalPerspectiveDsl.g:1593:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,38,FOLLOW_38_in_rulePerspectiveTopology3919); if (state.failed) return current;
+            otherlv_1=(Token)match(input,38,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1628:1: ( (otherlv_2= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1629:1: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1603:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1604:4: (otherlv_2= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1629:1: (otherlv_2= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1630:3: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1604:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1605:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectiveTopologyRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveTopologyRule());
+              					}
+              				
             }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveTopology3939); if (state.failed) return current;
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_2, grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0()); 
-              	
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0());
+              				
             }
 
             }
@@ -4414,14 +4513,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4430,7 +4531,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveDialog"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1649:1: entryRulePerspectiveDialog returns [EObject current=null] : iv_rulePerspectiveDialog= rulePerspectiveDialog EOF ;
+    // InternalPerspectiveDsl.g:1620:1: entryRulePerspectiveDialog returns [EObject current=null] : iv_rulePerspectiveDialog= rulePerspectiveDialog EOF ;
     public final EObject entryRulePerspectiveDialog() throws RecognitionException {
         EObject current = null;
 
@@ -4438,13 +4539,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1650:2: (iv_rulePerspectiveDialog= rulePerspectiveDialog EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1651:2: iv_rulePerspectiveDialog= rulePerspectiveDialog EOF
+            // InternalPerspectiveDsl.g:1620:58: (iv_rulePerspectiveDialog= rulePerspectiveDialog EOF )
+            // InternalPerspectiveDsl.g:1621:2: iv_rulePerspectiveDialog= rulePerspectiveDialog EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveDialogRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveDialog_in_entryRulePerspectiveDialog3975);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveDialog=rulePerspectiveDialog();
 
             state._fsp--;
@@ -4452,16 +4553,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveDialog; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveDialog3985); 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;
@@ -4470,59 +4571,60 @@
 
 
     // $ANTLR start "rulePerspectiveDialog"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1658:1: rulePerspectiveDialog returns [EObject current=null] : ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1627:1: rulePerspectiveDialog returns [EObject current=null] : ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveDialog() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token otherlv_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1661:28: ( ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1662:1: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1633:2: ( ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1634:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1662:1: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1662:2: () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1634:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1635:3: () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1662:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1663:5: 
+            // InternalPerspectiveDsl.g:1635:3: ()
+            // InternalPerspectiveDsl.g:1636:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,39,FOLLOW_39_in_rulePerspectiveDialog4031); if (state.failed) return current;
+            otherlv_1=(Token)match(input,39,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1672:1: ( (otherlv_2= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1673:1: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1646:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1647:4: (otherlv_2= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1673:1: (otherlv_2= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1674:3: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1647:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1648:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getPerspectiveDialogRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveDialogRule());
+              					}
+              				
             }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePerspectiveDialog4051); if (state.failed) return current;
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_2, grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0()); 
-              	
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0());
+              				
             }
 
             }
@@ -4537,14 +4639,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4553,7 +4657,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveBPMN"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1693:1: entryRulePerspectiveBPMN returns [EObject current=null] : iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF ;
+    // InternalPerspectiveDsl.g:1663:1: entryRulePerspectiveBPMN returns [EObject current=null] : iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF ;
     public final EObject entryRulePerspectiveBPMN() throws RecognitionException {
         EObject current = null;
 
@@ -4561,13 +4665,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1694:2: (iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1695:2: iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF
+            // InternalPerspectiveDsl.g:1663:56: (iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF )
+            // InternalPerspectiveDsl.g:1664:2: iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveBPMNRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveBPMN_in_entryRulePerspectiveBPMN4087);
+            pushFollow(FOLLOW_1);
             iv_rulePerspectiveBPMN=rulePerspectiveBPMN();
 
             state._fsp--;
@@ -4575,16 +4679,16 @@
             if ( state.backtracking==0 ) {
                current =iv_rulePerspectiveBPMN; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveBPMN4097); 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;
@@ -4593,39 +4697,40 @@
 
 
     // $ANTLR start "rulePerspectiveBPMN"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1702:1: rulePerspectiveBPMN returns [EObject current=null] : ( () otherlv_1= 'bpmn' ) ;
+    // InternalPerspectiveDsl.g:1670:1: rulePerspectiveBPMN returns [EObject current=null] : ( () otherlv_1= 'bpmn' ) ;
     public final EObject rulePerspectiveBPMN() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1705:28: ( ( () otherlv_1= 'bpmn' ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1706:1: ( () otherlv_1= 'bpmn' )
+            // InternalPerspectiveDsl.g:1676:2: ( ( () otherlv_1= 'bpmn' ) )
+            // InternalPerspectiveDsl.g:1677:2: ( () otherlv_1= 'bpmn' )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1706:1: ( () otherlv_1= 'bpmn' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1706:2: () otherlv_1= 'bpmn'
+            // InternalPerspectiveDsl.g:1677:2: ( () otherlv_1= 'bpmn' )
+            // InternalPerspectiveDsl.g:1678:3: () otherlv_1= 'bpmn'
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1706:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1707:5: 
+            // InternalPerspectiveDsl.g:1678:3: ()
+            // InternalPerspectiveDsl.g:1679:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,40,FOLLOW_40_in_rulePerspectiveBPMN4143); if (state.failed) return current;
+            otherlv_1=(Token)match(input,40,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1());
+              		
             }
 
             }
@@ -4634,14 +4739,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4649,112 +4756,178 @@
     // $ANTLR end "rulePerspectiveBPMN"
 
 
-    // $ANTLR start "entryRulePerspectiveQualifiedNameWithWildCard"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1724:1: entryRulePerspectiveQualifiedNameWithWildCard returns [String current=null] : iv_rulePerspectiveQualifiedNameWithWildCard= rulePerspectiveQualifiedNameWithWildCard EOF ;
-    public final String entryRulePerspectiveQualifiedNameWithWildCard() throws RecognitionException {
-        String current = null;
+    // $ANTLR start "entryRulePerspectiveKanban"
+    // InternalPerspectiveDsl.g:1693:1: entryRulePerspectiveKanban returns [EObject current=null] : iv_rulePerspectiveKanban= rulePerspectiveKanban EOF ;
+    public final EObject entryRulePerspectiveKanban() throws RecognitionException {
+        EObject current = null;
 
-        AntlrDatatypeRuleToken iv_rulePerspectiveQualifiedNameWithWildCard = null;
+        EObject iv_rulePerspectiveKanban = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1725:2: (iv_rulePerspectiveQualifiedNameWithWildCard= rulePerspectiveQualifiedNameWithWildCard EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1726:2: iv_rulePerspectiveQualifiedNameWithWildCard= rulePerspectiveQualifiedNameWithWildCard EOF
+            // InternalPerspectiveDsl.g:1693:58: (iv_rulePerspectiveKanban= rulePerspectiveKanban EOF )
+            // InternalPerspectiveDsl.g:1694:2: iv_rulePerspectiveKanban= rulePerspectiveKanban EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getPerspectiveQualifiedNameWithWildCardRule()); 
+               newCompositeNode(grammarAccess.getPerspectiveKanbanRule()); 
             }
-            pushFollow(FOLLOW_rulePerspectiveQualifiedNameWithWildCard_in_entryRulePerspectiveQualifiedNameWithWildCard4180);
-            iv_rulePerspectiveQualifiedNameWithWildCard=rulePerspectiveQualifiedNameWithWildCard();
+            pushFollow(FOLLOW_1);
+            iv_rulePerspectiveKanban=rulePerspectiveKanban();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_rulePerspectiveQualifiedNameWithWildCard.getText(); 
+               current =iv_rulePerspectiveKanban; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRulePerspectiveQualifiedNameWithWildCard4191); 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 "entryRulePerspectiveQualifiedNameWithWildCard"
+    // $ANTLR end "entryRulePerspectiveKanban"
 
 
-    // $ANTLR start "rulePerspectiveQualifiedNameWithWildCard"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1733:1: rulePerspectiveQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) ;
-    public final AntlrDatatypeRuleToken rulePerspectiveQualifiedNameWithWildCard() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+    // $ANTLR start "rulePerspectiveKanban"
+    // InternalPerspectiveDsl.g:1700:1: rulePerspectiveKanban returns [EObject current=null] : ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) ) ;
+    public final EObject rulePerspectiveKanban() throws RecognitionException {
+        EObject current = null;
 
-        Token kw=null;
-        AntlrDatatypeRuleToken this_QualifiedName_0 = null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
 
 
-         enterRule(); 
-            
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1736:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1737:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
+            // InternalPerspectiveDsl.g:1706:2: ( ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1707:2: ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1737:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1738:5: this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )?
+            // InternalPerspectiveDsl.g:1707:2: ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1708:3: () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:1708:3: ()
+            // InternalPerspectiveDsl.g:1709:4: 
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getPerspectiveQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleQualifiedName_in_rulePerspectiveQualifiedNameWithWildCard4238);
-            this_QualifiedName_0=ruleQualifiedName();
 
-            state._fsp--;
-            if (state.failed) return current;
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveKanbanAccess().getPerspectiveKanbanAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,41,FOLLOW_18); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		current.merge(this_QualifiedName_0);
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1());
+              		
             }
+            otherlv_2=(Token)match(input,42,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      afterParserOrEnumRuleCall();
-                  
+
+              			newLeafNode(otherlv_2, grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2());
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1748:1: (kw= '.' kw= '*' )?
-            int alt16=2;
-            int LA16_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:1723:3: ( (otherlv_3= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1724:4: (otherlv_3= RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:1724:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:1725:5: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
 
-            if ( (LA16_0==41) ) {
-                alt16=1;
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveKanbanRule());
+              					}
+              				
             }
-            switch (alt16) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1749:2: kw= '.' kw= '*'
-                    {
-                    kw=(Token)match(input,41,FOLLOW_41_in_rulePerspectiveQualifiedNameWithWildCard4257); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_19); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getPerspectiveQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
-                          
-                    }
-                    kw=(Token)match(input,42,FOLLOW_42_in_rulePerspectiveQualifiedNameWithWildCard4270); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
+              					newLeafNode(otherlv_3, grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoCrossReference_3_0());
+              				
+            }
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getPerspectiveQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
-                          
-                    }
+            }
 
-                    }
-                    break;
+
+            }
+
+            otherlv_4=(Token)match(input,43,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4());
+              		
+            }
+            // InternalPerspectiveDsl.g:1740:3: ( (otherlv_5= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1741:4: (otherlv_5= RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:1741:4: (otherlv_5= RULE_ID )
+            // InternalPerspectiveDsl.g:1742:5: otherlv_5= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveKanbanRule());
+              					}
+              				
+            }
+            otherlv_5=(Token)match(input,RULE_ID,FOLLOW_20); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_5, grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogCrossReference_5_0());
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,39,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6());
+              		
+            }
+            // InternalPerspectiveDsl.g:1757:3: ( (otherlv_7= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1758:4: (otherlv_7= RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:1758:4: (otherlv_7= RULE_ID )
+            // InternalPerspectiveDsl.g:1759:5: otherlv_7= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveKanbanRule());
+              					}
+              				
+            }
+            otherlv_7=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_7, grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogCrossReference_7_0());
+              				
+            }
+
+            }
+
 
             }
 
@@ -4765,167 +4938,416 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "rulePerspectiveQualifiedNameWithWildCard"
+    // $ANTLR end "rulePerspectiveKanban"
 
 
-    // $ANTLR start "entryRuleQualifiedName"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1768:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
-    public final String entryRuleQualifiedName() throws RecognitionException {
-        String current = null;
+    // $ANTLR start "entryRulePerspectiveWelcome"
+    // InternalPerspectiveDsl.g:1774:1: entryRulePerspectiveWelcome returns [EObject current=null] : iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF ;
+    public final EObject entryRulePerspectiveWelcome() throws RecognitionException {
+        EObject current = null;
 
-        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;
+        EObject iv_rulePerspectiveWelcome = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1769:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1770:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+            // InternalPerspectiveDsl.g:1774:59: (iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF )
+            // InternalPerspectiveDsl.g:1775:2: iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
+               newCompositeNode(grammarAccess.getPerspectiveWelcomeRule()); 
             }
-            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName4313);
-            iv_ruleQualifiedName=ruleQualifiedName();
+            pushFollow(FOLLOW_1);
+            iv_rulePerspectiveWelcome=rulePerspectiveWelcome();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleQualifiedName.getText(); 
+               current =iv_rulePerspectiveWelcome; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName4324); 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 "entryRuleQualifiedName"
+    // $ANTLR end "entryRulePerspectiveWelcome"
 
 
-    // $ANTLR start "ruleQualifiedName"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1777: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();
+    // $ANTLR start "rulePerspectiveWelcome"
+    // InternalPerspectiveDsl.g:1781:1: rulePerspectiveWelcome returns [EObject current=null] : ( () otherlv_1= 'welcome' ) ;
+    public final EObject rulePerspectiveWelcome() throws RecognitionException {
+        EObject current = null;
 
-        Token kw=null;
-        AntlrDatatypeRuleToken this_ValidID_0 = null;
-
-        AntlrDatatypeRuleToken this_ValidID_2 = null;
+        Token otherlv_1=null;
 
 
-         enterRule(); 
-            
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1780:28: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1781:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalPerspectiveDsl.g:1787:2: ( ( () otherlv_1= 'welcome' ) )
+            // InternalPerspectiveDsl.g:1788:2: ( () otherlv_1= 'welcome' )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1781:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1782:5: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            // InternalPerspectiveDsl.g:1788:2: ( () otherlv_1= 'welcome' )
+            // InternalPerspectiveDsl.g:1789:3: () otherlv_1= 'welcome'
+            {
+            // InternalPerspectiveDsl.g:1789:3: ()
+            // InternalPerspectiveDsl.g:1790:4: 
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
-                  
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveWelcomeAccess().getPerspectiveWelcomeAction_0(),
+              					current);
+              			
             }
-            pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName4371);
-            this_ValidID_0=ruleValidID();
+
+            }
+
+            otherlv_1=(Token)match(input,44,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePerspectiveWelcome"
+
+
+    // $ANTLR start "entryRulePerspectiveSearch"
+    // InternalPerspectiveDsl.g:1804:1: entryRulePerspectiveSearch returns [EObject current=null] : iv_rulePerspectiveSearch= rulePerspectiveSearch EOF ;
+    public final EObject entryRulePerspectiveSearch() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePerspectiveSearch = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:1804:58: (iv_rulePerspectiveSearch= rulePerspectiveSearch EOF )
+            // InternalPerspectiveDsl.g:1805:2: iv_rulePerspectiveSearch= rulePerspectiveSearch EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getPerspectiveSearchRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_rulePerspectiveSearch=rulePerspectiveSearch();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
+               current =iv_rulePerspectiveSearch; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
-              		current.merge(this_ValidID_0);
-                  
             }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePerspectiveSearch"
+
+
+    // $ANTLR start "rulePerspectiveSearch"
+    // InternalPerspectiveDsl.g:1811:1: rulePerspectiveSearch returns [EObject current=null] : ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) ) ;
+    public final EObject rulePerspectiveSearch() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token lv_depth_6_0=null;
+        Token otherlv_7=null;
+        Token lv_filterCols_8_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:1817:2: ( ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) ) )
+            // InternalPerspectiveDsl.g:1818:2: ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:1818:2: ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) )
+            // InternalPerspectiveDsl.g:1819:3: () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) )
+            {
+            // InternalPerspectiveDsl.g:1819:3: ()
+            // InternalPerspectiveDsl.g:1820:4: 
+            {
             if ( state.backtracking==0 ) {
-               
-                      afterParserOrEnumRuleCall();
-                  
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveSearchAccess().getPerspectiveSearchAction_0(),
+              					current);
+              			
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1792:1: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
-            loop17:
+
+            }
+
+            otherlv_1=(Token)match(input,45,FOLLOW_21); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,46,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getPerspectiveSearchAccess().getInKeyword_2());
+              		
+            }
+            // InternalPerspectiveDsl.g:1834:3: ( (otherlv_3= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1835:4: (otherlv_3= RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:1835:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:1836:5: otherlv_3= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveSearchRule());
+              					}
+              				
+            }
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_22); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_3, grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoCrossReference_3_0());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:1847:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:1848:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
+            {
+            // InternalPerspectiveDsl.g:1848:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:1849:5: ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* )
+            {
+            getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+            // InternalPerspectiveDsl.g:1852:5: ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:1853:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
+            {
+            // InternalPerspectiveDsl.g:1853:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
+            loop16:
             do {
-                int alt17=2;
-                int LA17_0 = input.LA(1);
+                int alt16=3;
+                int LA16_0 = input.LA(1);
 
-                if ( (LA17_0==41) ) {
-                    int LA17_2 = input.LA(2);
-
-                    if ( (LA17_2==RULE_ID) ) {
-                        int LA17_3 = input.LA(3);
-
-                        if ( (synpred1_InternalPerspectiveDsl()) ) {
-                            alt17=1;
-                        }
-
-
-                    }
-
-
+                if ( LA16_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+                    alt16=1;
+                }
+                else if ( LA16_0 == 48 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+                    alt16=2;
                 }
 
 
-                switch (alt17) {
+                switch (alt16) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1792:2: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    // InternalPerspectiveDsl.g:1854:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1792:2: ( ( '.' )=>kw= '.' )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1792:3: ( '.' )=>kw= '.'
+            	    // InternalPerspectiveDsl.g:1854:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1855:5: {...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) )
             	    {
-            	    kw=(Token)match(input,41,FOLLOW_41_in_ruleQualifiedName4399); if (state.failed) return current;
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "rulePerspectiveSearch", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)");
+            	    }
+            	    // InternalPerspectiveDsl.g:1855:114: ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1856:6: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
+            	    // InternalPerspectiveDsl.g:1859:9: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:1859:10: {...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "rulePerspectiveSearch", "true");
+            	    }
+            	    // InternalPerspectiveDsl.g:1859:19: (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:1859:20: otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) )
+            	    {
+            	    otherlv_5=(Token)match(input,47,FOLLOW_23); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              current.merge(kw);
-            	              newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
-            	          
+            	      									newLeafNode(otherlv_5, grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0());
+            	      								
             	    }
-
-            	    }
-
-            	    if ( state.backtracking==0 ) {
-            	       
-            	              newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
-            	          
-            	    }
-            	    pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName4422);
-            	    this_ValidID_2=ruleValidID();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
+            	    // InternalPerspectiveDsl.g:1863:9: ( (lv_depth_6_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:1864:10: (lv_depth_6_0= RULE_INT )
+            	    {
+            	    // InternalPerspectiveDsl.g:1864:10: (lv_depth_6_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:1865:11: lv_depth_6_0= RULE_INT
+            	    {
+            	    lv_depth_6_0=(Token)match(input,RULE_INT,FOLLOW_22); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      		current.merge(this_ValidID_2);
-            	          
+            	      											newLeafNode(lv_depth_6_0, grammarAccess.getPerspectiveSearchAccess().getDepthINTTerminalRuleCall_4_0_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	              afterParserOrEnumRuleCall();
-            	          
+
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectiveSearchRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"depth",
+            	      												lv_depth_6_0,
+            	      												"org.eclipse.xtext.xbase.Xbase.INT");
+            	      										
             	    }
 
             	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // InternalPerspectiveDsl.g:1887:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:1887:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1888:5: {...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "rulePerspectiveSearch", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1)");
+            	    }
+            	    // InternalPerspectiveDsl.g:1888:114: ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1889:6: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1);
+            	    // InternalPerspectiveDsl.g:1892:9: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:1892:10: {...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "rulePerspectiveSearch", "true");
+            	    }
+            	    // InternalPerspectiveDsl.g:1892:19: (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:1892:20: otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) )
+            	    {
+            	    otherlv_7=(Token)match(input,48,FOLLOW_23); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      									newLeafNode(otherlv_7, grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0());
+            	      								
+            	    }
+            	    // InternalPerspectiveDsl.g:1896:9: ( (lv_filterCols_8_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:1897:10: (lv_filterCols_8_0= RULE_INT )
+            	    {
+            	    // InternalPerspectiveDsl.g:1897:10: (lv_filterCols_8_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:1898:11: lv_filterCols_8_0= RULE_INT
+            	    {
+            	    lv_filterCols_8_0=(Token)match(input,RULE_INT,FOLLOW_22); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      											newLeafNode(lv_filterCols_8_0, grammarAccess.getPerspectiveSearchAccess().getFilterColsINTTerminalRuleCall_4_1_1_0());
+            	      										
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectiveSearchRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"filterCols",
+            	      												lv_filterCols_8_0,
+            	      												"org.eclipse.xtext.xbase.Xbase.INT");
+            	      										
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
             	    break;
 
             	default :
-            	    break loop17;
+            	    break loop16;
                 }
             } while (true);
 
@@ -4935,107 +5357,162 @@
 
             }
 
+            getUnorderedGroupHelper().leave(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
+
+            }
+
+
+            }
+
+
+            }
+
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleQualifiedName"
+    // $ANTLR end "rulePerspectiveSearch"
 
 
-    // $ANTLR start "entryRuleValidID"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1819:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
-    public final String entryRuleValidID() throws RecognitionException {
-        String current = null;
+    // $ANTLR start "entryRulePerspectiveDataInterchange"
+    // InternalPerspectiveDsl.g:1931:1: entryRulePerspectiveDataInterchange returns [EObject current=null] : iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF ;
+    public final EObject entryRulePerspectiveDataInterchange() throws RecognitionException {
+        EObject current = null;
 
-        AntlrDatatypeRuleToken iv_ruleValidID = null;
+        EObject iv_rulePerspectiveDataInterchange = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1820:2: (iv_ruleValidID= ruleValidID EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1821:2: iv_ruleValidID= ruleValidID EOF
+            // InternalPerspectiveDsl.g:1931:67: (iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF )
+            // InternalPerspectiveDsl.g:1932:2: iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getValidIDRule()); 
+               newCompositeNode(grammarAccess.getPerspectiveDataInterchangeRule()); 
             }
-            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID4470);
-            iv_ruleValidID=ruleValidID();
+            pushFollow(FOLLOW_1);
+            iv_rulePerspectiveDataInterchange=rulePerspectiveDataInterchange();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleValidID.getText(); 
+               current =iv_rulePerspectiveDataInterchange; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID4481); 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 "entryRuleValidID"
+    // $ANTLR end "entryRulePerspectiveDataInterchange"
 
 
-    // $ANTLR start "ruleValidID"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1828:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
-    public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+    // $ANTLR start "rulePerspectiveDataInterchange"
+    // InternalPerspectiveDsl.g:1938:1: rulePerspectiveDataInterchange returns [EObject current=null] : ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) ;
+    public final EObject rulePerspectiveDataInterchange() throws RecognitionException {
+        EObject current = null;
 
-        Token this_ID_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1831:28: (this_ID_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1832:5: this_ID_0= RULE_ID
+            // InternalPerspectiveDsl.g:1944:2: ( ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1945:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
             {
-            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID4520); if (state.failed) return current;
+            // InternalPerspectiveDsl.g:1945:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1946:3: () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) )
+            {
+            // InternalPerspectiveDsl.g:1946:3: ()
+            // InternalPerspectiveDsl.g:1947:4: 
+            {
             if ( state.backtracking==0 ) {
 
-              		current.merge(this_ID_0);
-                  
-            }
-            if ( state.backtracking==0 ) {
-               
-                  newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getPerspectiveDataInterchangeAccess().getPerspectiveDataInterchangeAction_0(),
+              					current);
+              			
             }
 
             }
 
+            otherlv_1=(Token)match(input,49,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:1957:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1958:4: (otherlv_2= RULE_ID )
+            {
+            // InternalPerspectiveDsl.g:1958:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1959:5: otherlv_2= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getPerspectiveDataInterchangeRule());
+              					}
+              				
+            }
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageCrossReference_2_0());
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleValidID"
+    // $ANTLR end "rulePerspectiveDataInterchange"
 
 
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1847:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    // InternalPerspectiveDsl.g:1974:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
     public final String entryRuleTRANSLATABLEID() throws RecognitionException {
         String current = null;
 
@@ -5043,13 +5520,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1848:2: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1849:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
+            // InternalPerspectiveDsl.g:1974:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // InternalPerspectiveDsl.g:1975:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID4565);
+            pushFollow(FOLLOW_1);
             iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID();
 
             state._fsp--;
@@ -5057,16 +5534,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTRANSLATABLEID.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLEID4576); 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;
@@ -5075,41 +5552,44 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1856:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalPerspectiveDsl.g:1981: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1859:28: (this_ID_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1860:5: this_ID_0= RULE_ID
+            // InternalPerspectiveDsl.g:1987:2: (this_ID_0= RULE_ID )
+            // InternalPerspectiveDsl.g:1988:2: this_ID_0= RULE_ID
             {
-            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTRANSLATABLEID4615); 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;
@@ -5118,7 +5598,7 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLESTRING"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1875:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
+    // InternalPerspectiveDsl.g:1998:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
     public final String entryRuleTRANSLATABLESTRING() throws RecognitionException {
         String current = null;
 
@@ -5126,13 +5606,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1876:2: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1877:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
+            // InternalPerspectiveDsl.g:1998:58: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
+            // InternalPerspectiveDsl.g:1999:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); 
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING4660);
+            pushFollow(FOLLOW_1);
             iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING();
 
             state._fsp--;
@@ -5140,16 +5620,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTRANSLATABLESTRING.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING4671); 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;
@@ -5158,41 +5638,44 @@
 
 
     // $ANTLR start "ruleTRANSLATABLESTRING"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1884:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
+    // InternalPerspectiveDsl.g:2005: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1887:28: (this_STRING_0= RULE_STRING )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1888:5: this_STRING_0= RULE_STRING
+            // InternalPerspectiveDsl.g:2011:2: (this_STRING_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2012:2: this_STRING_0= RULE_STRING
             {
-            this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING4710); 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;
@@ -5200,8 +5683,506 @@
     // $ANTLR end "ruleTRANSLATABLESTRING"
 
 
+    // $ANTLR start "entryRuleXImportDeclaration"
+    // InternalPerspectiveDsl.g:2022:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+    public final EObject entryRuleXImportDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXImportDeclaration = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:2022:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+            // InternalPerspectiveDsl.g:2023: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"
+    // InternalPerspectiveDsl.g:2029: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 {
+            // InternalPerspectiveDsl.g:2035: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= ';' )? ) )
+            // InternalPerspectiveDsl.g:2036: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= ';' )? )
+            {
+            // InternalPerspectiveDsl.g:2036: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= ';' )? )
+            // InternalPerspectiveDsl.g:2037: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= ';' )?
+            {
+            // InternalPerspectiveDsl.g:2037:3: ()
+            // InternalPerspectiveDsl.g:2038:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,50,FOLLOW_24); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:2048: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 alt19=4;
+            alt19 = dfa19.predict(input);
+            switch (alt19) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2049:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:2049:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:2050:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:2050:5: ( (lv_static_2_0= 'static' ) )
+                    // InternalPerspectiveDsl.g:2051:6: (lv_static_2_0= 'static' )
+                    {
+                    // InternalPerspectiveDsl.g:2051:6: (lv_static_2_0= 'static' )
+                    // InternalPerspectiveDsl.g:2052:7: lv_static_2_0= 'static'
+                    {
+                    lv_static_2_0=(Token)match(input,51,FOLLOW_25); 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");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:2064:5: ( (lv_extension_3_0= 'extension' ) )?
+                    int alt17=2;
+                    int LA17_0 = input.LA(1);
+
+                    if ( (LA17_0==52) ) {
+                        alt17=1;
+                    }
+                    switch (alt17) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:2065:6: (lv_extension_3_0= 'extension' )
+                            {
+                            // InternalPerspectiveDsl.g:2065:6: (lv_extension_3_0= 'extension' )
+                            // InternalPerspectiveDsl.g:2066:7: lv_extension_3_0= 'extension'
+                            {
+                            lv_extension_3_0=(Token)match(input,52,FOLLOW_25); 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;
+
+                    }
+
+                    // InternalPerspectiveDsl.g:2078:5: ( ( ruleQualifiedNameInStaticImport ) )
+                    // InternalPerspectiveDsl.g:2079:6: ( ruleQualifiedNameInStaticImport )
+                    {
+                    // InternalPerspectiveDsl.g:2079:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalPerspectiveDsl.g:2080: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_26);
+                    ruleQualifiedNameInStaticImport();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:2094:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0==53) ) {
+                        alt18=1;
+                    }
+                    else if ( (LA18_0==RULE_ID) ) {
+                        alt18=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 18, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:2095:6: ( (lv_wildcard_5_0= '*' ) )
+                            {
+                            // InternalPerspectiveDsl.g:2095:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalPerspectiveDsl.g:2096:7: (lv_wildcard_5_0= '*' )
+                            {
+                            // InternalPerspectiveDsl.g:2096:7: (lv_wildcard_5_0= '*' )
+                            // InternalPerspectiveDsl.g:2097:8: lv_wildcard_5_0= '*'
+                            {
+                            lv_wildcard_5_0=(Token)match(input,53,FOLLOW_27); 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 :
+                            // InternalPerspectiveDsl.g:2110:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            {
+                            // InternalPerspectiveDsl.g:2110:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalPerspectiveDsl.g:2111:7: (lv_memberName_6_0= ruleValidID )
+                            {
+                            // InternalPerspectiveDsl.g:2111:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalPerspectiveDsl.g:2112:8: lv_memberName_6_0= ruleValidID
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_27);
+                            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 :
+                    // InternalPerspectiveDsl.g:2132:4: ( ( ruleQualifiedName ) )
+                    {
+                    // InternalPerspectiveDsl.g:2132:4: ( ( ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2133:5: ( ruleQualifiedName )
+                    {
+                    // InternalPerspectiveDsl.g:2133:5: ( ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2134: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_27);
+                    ruleQualifiedName();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:2149:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    {
+                    // InternalPerspectiveDsl.g:2149:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalPerspectiveDsl.g:2150:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    {
+                    // InternalPerspectiveDsl.g:2150:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalPerspectiveDsl.g:2151:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_27);
+                    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 :
+                    // InternalPerspectiveDsl.g:2169:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:2169:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalPerspectiveDsl.g:2170:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    {
+                    // InternalPerspectiveDsl.g:2170:5: ( (lv_fqnImport_9_0= 'ns' ) )
+                    // InternalPerspectiveDsl.g:2171:6: (lv_fqnImport_9_0= 'ns' )
+                    {
+                    // InternalPerspectiveDsl.g:2171:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalPerspectiveDsl.g:2172:7: lv_fqnImport_9_0= 'ns'
+                    {
+                    lv_fqnImport_9_0=(Token)match(input,54,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");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:2184:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2185:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    {
+                    // InternalPerspectiveDsl.g:2185:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2186:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_27);
+                    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;
+
+            }
+
+            // InternalPerspectiveDsl.g:2205:3: (otherlv_11= ';' )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==55) ) {
+                alt20=1;
+            }
+            switch (alt20) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2206:4: otherlv_11= ';'
+                    {
+                    otherlv_11=(Token)match(input,55,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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1903:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    // InternalPerspectiveDsl.g:2215:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
     public final EObject entryRuleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -5209,13 +6190,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1904:2: (iv_ruleXAnnotation= ruleXAnnotation EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1905:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            // InternalPerspectiveDsl.g:2215:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // InternalPerspectiveDsl.g:2216:2: iv_ruleXAnnotation= ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation4754);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotation=ruleXAnnotation();
 
             state._fsp--;
@@ -5223,16 +6204,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotation; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation4764); 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;
@@ -5241,7 +6222,7 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1912: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= ')' )? ) ;
+    // InternalPerspectiveDsl.g:2222: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;
 
@@ -5256,61 +6237,62 @@
         EObject lv_value_7_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1915: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1916: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= ')' )? )
+            // InternalPerspectiveDsl.g:2228: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= ')' )? ) )
+            // InternalPerspectiveDsl.g:2229: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1916: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1916: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= ')' )?
+            // InternalPerspectiveDsl.g:2229: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= ')' )? )
+            // InternalPerspectiveDsl.g:2230: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1916:2: ()
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1917:5: 
+            // InternalPerspectiveDsl.g:2230:3: ()
+            // InternalPerspectiveDsl.g:2231:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,43,FOLLOW_43_in_ruleXAnnotation4810); if (state.failed) return current;
+            otherlv_1=(Token)match(input,56,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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1926:1: ( ( ruleQualifiedName ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1927:1: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:2241:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:2242:4: ( ruleQualifiedName )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1927:1: ( ruleQualifiedName )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1928:3: ruleQualifiedName
+            // InternalPerspectiveDsl.g:2242:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:2243: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_ruleXAnnotation4833);
+            pushFollow(FOLLOW_28);
             ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -5318,67 +6300,67 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1941: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 alt20=2;
-            int LA20_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:2257: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 alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA20_0==44) && (synpred2_InternalPerspectiveDsl())) {
-                alt20=1;
+            if ( (LA23_0==57) && (synpred1_InternalPerspectiveDsl())) {
+                alt23=1;
             }
-            switch (alt20) {
+            switch (alt23) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1941:3: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
+                    // InternalPerspectiveDsl.g:2258: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1941:3: ( ( '(' )=>otherlv_3= '(' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1941:4: ( '(' )=>otherlv_3= '('
+                    // InternalPerspectiveDsl.g:2258:4: ( ( '(' )=>otherlv_3= '(' )
+                    // InternalPerspectiveDsl.g:2259:5: ( '(' )=>otherlv_3= '('
                     {
-                    otherlv_3=(Token)match(input,44,FOLLOW_44_in_ruleXAnnotation4854); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,57,FOLLOW_29); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1946:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
-                    int alt19=3;
-                    alt19 = dfa19.predict(input);
-                    switch (alt19) {
+                    // InternalPerspectiveDsl.g:2265:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    int alt22=3;
+                    alt22 = dfa22.predict(input);
+                    switch (alt22) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1946:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalPerspectiveDsl.g:2266:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1946:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1946:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalPerspectiveDsl.g:2266:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalPerspectiveDsl.g:2267:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1946:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1946:5: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalPerspectiveDsl.g:2267:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // InternalPerspectiveDsl.g:2268:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1952:1: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1953:3: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            // InternalPerspectiveDsl.g:2277:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalPerspectiveDsl.g:2278: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_ruleXAnnotation4898);
+                            pushFollow(FOLLOW_30);
                             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();
+                              							
                             }
 
                             }
@@ -5386,529 +6368,55 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1969:2: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
-                            loop18:
-                            do {
-                                int alt18=2;
-                                int LA18_0 = input.LA(1);
-
-                                if ( (LA18_0==45) ) {
-                                    alt18=1;
-                                }
-
-
-                                switch (alt18) {
-                            	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1969:4: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    {
-                            	    otherlv_5=(Token)match(input,45,FOLLOW_45_in_ruleXAnnotation4911); if (state.failed) return current;
-                            	    if ( state.backtracking==0 ) {
-
-                            	          	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
-                            	          
-                            	    }
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1973:1: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1973:2: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    {
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1979:1: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1980:3: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
-                            	    {
-                            	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
-                            	      	    
-                            	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation4952);
-                            	    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 loop18;
-                                }
-                            } while (true);
-
-
-                            }
-
-
-                            }
-                            break;
-                        case 2 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1997:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1997:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1998:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1998:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:1999:3: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
-                            {
-                            if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
-                              	    
-                            }
-                            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_ruleXAnnotation4982);
-                            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,46,FOLLOW_46_in_ruleXAnnotation4996); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2027: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2028:2: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2029:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
-            }
-            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair5034);
-            iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXAnnotationElementValuePair; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair5044); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2036: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2039:28: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2040:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2040:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2040:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2040:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2040:3: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2045:5: ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2045:6: ( ( ruleValidID ) ) otherlv_1= '='
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2045:6: ( ( ruleValidID ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2046:1: ( ruleValidID )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2046:1: ( ruleValidID )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2047: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_ruleXAnnotationElementValuePair5114);
-            ruleValidID();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
-            }
-
-            }
-
-
-            }
-
-            otherlv_1=(Token)match(input,47,FOLLOW_47_in_ruleXAnnotationElementValuePair5126); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
-                  
-            }
-
-            }
-
-
-            }
-
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2064:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2065:1: (lv_value_2_0= ruleXAnnotationElementValue )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2065:1: (lv_value_2_0= ruleXAnnotationElementValue )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2066:3: lv_value_2_0= ruleXAnnotationElementValue
-            {
-            if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
-              	    
-            }
-            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_ruleXAnnotationElementValuePair5149);
-            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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2090: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2091:2: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2092:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
-            }
-            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList5185);
-            iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXAnnotationElementValueOrCommaList; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList5195); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2099: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2102: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2103: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2103: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 alt25=2;
-            alt25 = dfa25.predict(input);
-            switch (alt25) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2103:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2103:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2103:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
-                    {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2103:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2103:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
-                    {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2106:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2106:6: () otherlv_1= '#' otherlv_2= '['
-                    {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2106:6: ()
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2107:5: 
-                    {
-                    if ( state.backtracking==0 ) {
-
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
-                                  current);
-                          
-                    }
-
-                    }
-
-                    otherlv_1=(Token)match(input,48,FOLLOW_48_in_ruleXAnnotationElementValueOrCommaList5260); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
-                          
-                    }
-                    otherlv_2=(Token)match(input,49,FOLLOW_49_in_ruleXAnnotationElementValueOrCommaList5272); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
-                          
-                    }
-
-                    }
-
-
-                    }
-
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2120:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt22=2;
-                    int LA22_0 = input.LA(1);
-
-                    if ( ((LA22_0>=RULE_ID && LA22_0<=RULE_DECIMAL)||LA22_0==14||LA22_0==16||(LA22_0>=43 && LA22_0<=44)||(LA22_0>=48 && LA22_0<=49)||LA22_0==56||(LA22_0>=72 && LA22_0<=73)||LA22_0==77||LA22_0==85||LA22_0==87||(LA22_0>=91 && LA22_0<=93)||(LA22_0>=96 && LA22_0<=107)||LA22_0==109) ) {
-                        alt22=1;
-                    }
-                    switch (alt22) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2120:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2120:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2121:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2121:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2122:3: lv_elements_3_0= ruleXAnnotationOrExpression
-                            {
-                            if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-                              	    
-                            }
-                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList5296);
-                            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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2138:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2295:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             loop21:
                             do {
                                 int alt21=2;
                                 int LA21_0 = input.LA(1);
 
-                                if ( (LA21_0==45) ) {
+                                if ( (LA21_0==58) ) {
                                     alt21=1;
                                 }
 
 
                                 switch (alt21) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2138:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2296:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,45,FOLLOW_45_in_ruleXAnnotationElementValueOrCommaList5309); if (state.failed) return current;
+                            	    otherlv_5=(Token)match(input,58,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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2142:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2143:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2300:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalPerspectiveDsl.g:2301:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2143:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2144:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalPerspectiveDsl.g:2310:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalPerspectiveDsl.g:2311: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_ruleXAnnotationElementValueOrCommaList5330);
-                            	    lv_elements_5_0=ruleXAnnotationOrExpression();
+                            	    pushFollow(FOLLOW_30);
+                            	    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();
+                            	      								
                             	    }
 
                             	    }
@@ -5927,118 +6435,468 @@
 
 
                             }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // InternalPerspectiveDsl.g:2331:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            {
+                            // InternalPerspectiveDsl.g:2331:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalPerspectiveDsl.g:2332:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            {
+                            // InternalPerspectiveDsl.g:2332:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalPerspectiveDsl.g:2333:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_31);
+                            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,50,FOLLOW_50_in_ruleXAnnotationElementValueOrCommaList5346); if (state.failed) return current;
+                    otherlv_8=(Token)match(input,59,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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2165: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"
+    // InternalPerspectiveDsl.g:2360:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValuePair = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:2360:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // InternalPerspectiveDsl.g:2361: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"
+    // InternalPerspectiveDsl.g:2367: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 {
+            // InternalPerspectiveDsl.g:2373:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // InternalPerspectiveDsl.g:2374:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            {
+            // InternalPerspectiveDsl.g:2374:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalPerspectiveDsl.g:2375:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            {
+            // InternalPerspectiveDsl.g:2375:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // InternalPerspectiveDsl.g:2376:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            {
+            // InternalPerspectiveDsl.g:2385:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalPerspectiveDsl.g:2386:5: ( ( ruleValidID ) ) otherlv_1= '='
+            {
+            // InternalPerspectiveDsl.g:2386:5: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:2387:6: ( ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:2387:6: ( ruleValidID )
+            // InternalPerspectiveDsl.g:2388: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_32);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              							afterParserOrEnumRuleCall();
+              						
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,60,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:2408:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalPerspectiveDsl.g:2409:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            {
+            // InternalPerspectiveDsl.g:2409:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:2410: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"
+    // InternalPerspectiveDsl.g:2431:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValueOrCommaList = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:2431:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalPerspectiveDsl.g:2432: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"
+    // InternalPerspectiveDsl.g:2438: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 {
+            // InternalPerspectiveDsl.g:2444: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 ) ) )+ )? ) ) )
+            // InternalPerspectiveDsl.g:2445: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 ) ) )+ )? ) )
+            {
+            // InternalPerspectiveDsl.g:2445: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 alt28=2;
+            alt28 = dfa28.predict(input);
+            switch (alt28) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:2446:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2165:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2166:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    // InternalPerspectiveDsl.g:2446:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2447:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    {
+                    // InternalPerspectiveDsl.g:2447:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalPerspectiveDsl.g:2448:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    {
+                    // InternalPerspectiveDsl.g:2455:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2456:6: () otherlv_1= '#' otherlv_2= '['
+                    {
+                    // InternalPerspectiveDsl.g:2456:6: ()
+                    // InternalPerspectiveDsl.g:2457:7: 
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
-                          
-                    }
-                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList5376);
-                    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,61,FOLLOW_34); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_XAnnotationOrExpression_7; 
-                              afterParserOrEnumRuleCall();
-                          
-                    }
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2174:1: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
-                    int alt24=2;
-                    int LA24_0 = input.LA(1);
 
-                    if ( (LA24_0==45) ) {
-                        alt24=1;
+                      						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+                      					
                     }
-                    switch (alt24) {
+                    otherlv_2=(Token)match(input,62,FOLLOW_35); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:2473:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt25=2;
+                    int LA25_0 = input.LA(1);
+
+                    if ( ((LA25_0>=RULE_ID && LA25_0<=RULE_DECIMAL)||LA25_0==14||(LA25_0>=50 && LA25_0<=52)||(LA25_0>=56 && LA25_0<=57)||(LA25_0>=61 && LA25_0<=62)||LA25_0==69||(LA25_0>=85 && LA25_0<=86)||LA25_0==90||LA25_0==98||LA25_0==100||(LA25_0>=104 && LA25_0<=106)||(LA25_0>=109 && LA25_0<=118)||LA25_0==120) ) {
+                        alt25=1;
+                    }
+                    switch (alt25) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2174:2: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            // InternalPerspectiveDsl.g:2474:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2174:2: ()
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2175:5: 
+                            // InternalPerspectiveDsl.g:2474:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalPerspectiveDsl.g:2475:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            {
+                            // InternalPerspectiveDsl.g:2475:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2476: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_36);
+                            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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2180:2: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
-                            int cnt23=0;
-                            loop23:
+
+                            }
+
+                            // InternalPerspectiveDsl.g:2493:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop24:
                             do {
-                                int alt23=2;
-                                int LA23_0 = input.LA(1);
+                                int alt24=2;
+                                int LA24_0 = input.LA(1);
 
-                                if ( (LA23_0==45) ) {
-                                    alt23=1;
+                                if ( (LA24_0==58) ) {
+                                    alt24=1;
                                 }
 
 
-                                switch (alt23) {
+                                switch (alt24) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2180:4: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2494:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_9=(Token)match(input,45,FOLLOW_45_in_ruleXAnnotationElementValueOrCommaList5398); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,58,FOLLOW_33); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2184:1: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2185:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2498:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2499:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2185:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2186:3: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    // InternalPerspectiveDsl.g:2499:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2500: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_ruleXAnnotationElementValueOrCommaList5419);
-                            	    lv_elements_10_0=ruleXAnnotationOrExpression();
+                            	    pushFollow(FOLLOW_36);
+                            	    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();
+                            	      							
                             	    }
 
                             	    }
@@ -6051,13 +6909,143 @@
                             	    break;
 
                             	default :
-                            	    if ( cnt23 >= 1 ) break loop23;
+                            	    break loop24;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_6=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:2525:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    {
+                    // InternalPerspectiveDsl.g:2525:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalPerspectiveDsl.g:2526:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0());
+                      			
+                    }
+                    pushFollow(FOLLOW_37);
+                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_XAnnotationOrExpression_7;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+                    // InternalPerspectiveDsl.g:2534:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    int alt27=2;
+                    int LA27_0 = input.LA(1);
+
+                    if ( (LA27_0==58) ) {
+                        alt27=1;
+                    }
+                    switch (alt27) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:2535:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            {
+                            // InternalPerspectiveDsl.g:2535:5: ()
+                            // InternalPerspectiveDsl.g:2536:6: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              						current = forceCreateModelElementAndAdd(
+                              							grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+                              							current);
+                              					
+                            }
+
+                            }
+
+                            // InternalPerspectiveDsl.g:2542:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            int cnt26=0;
+                            loop26:
+                            do {
+                                int alt26=2;
+                                int LA26_0 = input.LA(1);
+
+                                if ( (LA26_0==58) ) {
+                                    alt26=1;
+                                }
+
+
+                                switch (alt26) {
+                            	case 1 :
+                            	    // InternalPerspectiveDsl.g:2543:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+                            	      					
+                            	    }
+                            	    // InternalPerspectiveDsl.g:2547:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2548:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // InternalPerspectiveDsl.g:2548:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2549:8: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0());
+                            	      							
+                            	    }
+                            	    pushFollow(FOLLOW_37);
+                            	    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 ( cnt26 >= 1 ) break loop26;
                             	    if (state.backtracking>0) {state.failed=true; return current;}
                                         EarlyExitException eee =
-                                            new EarlyExitException(23, input);
+                                            new EarlyExitException(26, input);
                                         throw eee;
                                 }
-                                cnt23++;
+                                cnt26++;
                             } while (true);
 
 
@@ -6079,14 +7067,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -6095,7 +7085,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2210:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    // InternalPerspectiveDsl.g:2573:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
     public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -6103,13 +7093,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2211:2: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2212:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            // InternalPerspectiveDsl.g:2573:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // InternalPerspectiveDsl.g:2574:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue5460);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue();
 
             state._fsp--;
@@ -6117,16 +7107,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationElementValue; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue5470); 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;
@@ -6135,7 +7125,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2219: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 ) ;
+    // InternalPerspectiveDsl.g:2580: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;
 
@@ -6150,52 +7140,53 @@
         EObject this_XAnnotationOrExpression_7 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2222: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2223:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:2586:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:2587: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2223:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
-            int alt28=2;
-            alt28 = dfa28.predict(input);
-            switch (alt28) {
+            // InternalPerspectiveDsl.g:2587:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            int alt31=2;
+            alt31 = dfa31.predict(input);
+            switch (alt31) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2223:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2588:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2223:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2223:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalPerspectiveDsl.g:2588:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2589:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2223:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2223:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2589:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalPerspectiveDsl.g:2590:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2226:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2226:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalPerspectiveDsl.g:2597:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2598:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2226:6: ()
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2227:5: 
+                    // InternalPerspectiveDsl.g:2598:6: ()
+                    // InternalPerspectiveDsl.g:2599: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,48,FOLLOW_48_in_ruleXAnnotationElementValue5535); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,61,FOLLOW_34); 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,49,FOLLOW_49_in_ruleXAnnotationElementValue5547); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,62,FOLLOW_35); 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());
+                      					
                     }
 
                     }
@@ -6203,45 +7194,45 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2240:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt27=2;
-                    int LA27_0 = input.LA(1);
+                    // InternalPerspectiveDsl.g:2615:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt30=2;
+                    int LA30_0 = input.LA(1);
 
-                    if ( ((LA27_0>=RULE_ID && LA27_0<=RULE_DECIMAL)||LA27_0==14||LA27_0==16||(LA27_0>=43 && LA27_0<=44)||(LA27_0>=48 && LA27_0<=49)||LA27_0==56||(LA27_0>=72 && LA27_0<=73)||LA27_0==77||LA27_0==85||LA27_0==87||(LA27_0>=91 && LA27_0<=93)||(LA27_0>=96 && LA27_0<=107)||LA27_0==109) ) {
-                        alt27=1;
+                    if ( ((LA30_0>=RULE_ID && LA30_0<=RULE_DECIMAL)||LA30_0==14||(LA30_0>=50 && LA30_0<=52)||(LA30_0>=56 && LA30_0<=57)||(LA30_0>=61 && LA30_0<=62)||LA30_0==69||(LA30_0>=85 && LA30_0<=86)||LA30_0==90||LA30_0==98||LA30_0==100||(LA30_0>=104 && LA30_0<=106)||(LA30_0>=109 && LA30_0<=118)||LA30_0==120) ) {
+                        alt30=1;
                     }
-                    switch (alt27) {
+                    switch (alt30) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2240:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2616:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2240:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2241:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2616:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalPerspectiveDsl.g:2617:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2241:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2242:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalPerspectiveDsl.g:2617:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2618: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_ruleXAnnotationElementValue5571);
+                            pushFollow(FOLLOW_36);
                             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();
+                              						
                             }
 
                             }
@@ -6249,55 +7240,55 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2258:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            loop26:
+                            // InternalPerspectiveDsl.g:2635:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop29:
                             do {
-                                int alt26=2;
-                                int LA26_0 = input.LA(1);
+                                int alt29=2;
+                                int LA29_0 = input.LA(1);
 
-                                if ( (LA26_0==45) ) {
-                                    alt26=1;
+                                if ( (LA29_0==58) ) {
+                                    alt29=1;
                                 }
 
 
-                                switch (alt26) {
+                                switch (alt29) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2258:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2636:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,45,FOLLOW_45_in_ruleXAnnotationElementValue5584); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,58,FOLLOW_33); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2262:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2263:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2640:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2641:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2263:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2264:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalPerspectiveDsl.g:2641:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2642: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_ruleXAnnotationElementValue5605);
+                            	    pushFollow(FOLLOW_36);
                             	    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();
+                            	      							
                             	    }
 
                             	    }
@@ -6310,7 +7301,7 @@
                             	    break;
 
                             	default :
-                            	    break loop26;
+                            	    break loop29;
                                 }
                             } while (true);
 
@@ -6320,11 +7311,11 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,50,FOLLOW_50_in_ruleXAnnotationElementValue5621); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,63,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());
+                      			
                     }
 
                     }
@@ -6333,23 +7324,23 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2286:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    // InternalPerspectiveDsl.g:2667:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue5650);
+                    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();
+                      		
                     }
 
                     }
@@ -6361,14 +7352,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -6377,7 +7370,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2302:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    // InternalPerspectiveDsl.g:2679:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
     public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6385,13 +7378,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2303:2: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2304:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            // InternalPerspectiveDsl.g:2679:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // InternalPerspectiveDsl.g:2680:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression5685);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression();
 
             state._fsp--;
@@ -6399,16 +7392,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationOrExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression5695); 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;
@@ -6417,7 +7410,7 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2311:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:2686:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6426,70 +7419,71 @@
         EObject this_XExpression_1 = null;
 
 
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2314:28: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2315:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2315:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            int alt29=2;
-            int LA29_0 = input.LA(1);
 
-            if ( (LA29_0==43) ) {
-                alt29=1;
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:2692:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:2693:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:2693:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==56) ) {
+                alt32=1;
             }
-            else if ( ((LA29_0>=RULE_ID && LA29_0<=RULE_DECIMAL)||LA29_0==14||LA29_0==16||LA29_0==44||(LA29_0>=48 && LA29_0<=49)||LA29_0==56||(LA29_0>=72 && LA29_0<=73)||LA29_0==77||LA29_0==85||LA29_0==87||(LA29_0>=91 && LA29_0<=93)||(LA29_0>=96 && LA29_0<=107)||LA29_0==109) ) {
-                alt29=2;
+            else if ( ((LA32_0>=RULE_ID && LA32_0<=RULE_DECIMAL)||LA32_0==14||(LA32_0>=50 && LA32_0<=52)||LA32_0==57||(LA32_0>=61 && LA32_0<=62)||LA32_0==69||(LA32_0>=85 && LA32_0<=86)||LA32_0==90||LA32_0==98||LA32_0==100||(LA32_0>=104 && LA32_0<=106)||(LA32_0>=109 && LA32_0<=118)||LA32_0==120) ) {
+                alt32=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 29, 0, input);
+                    new NoViableAltException("", 32, 0, input);
 
                 throw nvae;
             }
-            switch (alt29) {
+            switch (alt32) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2316:5: this_XAnnotation_0= ruleXAnnotation
+                    // InternalPerspectiveDsl.g:2694:3: this_XAnnotation_0= ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXAnnotation_in_ruleXAnnotationOrExpression5742);
+                    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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2326:5: this_XExpression_1= ruleXExpression
+                    // InternalPerspectiveDsl.g:2703:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXExpression_in_ruleXAnnotationOrExpression5769);
+                    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();
+                      		
                     }
 
                     }
@@ -6501,14 +7495,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -6517,7 +7513,7 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2342:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    // InternalPerspectiveDsl.g:2715:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
     public final EObject entryRuleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6525,13 +7521,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2343:2: (iv_ruleXExpression= ruleXExpression EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2344:2: iv_ruleXExpression= ruleXExpression EOF
+            // InternalPerspectiveDsl.g:2715:52: (iv_ruleXExpression= ruleXExpression EOF )
+            // InternalPerspectiveDsl.g:2716:2: iv_ruleXExpression= ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression5804);
+            pushFollow(FOLLOW_1);
             iv_ruleXExpression=ruleXExpression();
 
             state._fsp--;
@@ -6539,16 +7535,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression5814); 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;
@@ -6557,47 +7553,50 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2351:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    // InternalPerspectiveDsl.g:2722: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2354:28: (this_XAssignment_0= ruleXAssignment )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2356:5: this_XAssignment_0= ruleXAssignment
+            // InternalPerspectiveDsl.g:2728:2: (this_XAssignment_0= ruleXAssignment )
+            // InternalPerspectiveDsl.g:2729:2: this_XAssignment_0= ruleXAssignment
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
-                  
+
+              		newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall());
+              	
             }
-            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression5860);
+            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;
@@ -6606,7 +7605,7 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2372:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    // InternalPerspectiveDsl.g:2740:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
     public final EObject entryRuleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -6614,13 +7613,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2373:2: (iv_ruleXAssignment= ruleXAssignment EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2374:2: iv_ruleXAssignment= ruleXAssignment EOF
+            // InternalPerspectiveDsl.g:2740:52: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // InternalPerspectiveDsl.g:2741:2: iv_ruleXAssignment= ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAssignmentRule()); 
             }
-            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment5894);
+            pushFollow(FOLLOW_1);
             iv_ruleXAssignment=ruleXAssignment();
 
             state._fsp--;
@@ -6628,16 +7627,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAssignment; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment5904); 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;
@@ -6646,7 +7645,7 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2381:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
+    // InternalPerspectiveDsl.g:2747: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;
 
@@ -6657,196 +7656,197 @@
         EObject lv_rightOperand_7_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2384:28: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2385:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalPerspectiveDsl.g:2753:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // InternalPerspectiveDsl.g:2754:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2385:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
-            int alt31=2;
+            // InternalPerspectiveDsl.g:2754:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            int alt34=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA31_1 = input.LA(2);
+                int LA34_1 = input.LA(2);
 
-                if ( (LA31_1==47) ) {
-                    alt31=1;
+                if ( (LA34_1==60) ) {
+                    alt34=1;
                 }
-                else if ( (LA31_1==EOF||(LA31_1>=RULE_ID && LA31_1<=RULE_DECIMAL)||(LA31_1>=14 && LA31_1<=16)||(LA31_1>=41 && LA31_1<=42)||(LA31_1>=44 && LA31_1<=46)||(LA31_1>=48 && LA31_1<=82)||(LA31_1>=84 && LA31_1<=110)) ) {
-                    alt31=2;
+                else if ( (LA34_1==EOF||(LA34_1>=RULE_ID && LA34_1<=RULE_DECIMAL)||(LA34_1>=14 && LA34_1<=15)||(LA34_1>=50 && LA34_1<=53)||LA34_1==55||(LA34_1>=57 && LA34_1<=59)||(LA34_1>=61 && LA34_1<=96)||(LA34_1>=98 && LA34_1<=121)) ) {
+                    alt34=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 1, input);
+                        new NoViableAltException("", 34, 1, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 96:
+            case 109:
                 {
-                int LA31_2 = input.LA(2);
+                int LA34_2 = input.LA(2);
 
-                if ( (LA31_2==EOF||(LA31_2>=RULE_ID && LA31_2<=RULE_DECIMAL)||(LA31_2>=14 && LA31_2<=16)||(LA31_2>=41 && LA31_2<=42)||(LA31_2>=44 && LA31_2<=46)||(LA31_2>=48 && LA31_2<=82)||(LA31_2>=84 && LA31_2<=110)) ) {
-                    alt31=2;
+                if ( (LA34_2==60) ) {
+                    alt34=1;
                 }
-                else if ( (LA31_2==47) ) {
-                    alt31=1;
+                else if ( (LA34_2==EOF||(LA34_2>=RULE_ID && LA34_2<=RULE_DECIMAL)||(LA34_2>=14 && LA34_2<=15)||(LA34_2>=50 && LA34_2<=53)||LA34_2==55||(LA34_2>=57 && LA34_2<=59)||(LA34_2>=61 && LA34_2<=96)||(LA34_2>=98 && LA34_2<=121)) ) {
+                    alt34=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 2, input);
+                        new NoViableAltException("", 34, 2, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 97:
+            case 51:
                 {
-                int LA31_3 = input.LA(2);
+                int LA34_3 = input.LA(2);
 
-                if ( (LA31_3==47) ) {
-                    alt31=1;
+                if ( (LA34_3==60) ) {
+                    alt34=1;
                 }
-                else if ( (LA31_3==EOF||(LA31_3>=RULE_ID && LA31_3<=RULE_DECIMAL)||(LA31_3>=14 && LA31_3<=16)||(LA31_3>=41 && LA31_3<=42)||(LA31_3>=44 && LA31_3<=46)||(LA31_3>=48 && LA31_3<=82)||(LA31_3>=84 && LA31_3<=110)) ) {
-                    alt31=2;
+                else if ( (LA34_3==EOF||(LA34_3>=RULE_ID && LA34_3<=RULE_DECIMAL)||(LA34_3>=14 && LA34_3<=15)||(LA34_3>=50 && LA34_3<=53)||LA34_3==55||(LA34_3>=57 && LA34_3<=59)||(LA34_3>=61 && LA34_3<=96)||(LA34_3>=98 && LA34_3<=121)) ) {
+                    alt34=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 3, input);
+                        new NoViableAltException("", 34, 3, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 16:
+            case 50:
                 {
-                int LA31_4 = input.LA(2);
+                int LA34_4 = input.LA(2);
 
-                if ( (LA31_4==47) ) {
-                    alt31=1;
+                if ( (LA34_4==60) ) {
+                    alt34=1;
                 }
-                else if ( (LA31_4==EOF||(LA31_4>=RULE_ID && LA31_4<=RULE_DECIMAL)||(LA31_4>=14 && LA31_4<=16)||(LA31_4>=41 && LA31_4<=42)||(LA31_4>=44 && LA31_4<=46)||(LA31_4>=48 && LA31_4<=82)||(LA31_4>=84 && LA31_4<=110)) ) {
-                    alt31=2;
+                else if ( (LA34_4==EOF||(LA34_4>=RULE_ID && LA34_4<=RULE_DECIMAL)||(LA34_4>=14 && LA34_4<=15)||(LA34_4>=50 && LA34_4<=53)||LA34_4==55||(LA34_4>=57 && LA34_4<=59)||(LA34_4>=61 && LA34_4<=96)||(LA34_4>=98 && LA34_4<=121)) ) {
+                    alt34=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 4, input);
+                        new NoViableAltException("", 34, 4, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 98:
+            case 52:
                 {
-                int LA31_5 = input.LA(2);
+                int LA34_5 = input.LA(2);
 
-                if ( (LA31_5==EOF||(LA31_5>=RULE_ID && LA31_5<=RULE_DECIMAL)||(LA31_5>=14 && LA31_5<=16)||(LA31_5>=41 && LA31_5<=42)||(LA31_5>=44 && LA31_5<=46)||(LA31_5>=48 && LA31_5<=82)||(LA31_5>=84 && LA31_5<=110)) ) {
-                    alt31=2;
+                if ( (LA34_5==60) ) {
+                    alt34=1;
                 }
-                else if ( (LA31_5==47) ) {
-                    alt31=1;
+                else if ( (LA34_5==EOF||(LA34_5>=RULE_ID && LA34_5<=RULE_DECIMAL)||(LA34_5>=14 && LA34_5<=15)||(LA34_5>=50 && LA34_5<=53)||LA34_5==55||(LA34_5>=57 && LA34_5<=59)||(LA34_5>=61 && LA34_5<=96)||(LA34_5>=98 && LA34_5<=121)) ) {
+                    alt34=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 31, 5, input);
+                        new NoViableAltException("", 34, 5, input);
 
                     throw nvae;
                 }
                 }
                 break;
             case RULE_STRING:
-            case RULE_HEX:
             case RULE_INT:
+            case RULE_HEX:
             case RULE_DECIMAL:
             case 14:
-            case 44:
-            case 48:
-            case 49:
-            case 56:
-            case 72:
-            case 73:
-            case 77:
+            case 57:
+            case 61:
+            case 62:
+            case 69:
             case 85:
-            case 87:
-            case 91:
-            case 92:
-            case 93:
-            case 99:
+            case 86:
+            case 90:
+            case 98:
             case 100:
-            case 101:
-            case 102:
-            case 103:
             case 104:
             case 105:
             case 106:
-            case 107:
-            case 109:
+            case 110:
+            case 111:
+            case 112:
+            case 113:
+            case 114:
+            case 115:
+            case 116:
+            case 117:
+            case 118:
+            case 120:
                 {
-                alt31=2;
+                alt34=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 31, 0, input);
+                    new NoViableAltException("", 34, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt31) {
+            switch (alt34) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2385:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalPerspectiveDsl.g:2755:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2385:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2385:3: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalPerspectiveDsl.g:2755:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalPerspectiveDsl.g:2756:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2385:3: ()
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2386:5: 
+                    // InternalPerspectiveDsl.g:2756:4: ()
+                    // InternalPerspectiveDsl.g:2757: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2391:2: ( ( ruleFeatureCallID ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2392:1: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:2763:4: ( ( ruleFeatureCallID ) )
+                    // InternalPerspectiveDsl.g:2764:5: ( ruleFeatureCallID )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2392:1: ( ruleFeatureCallID )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2393:3: ruleFeatureCallID
+                    // InternalPerspectiveDsl.g:2764:5: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:2765: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_ruleXAssignment5962);
+                    pushFollow(FOLLOW_32);
                     ruleFeatureCallID();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                      	        afterParserOrEnumRuleCall();
-                      	    
+
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -6855,48 +7855,48 @@
                     }
 
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
-                          
+
+                      				newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2());
+                      			
                     }
-                    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXAssignment5978);
+                    pushFollow(FOLLOW_33);
                     ruleOpSingleAssign();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              afterParserOrEnumRuleCall();
-                          
+
+                      				afterParserOrEnumRuleCall();
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2414:1: ( (lv_value_3_0= ruleXAssignment ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2415:1: (lv_value_3_0= ruleXAssignment )
+                    // InternalPerspectiveDsl.g:2786:4: ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalPerspectiveDsl.g:2787:5: (lv_value_3_0= ruleXAssignment )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2415:1: (lv_value_3_0= ruleXAssignment )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2416:3: lv_value_3_0= ruleXAssignment
+                    // InternalPerspectiveDsl.g:2787:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalPerspectiveDsl.g:2788: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_ruleXAssignment5998);
+                    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();
+                      					
                     }
 
                     }
@@ -6911,80 +7911,80 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2433:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalPerspectiveDsl.g:2807:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2433:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2434:5: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    // InternalPerspectiveDsl.g:2807:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalPerspectiveDsl.g:2808: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_ruleXAssignment6028);
+                    pushFollow(FOLLOW_38);
                     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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2442:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
-                    int alt30=2;
-                    alt30 = dfa30.predict(input);
-                    switch (alt30) {
+                    // InternalPerspectiveDsl.g:2816:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    int alt33=2;
+                    alt33 = dfa33.predict(input);
+                    switch (alt33) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2442:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalPerspectiveDsl.g:2817:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2442:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2442:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalPerspectiveDsl.g:2817:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // InternalPerspectiveDsl.g:2818:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2447:6: ( () ( ( ruleOpMultiAssign ) ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2447:7: () ( ( ruleOpMultiAssign ) )
+                            // InternalPerspectiveDsl.g:2828:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalPerspectiveDsl.g:2829:7: () ( ( ruleOpMultiAssign ) )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2447:7: ()
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2448:5: 
+                            // InternalPerspectiveDsl.g:2829:7: ()
+                            // InternalPerspectiveDsl.g:2830: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2453:2: ( ( ruleOpMultiAssign ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2454:1: ( ruleOpMultiAssign )
+                            // InternalPerspectiveDsl.g:2836:7: ( ( ruleOpMultiAssign ) )
+                            // InternalPerspectiveDsl.g:2837:8: ( ruleOpMultiAssign )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2454:1: ( ruleOpMultiAssign )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2455:3: ruleOpMultiAssign
+                            // InternalPerspectiveDsl.g:2837:8: ( ruleOpMultiAssign )
+                            // InternalPerspectiveDsl.g:2838: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_ruleXAssignment6081);
+                            pushFollow(FOLLOW_33);
                             ruleOpMultiAssign();
 
                             state._fsp--;
                             if (state.failed) return current;
                             if ( state.backtracking==0 ) {
-                               
-                              	        afterParserOrEnumRuleCall();
-                              	    
+
+                              									afterParserOrEnumRuleCall();
+                              								
                             }
 
                             }
@@ -6998,34 +7998,34 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2468:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2469:1: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalPerspectiveDsl.g:2854:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalPerspectiveDsl.g:2855:6: (lv_rightOperand_7_0= ruleXAssignment )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2469:1: (lv_rightOperand_7_0= ruleXAssignment )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2470:3: lv_rightOperand_7_0= ruleXAssignment
+                            // InternalPerspectiveDsl.g:2855:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalPerspectiveDsl.g:2856: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_ruleXAssignment6104);
+                            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();
+                              						
                             }
 
                             }
@@ -7052,14 +8052,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -7068,7 +8070,7 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2494:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    // InternalPerspectiveDsl.g:2879:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
     public final String entryRuleOpSingleAssign() throws RecognitionException {
         String current = null;
 
@@ -7076,13 +8078,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2495:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2496:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            // InternalPerspectiveDsl.g:2879:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // InternalPerspectiveDsl.g:2880:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
             }
-            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign6144);
+            pushFollow(FOLLOW_1);
             iv_ruleOpSingleAssign=ruleOpSingleAssign();
 
             state._fsp--;
@@ -7090,16 +8092,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpSingleAssign.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign6155); 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;
@@ -7108,37 +8110,40 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2503:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    // InternalPerspectiveDsl.g:2886: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2506:28: (kw= '=' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2508:2: kw= '='
+            // InternalPerspectiveDsl.g:2892:2: (kw= '=' )
+            // InternalPerspectiveDsl.g:2893:2: kw= '='
             {
-            kw=(Token)match(input,47,FOLLOW_47_in_ruleOpSingleAssign6192); if (state.failed) return current;
+            kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                      current.merge(kw);
-                      newLeafNode(kw, grammarAccess.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;
@@ -7147,7 +8152,7 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2521:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    // InternalPerspectiveDsl.g:2901:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
     public final String entryRuleOpMultiAssign() throws RecognitionException {
         String current = null;
 
@@ -7155,13 +8160,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2522:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2523:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            // InternalPerspectiveDsl.g:2901:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // InternalPerspectiveDsl.g:2902:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
             }
-            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign6232);
+            pushFollow(FOLLOW_1);
             iv_ruleOpMultiAssign=ruleOpMultiAssign();
 
             state._fsp--;
@@ -7169,16 +8174,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpMultiAssign.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign6243); 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;
@@ -7187,156 +8192,157 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2530:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
+    // InternalPerspectiveDsl.g:2908: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2533:28: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2534:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            // InternalPerspectiveDsl.g:2914:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // InternalPerspectiveDsl.g:2915:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2534:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
-            int alt33=7;
+            // InternalPerspectiveDsl.g:2915:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            int alt36=7;
             switch ( input.LA(1) ) {
-            case 51:
+            case 64:
                 {
-                alt33=1;
+                alt36=1;
                 }
                 break;
-            case 52:
+            case 65:
                 {
-                alt33=2;
+                alt36=2;
                 }
                 break;
-            case 53:
+            case 66:
                 {
-                alt33=3;
+                alt36=3;
                 }
                 break;
-            case 54:
+            case 67:
                 {
-                alt33=4;
+                alt36=4;
                 }
                 break;
-            case 55:
+            case 68:
                 {
-                alt33=5;
+                alt36=5;
                 }
                 break;
-            case 56:
+            case 69:
                 {
-                alt33=6;
+                alt36=6;
                 }
                 break;
-            case 57:
+            case 70:
                 {
-                alt33=7;
+                alt36=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 33, 0, input);
+                    new NoViableAltException("", 36, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt33) {
+            switch (alt36) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2535:2: kw= '+='
+                    // InternalPerspectiveDsl.g:2916:3: kw= '+='
                     {
-                    kw=(Token)match(input,51,FOLLOW_51_in_ruleOpMultiAssign6281); if (state.failed) return current;
+                    kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2542:2: kw= '-='
+                    // InternalPerspectiveDsl.g:2922:3: kw= '-='
                     {
-                    kw=(Token)match(input,52,FOLLOW_52_in_ruleOpMultiAssign6300); if (state.failed) return current;
+                    kw=(Token)match(input,65,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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2549:2: kw= '*='
+                    // InternalPerspectiveDsl.g:2928:3: kw= '*='
                     {
-                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpMultiAssign6319); if (state.failed) return current;
+                    kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2());
+                      		
                     }
 
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2556:2: kw= '/='
+                    // InternalPerspectiveDsl.g:2934:3: kw= '/='
                     {
-                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpMultiAssign6338); if (state.failed) return current;
+                    kw=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3());
+                      		
                     }
 
                     }
                     break;
                 case 5 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2563:2: kw= '%='
+                    // InternalPerspectiveDsl.g:2940:3: kw= '%='
                     {
-                    kw=(Token)match(input,55,FOLLOW_55_in_ruleOpMultiAssign6357); if (state.failed) return current;
+                    kw=(Token)match(input,68,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4());
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2569:6: (kw= '<' kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:2946:3: (kw= '<' kw= '<' kw= '=' )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2569:6: (kw= '<' kw= '<' kw= '=' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2570:2: kw= '<' kw= '<' kw= '='
+                    // InternalPerspectiveDsl.g:2946:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:2947:4: kw= '<' kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,56,FOLLOW_56_in_ruleOpMultiAssign6377); if (state.failed) return current;
+                    kw=(Token)match(input,69,FOLLOW_39); 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,56,FOLLOW_56_in_ruleOpMultiAssign6390); if (state.failed) return current;
+                    kw=(Token)match(input,69,FOLLOW_32); 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,47,FOLLOW_47_in_ruleOpMultiAssign6403); if (state.failed) return current;
+                    kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2());
+                      			
                     }
 
                     }
@@ -7345,35 +8351,35 @@
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2588:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalPerspectiveDsl.g:2964:3: (kw= '>' (kw= '>' )? kw= '>=' )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2588:6: (kw= '>' (kw= '>' )? kw= '>=' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2589:2: kw= '>' (kw= '>' )? kw= '>='
+                    // InternalPerspectiveDsl.g:2964:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalPerspectiveDsl.g:2965:4: kw= '>' (kw= '>' )? kw= '>='
                     {
-                    kw=(Token)match(input,57,FOLLOW_57_in_ruleOpMultiAssign6424); if (state.failed) return current;
+                    kw=(Token)match(input,70,FOLLOW_40); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2594:1: (kw= '>' )?
-                    int alt32=2;
-                    int LA32_0 = input.LA(1);
+                    // InternalPerspectiveDsl.g:2970:4: (kw= '>' )?
+                    int alt35=2;
+                    int LA35_0 = input.LA(1);
 
-                    if ( (LA32_0==57) ) {
-                        alt32=1;
+                    if ( (LA35_0==70) ) {
+                        alt35=1;
                     }
-                    switch (alt32) {
+                    switch (alt35) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2595:2: kw= '>'
+                            // InternalPerspectiveDsl.g:2971:5: kw= '>'
                             {
-                            kw=(Token)match(input,57,FOLLOW_57_in_ruleOpMultiAssign6438); if (state.failed) return current;
+                            kw=(Token)match(input,70,FOLLOW_41); 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());
+                              				
                             }
 
                             }
@@ -7381,12 +8387,12 @@
 
                     }
 
-                    kw=(Token)match(input,58,FOLLOW_58_in_ruleOpMultiAssign6453); if (state.failed) return current;
+                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2());
+                      			
                     }
 
                     }
@@ -7401,14 +8407,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -7417,7 +8425,7 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2614:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    // InternalPerspectiveDsl.g:2987:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
     public final EObject entryRuleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7425,13 +8433,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2615:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2616:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            // InternalPerspectiveDsl.g:2987:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // InternalPerspectiveDsl.g:2988:2: iv_ruleXOrExpression= ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOrExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression6494);
+            pushFollow(FOLLOW_1);
             iv_ruleXOrExpression=ruleXOrExpression();
 
             state._fsp--;
@@ -7439,16 +8447,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXOrExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression6504); 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;
@@ -7457,7 +8465,7 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2623:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:2994: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;
 
@@ -7466,98 +8474,99 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2626:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2627:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3000:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3001:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2627:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2628:5: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalPerspectiveDsl.g:3001:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3002: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_ruleXOrExpression6551);
+            pushFollow(FOLLOW_42);
             this_XAndExpression_0=ruleXAndExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XAndExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XAndExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2636:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
-            loop34:
+            // InternalPerspectiveDsl.g:3010:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            loop37:
             do {
-                int alt34=2;
-                int LA34_0 = input.LA(1);
+                int alt37=2;
+                int LA37_0 = input.LA(1);
 
-                if ( (LA34_0==59) ) {
-                    int LA34_2 = input.LA(2);
+                if ( (LA37_0==72) ) {
+                    int LA37_2 = input.LA(2);
 
-                    if ( (synpred9_InternalPerspectiveDsl()) ) {
-                        alt34=1;
+                    if ( (synpred8_InternalPerspectiveDsl()) ) {
+                        alt37=1;
                     }
 
 
                 }
 
 
-                switch (alt34) {
+                switch (alt37) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2636:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalPerspectiveDsl.g:3011:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2636:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2636:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    // InternalPerspectiveDsl.g:3011:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // InternalPerspectiveDsl.g:3012:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2641:6: ( () ( ( ruleOpOr ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2641:7: () ( ( ruleOpOr ) )
+            	    // InternalPerspectiveDsl.g:3022:5: ( () ( ( ruleOpOr ) ) )
+            	    // InternalPerspectiveDsl.g:3023:6: () ( ( ruleOpOr ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2641:7: ()
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2642:5: 
+            	    // InternalPerspectiveDsl.g:3023:6: ()
+            	    // InternalPerspectiveDsl.g:3024: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2647:2: ( ( ruleOpOr ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2648:1: ( ruleOpOr )
+            	    // InternalPerspectiveDsl.g:3030:6: ( ( ruleOpOr ) )
+            	    // InternalPerspectiveDsl.g:3031:7: ( ruleOpOr )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2648:1: ( ruleOpOr )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2649:3: ruleOpOr
+            	    // InternalPerspectiveDsl.g:3031:7: ( ruleOpOr )
+            	    // InternalPerspectiveDsl.g:3032: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_ruleXOrExpression6604);
+            	    pushFollow(FOLLOW_33);
             	    ruleOpOr();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -7571,34 +8580,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2662:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2663:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalPerspectiveDsl.g:3048:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalPerspectiveDsl.g:3049:5: (lv_rightOperand_3_0= ruleXAndExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2663:1: (lv_rightOperand_3_0= ruleXAndExpression )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2664:3: lv_rightOperand_3_0= ruleXAndExpression
+            	    // InternalPerspectiveDsl.g:3049:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalPerspectiveDsl.g:3050: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_ruleXOrExpression6627);
+            	    pushFollow(FOLLOW_42);
             	    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();
+            	      					
             	    }
 
             	    }
@@ -7611,7 +8620,7 @@
             	    break;
 
             	default :
-            	    break loop34;
+            	    break loop37;
                 }
             } while (true);
 
@@ -7622,14 +8631,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -7638,7 +8649,7 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2688:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    // InternalPerspectiveDsl.g:3072:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
     public final String entryRuleOpOr() throws RecognitionException {
         String current = null;
 
@@ -7646,13 +8657,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2689:2: (iv_ruleOpOr= ruleOpOr EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2690:2: iv_ruleOpOr= ruleOpOr EOF
+            // InternalPerspectiveDsl.g:3072:44: (iv_ruleOpOr= ruleOpOr EOF )
+            // InternalPerspectiveDsl.g:3073:2: iv_ruleOpOr= ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOrRule()); 
             }
-            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr6666);
+            pushFollow(FOLLOW_1);
             iv_ruleOpOr=ruleOpOr();
 
             state._fsp--;
@@ -7660,16 +8671,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpOr.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr6677); 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;
@@ -7678,37 +8689,40 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2697:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
+    // InternalPerspectiveDsl.g:3079: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2700:28: (kw= '||' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2702:2: kw= '||'
+            // InternalPerspectiveDsl.g:3085:2: (kw= '||' )
+            // InternalPerspectiveDsl.g:3086:2: kw= '||'
             {
-            kw=(Token)match(input,59,FOLLOW_59_in_ruleOpOr6714); if (state.failed) return current;
+            kw=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                      current.merge(kw);
-                      newLeafNode(kw, grammarAccess.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;
@@ -7717,7 +8731,7 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2715:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    // InternalPerspectiveDsl.g:3094:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
     public final EObject entryRuleXAndExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7725,13 +8739,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2716:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2717:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            // InternalPerspectiveDsl.g:3094:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // InternalPerspectiveDsl.g:3095:2: iv_ruleXAndExpression= ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAndExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression6753);
+            pushFollow(FOLLOW_1);
             iv_ruleXAndExpression=ruleXAndExpression();
 
             state._fsp--;
@@ -7739,16 +8753,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAndExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression6763); 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;
@@ -7757,7 +8771,7 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2724:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3101: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;
 
@@ -7766,98 +8780,99 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2727:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2728:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3107:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3108:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2728:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2729:5: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalPerspectiveDsl.g:3108:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3109: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_ruleXAndExpression6810);
+            pushFollow(FOLLOW_43);
             this_XEqualityExpression_0=ruleXEqualityExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XEqualityExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XEqualityExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2737:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
-            loop35:
+            // InternalPerspectiveDsl.g:3117:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            loop38:
             do {
-                int alt35=2;
-                int LA35_0 = input.LA(1);
+                int alt38=2;
+                int LA38_0 = input.LA(1);
 
-                if ( (LA35_0==60) ) {
-                    int LA35_2 = input.LA(2);
+                if ( (LA38_0==73) ) {
+                    int LA38_2 = input.LA(2);
 
-                    if ( (synpred10_InternalPerspectiveDsl()) ) {
-                        alt35=1;
+                    if ( (synpred9_InternalPerspectiveDsl()) ) {
+                        alt38=1;
                     }
 
 
                 }
 
 
-                switch (alt35) {
+                switch (alt38) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2737:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalPerspectiveDsl.g:3118:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2737:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2737:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    // InternalPerspectiveDsl.g:3118:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // InternalPerspectiveDsl.g:3119:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2742:6: ( () ( ( ruleOpAnd ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2742:7: () ( ( ruleOpAnd ) )
+            	    // InternalPerspectiveDsl.g:3129:5: ( () ( ( ruleOpAnd ) ) )
+            	    // InternalPerspectiveDsl.g:3130:6: () ( ( ruleOpAnd ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2742:7: ()
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2743:5: 
+            	    // InternalPerspectiveDsl.g:3130:6: ()
+            	    // InternalPerspectiveDsl.g:3131: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2748:2: ( ( ruleOpAnd ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2749:1: ( ruleOpAnd )
+            	    // InternalPerspectiveDsl.g:3137:6: ( ( ruleOpAnd ) )
+            	    // InternalPerspectiveDsl.g:3138:7: ( ruleOpAnd )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2749:1: ( ruleOpAnd )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2750:3: ruleOpAnd
+            	    // InternalPerspectiveDsl.g:3138:7: ( ruleOpAnd )
+            	    // InternalPerspectiveDsl.g:3139: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_ruleXAndExpression6863);
+            	    pushFollow(FOLLOW_33);
             	    ruleOpAnd();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -7871,34 +8886,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2763:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2764:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalPerspectiveDsl.g:3155:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalPerspectiveDsl.g:3156:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2764:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2765:3: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    // InternalPerspectiveDsl.g:3156:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalPerspectiveDsl.g:3157: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_ruleXAndExpression6886);
+            	    pushFollow(FOLLOW_43);
             	    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();
+            	      					
             	    }
 
             	    }
@@ -7911,843 +8926,6 @@
             	    break;
 
             	default :
-            	    break loop35;
-                }
-            } 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2789: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2790:2: (iv_ruleOpAnd= ruleOpAnd EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2791:2: iv_ruleOpAnd= ruleOpAnd EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpAndRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd6925);
-            iv_ruleOpAnd=ruleOpAnd();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpAnd.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd6936); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2798: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2801:28: (kw= '&&' )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2803:2: kw= '&&'
-            {
-            kw=(Token)match(input,60,FOLLOW_60_in_ruleOpAnd6973); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2816: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2817:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2818:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression7012);
-            iv_ruleXEqualityExpression=ruleXEqualityExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXEqualityExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression7022); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2825: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2828:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2829:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2829:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2830: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_ruleXEqualityExpression7069);
-            this_XRelationalExpression_0=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XRelationalExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2838:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
-            loop36:
-            do {
-                int alt36=2;
-                switch ( input.LA(1) ) {
-                case 61:
-                    {
-                    int LA36_2 = input.LA(2);
-
-                    if ( (synpred11_InternalPerspectiveDsl()) ) {
-                        alt36=1;
-                    }
-
-
-                    }
-                    break;
-                case 62:
-                    {
-                    int LA36_3 = input.LA(2);
-
-                    if ( (synpred11_InternalPerspectiveDsl()) ) {
-                        alt36=1;
-                    }
-
-
-                    }
-                    break;
-                case 63:
-                    {
-                    int LA36_4 = input.LA(2);
-
-                    if ( (synpred11_InternalPerspectiveDsl()) ) {
-                        alt36=1;
-                    }
-
-
-                    }
-                    break;
-                case 64:
-                    {
-                    int LA36_5 = input.LA(2);
-
-                    if ( (synpred11_InternalPerspectiveDsl()) ) {
-                        alt36=1;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt36) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2838:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2838:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2838:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2843:6: ( () ( ( ruleOpEquality ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2843:7: () ( ( ruleOpEquality ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2843:7: ()
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2844:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2849:2: ( ( ruleOpEquality ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2850:1: ( ruleOpEquality )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2850:1: ( ruleOpEquality )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2851: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_ruleXEqualityExpression7122);
-            	    ruleOpEquality();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2864:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2865:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2865:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2866:3: lv_rightOperand_3_0= ruleXRelationalExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression7145);
-            	    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 loop36;
-                }
-            } 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2890: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2891:2: (iv_ruleOpEquality= ruleOpEquality EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2892:2: iv_ruleOpEquality= ruleOpEquality EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpEqualityRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality7184);
-            iv_ruleOpEquality=ruleOpEquality();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpEquality.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality7195); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2899: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2902:28: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2903:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2903:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            int alt37=4;
-            switch ( input.LA(1) ) {
-            case 61:
-                {
-                alt37=1;
-                }
-                break;
-            case 62:
-                {
-                alt37=2;
-                }
-                break;
-            case 63:
-                {
-                alt37=3;
-                }
-                break;
-            case 64:
-                {
-                alt37=4;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 37, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt37) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2904:2: kw= '=='
-                    {
-                    kw=(Token)match(input,61,FOLLOW_61_in_ruleOpEquality7233); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2911:2: kw= '!='
-                    {
-                    kw=(Token)match(input,62,FOLLOW_62_in_ruleOpEquality7252); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2918:2: kw= '==='
-                    {
-                    kw=(Token)match(input,63,FOLLOW_63_in_ruleOpEquality7271); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2925:2: kw= '!=='
-                    {
-                    kw=(Token)match(input,64,FOLLOW_64_in_ruleOpEquality7290); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2938: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2939:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2940:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression7330);
-            iv_ruleXRelationalExpression=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXRelationalExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression7340); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2947: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2950: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2951: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2951: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2952: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_ruleXRelationalExpression7387);
-            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XOtherOperatorExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2960:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
-            loop38:
-            do {
-                int alt38=3;
-                switch ( input.LA(1) ) {
-                case 56:
-                    {
-                    int LA38_2 = input.LA(2);
-
-                    if ( (synpred13_InternalPerspectiveDsl()) ) {
-                        alt38=2;
-                    }
-
-
-                    }
-                    break;
-                case 57:
-                    {
-                    int LA38_3 = input.LA(2);
-
-                    if ( (synpred13_InternalPerspectiveDsl()) ) {
-                        alt38=2;
-                    }
-
-
-                    }
-                    break;
-                case 65:
-                    {
-                    int LA38_4 = input.LA(2);
-
-                    if ( (synpred12_InternalPerspectiveDsl()) ) {
-                        alt38=1;
-                    }
-
-
-                    }
-                    break;
-                case 58:
-                    {
-                    int LA38_5 = input.LA(2);
-
-                    if ( (synpred13_InternalPerspectiveDsl()) ) {
-                        alt38=2;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt38) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2960:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2960:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2960:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2960:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2960:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2962:5: ( () otherlv_2= 'instanceof' )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2962:6: () otherlv_2= 'instanceof'
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2962:6: ()
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2963:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    otherlv_2=(Token)match(input,65,FOLLOW_65_in_ruleXRelationalExpression7423); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
-            	          
-            	    }
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2972:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2973:1: (lv_type_3_0= ruleJvmTypeReference )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2973:1: (lv_type_3_0= ruleJvmTypeReference )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2974:3: lv_type_3_0= ruleJvmTypeReference
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression7446);
-            	    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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2991:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2991:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2991:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2991:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2991:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2996:6: ( () ( ( ruleOpCompare ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2996:7: () ( ( ruleOpCompare ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2996:7: ()
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:2997:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3002:2: ( ( ruleOpCompare ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3003:1: ( ruleOpCompare )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3003:1: ( ruleOpCompare )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3004: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_ruleXRelationalExpression7507);
-            	    ruleOpCompare();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3017:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3018:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3018:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3019:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression7530);
-            	    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 loop38;
                 }
             } while (true);
@@ -8759,373 +8937,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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3043:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
-    public final String entryRuleOpCompare() throws RecognitionException {
+    // $ANTLR start "entryRuleOpAnd"
+    // InternalPerspectiveDsl.g:3179: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3044:2: (iv_ruleOpCompare= ruleOpCompare EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3045:2: iv_ruleOpCompare= ruleOpCompare EOF
+            // InternalPerspectiveDsl.g:3179:45: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // InternalPerspectiveDsl.g:3180:2: iv_ruleOpAnd= ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpCompareRule()); 
+               newCompositeNode(grammarAccess.getOpAndRule()); 
             }
-            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare7570);
-            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_entryRuleOpCompare7581); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3052:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
-    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
+    // $ANTLR start "ruleOpAnd"
+    // InternalPerspectiveDsl.g:3186: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3055:28: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3056:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalPerspectiveDsl.g:3192:2: (kw= '&&' )
+            // InternalPerspectiveDsl.g:3193:2: kw= '&&'
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3056:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
-            int alt39=4;
-            switch ( input.LA(1) ) {
-            case 58:
-                {
-                alt39=1;
-                }
-                break;
-            case 56:
-                {
-                int LA39_2 = input.LA(2);
+            kw=(Token)match(input,73,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
 
-                if ( (LA39_2==EOF||(LA39_2>=RULE_ID && LA39_2<=RULE_DECIMAL)||LA39_2==14||LA39_2==16||LA39_2==44||(LA39_2>=48 && LA39_2<=49)||LA39_2==56||(LA39_2>=72 && LA39_2<=73)||LA39_2==77||LA39_2==85||LA39_2==87||(LA39_2>=91 && LA39_2<=93)||(LA39_2>=96 && LA39_2<=107)||LA39_2==109) ) {
-                    alt39=4;
-                }
-                else if ( (LA39_2==47) ) {
-                    alt39=2;
-                }
-                else {
-                    if (state.backtracking>0) {state.failed=true; return current;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 39, 2, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case 57:
-                {
-                alt39=3;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 39, 0, input);
-
-                throw nvae;
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
+              	
             }
 
-            switch (alt39) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3057:2: kw= '>='
-                    {
-                    kw=(Token)match(input,58,FOLLOW_58_in_ruleOpCompare7619); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3063:6: (kw= '<' kw= '=' )
-                    {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3063:6: (kw= '<' kw= '=' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3064:2: kw= '<' kw= '='
-                    {
-                    kw=(Token)match(input,56,FOLLOW_56_in_ruleOpCompare7639); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
-                          
-                    }
-                    kw=(Token)match(input,47,FOLLOW_47_in_ruleOpCompare7652); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3077:2: kw= '>'
-                    {
-                    kw=(Token)match(input,57,FOLLOW_57_in_ruleOpCompare7672); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3084:2: kw= '<'
-                    {
-                    kw=(Token)match(input,56,FOLLOW_56_in_ruleOpCompare7691); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3097:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
-    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // InternalPerspectiveDsl.g:3201: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3098:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3099:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            // InternalPerspectiveDsl.g:3201:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // InternalPerspectiveDsl.g:3202:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
+               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression7731);
-            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_entryRuleXOtherOperatorExpression7741); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3106: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"
+    // InternalPerspectiveDsl.g:3208: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3109:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3110:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3214:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3215:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3110:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3111:5: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalPerspectiveDsl.g:3215:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3216: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_ruleXOtherOperatorExpression7788);
-            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+            pushFollow(FOLLOW_44);
+            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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3119:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
-            loop40:
+            // InternalPerspectiveDsl.g:3224:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            loop39:
             do {
-                int alt40=2;
-                alt40 = dfa40.predict(input);
-                switch (alt40) {
+                int alt39=2;
+                switch ( input.LA(1) ) {
+                case 74:
+                    {
+                    int LA39_2 = input.LA(2);
+
+                    if ( (synpred10_InternalPerspectiveDsl()) ) {
+                        alt39=1;
+                    }
+
+
+                    }
+                    break;
+                case 75:
+                    {
+                    int LA39_3 = input.LA(2);
+
+                    if ( (synpred10_InternalPerspectiveDsl()) ) {
+                        alt39=1;
+                    }
+
+
+                    }
+                    break;
+                case 76:
+                    {
+                    int LA39_4 = input.LA(2);
+
+                    if ( (synpred10_InternalPerspectiveDsl()) ) {
+                        alt39=1;
+                    }
+
+
+                    }
+                    break;
+                case 77:
+                    {
+                    int LA39_5 = input.LA(2);
+
+                    if ( (synpred10_InternalPerspectiveDsl()) ) {
+                        alt39=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt39) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3119:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalPerspectiveDsl.g:3225:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3119:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3119:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    // InternalPerspectiveDsl.g:3225:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // InternalPerspectiveDsl.g:3226:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3124:6: ( () ( ( ruleOpOther ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3124:7: () ( ( ruleOpOther ) )
+            	    // InternalPerspectiveDsl.g:3236:5: ( () ( ( ruleOpEquality ) ) )
+            	    // InternalPerspectiveDsl.g:3237:6: () ( ( ruleOpEquality ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3124:7: ()
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3125:5: 
+            	    // InternalPerspectiveDsl.g:3237:6: ()
+            	    // InternalPerspectiveDsl.g:3238: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3130:2: ( ( ruleOpOther ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3131:1: ( ruleOpOther )
+            	    // InternalPerspectiveDsl.g:3244:6: ( ( ruleOpEquality ) )
+            	    // InternalPerspectiveDsl.g:3245:7: ( ruleOpEquality )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3131:1: ( ruleOpOther )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3132:3: ruleOpOther
+            	    // InternalPerspectiveDsl.g:3245:7: ( ruleOpEquality )
+            	    // InternalPerspectiveDsl.g:3246: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_ruleXOtherOperatorExpression7841);
-            	    ruleOpOther();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3145:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3146:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3146:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3147:3: lv_rightOperand_3_0= ruleXAdditiveExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression7864);
-            	    lv_rightOperand_3_0=ruleXAdditiveExpression();
+            	    pushFollow(FOLLOW_33);
+            	    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();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:3262:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalPerspectiveDsl.g:3263:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    {
+            	    // InternalPerspectiveDsl.g:3263:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalPerspectiveDsl.g:3264:6: lv_rightOperand_3_0= ruleXRelationalExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_44);
+            	    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();
+            	      					
             	    }
 
             	    }
@@ -9138,7 +9267,7 @@
             	    break;
 
             	default :
-            	    break loop40;
+            	    break loop39;
                 }
             } while (true);
 
@@ -9149,14 +9278,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"
+    // InternalPerspectiveDsl.g:3286:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    public final String entryRuleOpEquality() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:3286:50: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // InternalPerspectiveDsl.g:3287: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"
+    // InternalPerspectiveDsl.g:3293: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 {
+            // InternalPerspectiveDsl.g:3299:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // InternalPerspectiveDsl.g:3300:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            {
+            // InternalPerspectiveDsl.g:3300:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            int alt40=4;
+            switch ( input.LA(1) ) {
+            case 74:
+                {
+                alt40=1;
+                }
+                break;
+            case 75:
+                {
+                alt40=2;
+                }
+                break;
+            case 76:
+                {
+                alt40=3;
+                }
+                break;
+            case 77:
+                {
+                alt40=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 40, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt40) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3301:3: kw= '=='
+                    {
+                    kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:3307:3: kw= '!='
+                    {
+                    kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:3313:3: kw= '==='
+                    {
+                    kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalPerspectiveDsl.g:3319:3: kw= '!=='
+                    {
+                    kw=(Token)match(input,77,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"
+    // InternalPerspectiveDsl.g:3328:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXRelationalExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:3328:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // InternalPerspectiveDsl.g:3329: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"
+    // InternalPerspectiveDsl.g:3335: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 {
+            // InternalPerspectiveDsl.g:3341:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:3342:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            {
+            // InternalPerspectiveDsl.g:3342:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalPerspectiveDsl.g:3343: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_45);
+            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XOtherOperatorExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalPerspectiveDsl.g:3351:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            loop41:
+            do {
+                int alt41=3;
+                switch ( input.LA(1) ) {
+                case 69:
+                    {
+                    int LA41_2 = input.LA(2);
+
+                    if ( (synpred12_InternalPerspectiveDsl()) ) {
+                        alt41=2;
+                    }
+
+
+                    }
+                    break;
+                case 70:
+                    {
+                    int LA41_3 = input.LA(2);
+
+                    if ( (synpred12_InternalPerspectiveDsl()) ) {
+                        alt41=2;
+                    }
+
+
+                    }
+                    break;
+                case 78:
+                    {
+                    int LA41_4 = input.LA(2);
+
+                    if ( (synpred11_InternalPerspectiveDsl()) ) {
+                        alt41=1;
+                    }
+
+
+                    }
+                    break;
+                case 71:
+                    {
+                    int LA41_5 = input.LA(2);
+
+                    if ( (synpred12_InternalPerspectiveDsl()) ) {
+                        alt41=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt41) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:3352:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3352:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalPerspectiveDsl.g:3353:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3353:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // InternalPerspectiveDsl.g:3354:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    {
+            	    // InternalPerspectiveDsl.g:3360:6: ( () otherlv_2= 'instanceof' )
+            	    // InternalPerspectiveDsl.g:3361:7: () otherlv_2= 'instanceof'
+            	    {
+            	    // InternalPerspectiveDsl.g:3361:7: ()
+            	    // InternalPerspectiveDsl.g:3362:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,78,FOLLOW_46); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:3374:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:3375:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // InternalPerspectiveDsl.g:3375:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:3376:7: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_45);
+            	    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 :
+            	    // InternalPerspectiveDsl.g:3395:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3395:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalPerspectiveDsl.g:3396:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3396:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // InternalPerspectiveDsl.g:3397:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3407:6: ( () ( ( ruleOpCompare ) ) )
+            	    // InternalPerspectiveDsl.g:3408:7: () ( ( ruleOpCompare ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3408:7: ()
+            	    // InternalPerspectiveDsl.g:3409:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:3415:7: ( ( ruleOpCompare ) )
+            	    // InternalPerspectiveDsl.g:3416:8: ( ruleOpCompare )
+            	    {
+            	    // InternalPerspectiveDsl.g:3416:8: ( ruleOpCompare )
+            	    // InternalPerspectiveDsl.g:3417: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_33);
+            	    ruleOpCompare();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      									afterParserOrEnumRuleCall();
+            	      								
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:3433:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalPerspectiveDsl.g:3434:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    {
+            	    // InternalPerspectiveDsl.g:3434:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalPerspectiveDsl.g:3435:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_45);
+            	    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 loop41;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXRelationalExpression"
+
+
+    // $ANTLR start "entryRuleOpCompare"
+    // InternalPerspectiveDsl.g:3458:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    public final String entryRuleOpCompare() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpCompare = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:3458:49: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // InternalPerspectiveDsl.g:3459: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"
+    // InternalPerspectiveDsl.g:3465: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 {
+            // InternalPerspectiveDsl.g:3471:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // InternalPerspectiveDsl.g:3472:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            {
+            // InternalPerspectiveDsl.g:3472:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            int alt42=4;
+            switch ( input.LA(1) ) {
+            case 71:
+                {
+                alt42=1;
+                }
+                break;
+            case 69:
+                {
+                int LA42_2 = input.LA(2);
+
+                if ( (LA42_2==60) ) {
+                    alt42=2;
+                }
+                else if ( (LA42_2==EOF||(LA42_2>=RULE_ID && LA42_2<=RULE_DECIMAL)||LA42_2==14||(LA42_2>=50 && LA42_2<=52)||LA42_2==57||(LA42_2>=61 && LA42_2<=62)||LA42_2==69||(LA42_2>=85 && LA42_2<=86)||LA42_2==90||LA42_2==98||LA42_2==100||(LA42_2>=104 && LA42_2<=106)||(LA42_2>=109 && LA42_2<=118)||LA42_2==120) ) {
+                    alt42=4;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 42, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 70:
+                {
+                alt42=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 42, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt42) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3473:3: kw= '>='
+                    {
+                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:3479:3: (kw= '<' kw= '=' )
+                    {
+                    // InternalPerspectiveDsl.g:3479:3: (kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:3480:4: kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,69,FOLLOW_32); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
+                      			
+                    }
+                    kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:3492:3: kw= '>'
+                    {
+                    kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalPerspectiveDsl.g:3498:3: kw= '<'
+                    {
+                    kw=(Token)match(input,69,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"
+    // InternalPerspectiveDsl.g:3507:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXOtherOperatorExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:3507:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // InternalPerspectiveDsl.g:3508: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"
+    // InternalPerspectiveDsl.g:3514: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 {
+            // InternalPerspectiveDsl.g:3520:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3521:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            {
+            // InternalPerspectiveDsl.g:3521:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3522:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_47);
+            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XAdditiveExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalPerspectiveDsl.g:3530:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            loop43:
+            do {
+                int alt43=2;
+                alt43 = dfa43.predict(input);
+                switch (alt43) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:3531:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3531:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // InternalPerspectiveDsl.g:3532:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3542:5: ( () ( ( ruleOpOther ) ) )
+            	    // InternalPerspectiveDsl.g:3543:6: () ( ( ruleOpOther ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3543:6: ()
+            	    // InternalPerspectiveDsl.g:3544:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:3550:6: ( ( ruleOpOther ) )
+            	    // InternalPerspectiveDsl.g:3551:7: ( ruleOpOther )
+            	    {
+            	    // InternalPerspectiveDsl.g:3551:7: ( ruleOpOther )
+            	    // InternalPerspectiveDsl.g:3552: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_33);
+            	    ruleOpOther();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:3568:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalPerspectiveDsl.g:3569:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    {
+            	    // InternalPerspectiveDsl.g:3569:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalPerspectiveDsl.g:3570:6: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_47);
+            	    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 loop43;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
         finally {
         }
         return current;
@@ -9165,7 +10200,7 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3171:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    // InternalPerspectiveDsl.g:3592:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
     public final String entryRuleOpOther() throws RecognitionException {
         String current = null;
 
@@ -9173,13 +10208,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3172:2: (iv_ruleOpOther= ruleOpOther EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3173:2: iv_ruleOpOther= ruleOpOther EOF
+            // InternalPerspectiveDsl.g:3592:47: (iv_ruleOpOther= ruleOpOther EOF )
+            // InternalPerspectiveDsl.g:3593:2: iv_ruleOpOther= ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOtherRule()); 
             }
-            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther7903);
+            pushFollow(FOLLOW_1);
             iv_ruleOpOther=ruleOpOther();
 
             state._fsp--;
@@ -9187,16 +10222,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpOther.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther7914); 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;
@@ -9205,67 +10240,68 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3180:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
+    // InternalPerspectiveDsl.g:3599: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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3183:28: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3184:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalPerspectiveDsl.g:3605:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // InternalPerspectiveDsl.g:3606:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3184:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
-            int alt43=9;
-            alt43 = dfa43.predict(input);
-            switch (alt43) {
+            // InternalPerspectiveDsl.g:3606:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            int alt46=9;
+            alt46 = dfa46.predict(input);
+            switch (alt46) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3185:2: kw= '->'
+                    // InternalPerspectiveDsl.g:3607:3: kw= '->'
                     {
-                    kw=(Token)match(input,66,FOLLOW_66_in_ruleOpOther7952); 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.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3192:2: kw= '..<'
+                    // InternalPerspectiveDsl.g:3613:3: kw= '..<'
                     {
-                    kw=(Token)match(input,67,FOLLOW_67_in_ruleOpOther7971); 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.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1());
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3198:6: (kw= '>' kw= '..' )
+                    // InternalPerspectiveDsl.g:3619:3: (kw= '>' kw= '..' )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3198:6: (kw= '>' kw= '..' )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3199:2: kw= '>' kw= '..'
+                    // InternalPerspectiveDsl.g:3619:3: (kw= '>' kw= '..' )
+                    // InternalPerspectiveDsl.g:3620:4: kw= '>' kw= '..'
                     {
-                    kw=(Token)match(input,57,FOLLOW_57_in_ruleOpOther7991); if (state.failed) return current;
+                    kw=(Token)match(input,70,FOLLOW_48); 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,68,FOLLOW_68_in_ruleOpOther8004); 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.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1());
+                      			
                     }
 
                     }
@@ -9274,61 +10310,61 @@
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3212:2: kw= '..'
+                    // InternalPerspectiveDsl.g:3632:3: kw= '..'
                     {
-                    kw=(Token)match(input,68,FOLLOW_68_in_ruleOpOther8024); 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.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3());
+                      		
                     }
 
                     }
                     break;
                 case 5 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3219:2: kw= '=>'
+                    // InternalPerspectiveDsl.g:3638:3: kw= '=>'
                     {
-                    kw=(Token)match(input,69,FOLLOW_69_in_ruleOpOther8043); 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.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4());
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3225:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalPerspectiveDsl.g:3644:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3225:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3226:2: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalPerspectiveDsl.g:3644:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalPerspectiveDsl.g:3645:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     {
-                    kw=(Token)match(input,57,FOLLOW_57_in_ruleOpOther8063); if (state.failed) return current;
+                    kw=(Token)match(input,70,FOLLOW_49); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3231:1: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
-                    int alt41=2;
-                    int LA41_0 = input.LA(1);
+                    // InternalPerspectiveDsl.g:3650:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    int alt44=2;
+                    int LA44_0 = input.LA(1);
 
-                    if ( (LA41_0==57) ) {
-                        int LA41_1 = input.LA(2);
+                    if ( (LA44_0==70) ) {
+                        int LA44_1 = input.LA(2);
 
-                        if ( (LA41_1==EOF||(LA41_1>=RULE_ID && LA41_1<=RULE_DECIMAL)||LA41_1==14||LA41_1==16||LA41_1==44||(LA41_1>=48 && LA41_1<=49)||LA41_1==56||(LA41_1>=72 && LA41_1<=73)||LA41_1==77||LA41_1==85||LA41_1==87||(LA41_1>=91 && LA41_1<=93)||(LA41_1>=96 && LA41_1<=107)||LA41_1==109) ) {
-                            alt41=2;
+                        if ( (LA44_1==EOF||(LA44_1>=RULE_ID && LA44_1<=RULE_DECIMAL)||LA44_1==14||(LA44_1>=50 && LA44_1<=52)||LA44_1==57||(LA44_1>=61 && LA44_1<=62)||LA44_1==69||(LA44_1>=85 && LA44_1<=86)||LA44_1==90||LA44_1==98||LA44_1==100||(LA44_1>=104 && LA44_1<=106)||(LA44_1>=109 && LA44_1<=118)||LA44_1==120) ) {
+                            alt44=2;
                         }
-                        else if ( (LA41_1==57) && (synpred15_InternalPerspectiveDsl())) {
-                            alt41=1;
+                        else if ( (LA44_1==70) && (synpred14_InternalPerspectiveDsl())) {
+                            alt44=1;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 41, 1, input);
+                                new NoViableAltException("", 44, 1, input);
 
                             throw nvae;
                         }
@@ -9336,33 +10372,33 @@
                     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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3231:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalPerspectiveDsl.g:3651:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3231:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3231:3: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            // InternalPerspectiveDsl.g:3651:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalPerspectiveDsl.g:3652:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3235:5: (kw= '>' kw= '>' )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3236:2: kw= '>' kw= '>'
+                            // InternalPerspectiveDsl.g:3657:6: (kw= '>' kw= '>' )
+                            // InternalPerspectiveDsl.g:3658:7: kw= '>' kw= '>'
                             {
-                            kw=(Token)match(input,57,FOLLOW_57_in_ruleOpOther8094); if (state.failed) return current;
+                            kw=(Token)match(input,70,FOLLOW_49); 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,57,FOLLOW_57_in_ruleOpOther8107); if (state.failed) return current;
+                            kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
-                                  
+                              							current.merge(kw);
+                              							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1());
+                              						
                             }
 
                             }
@@ -9374,14 +10410,14 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3249:2: kw= '>'
+                            // InternalPerspectiveDsl.g:3671:5: kw= '>'
                             {
-                            kw=(Token)match(input,57,FOLLOW_57_in_ruleOpOther8128); if (state.failed) return current;
+                            kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1());
+                              				
                             }
 
                             }
@@ -9396,72 +10432,72 @@
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3255:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalPerspectiveDsl.g:3679:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3255:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3256:2: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalPerspectiveDsl.g:3679:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalPerspectiveDsl.g:3680:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     {
-                    kw=(Token)match(input,56,FOLLOW_56_in_ruleOpOther8150); if (state.failed) return current;
+                    kw=(Token)match(input,69,FOLLOW_50); 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3261:1: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
-                    int alt42=3;
-                    int LA42_0 = input.LA(1);
+                    // InternalPerspectiveDsl.g:3685:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    int alt45=3;
+                    int LA45_0 = input.LA(1);
 
-                    if ( (LA42_0==56) ) {
-                        int LA42_1 = input.LA(2);
+                    if ( (LA45_0==69) ) {
+                        int LA45_1 = input.LA(2);
 
-                        if ( (synpred16_InternalPerspectiveDsl()) ) {
-                            alt42=1;
+                        if ( (synpred15_InternalPerspectiveDsl()) ) {
+                            alt45=1;
                         }
                         else if ( (true) ) {
-                            alt42=2;
+                            alt45=2;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 42, 1, input);
+                                new NoViableAltException("", 45, 1, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( (LA42_0==69) ) {
-                        alt42=3;
+                    else if ( (LA45_0==82) ) {
+                        alt45=3;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 42, 0, input);
+                            new NoViableAltException("", 45, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt42) {
+                    switch (alt45) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3261:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalPerspectiveDsl.g:3686:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3261:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3261:3: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            // InternalPerspectiveDsl.g:3686:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalPerspectiveDsl.g:3687:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                             {
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3265:5: (kw= '<' kw= '<' )
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3266:2: kw= '<' kw= '<'
+                            // InternalPerspectiveDsl.g:3692:6: (kw= '<' kw= '<' )
+                            // InternalPerspectiveDsl.g:3693:7: kw= '<' kw= '<'
                             {
-                            kw=(Token)match(input,56,FOLLOW_56_in_ruleOpOther8181); if (state.failed) return current;
+                            kw=(Token)match(input,69,FOLLOW_39); 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,56,FOLLOW_56_in_ruleOpOther8194); if (state.failed) return current;
+                            kw=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
-                                  
+                              							current.merge(kw);
+                              							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1());
+                              						
                             }
 
                             }
@@ -9473,27 +10509,27 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3279:2: kw= '<'
+                            // InternalPerspectiveDsl.g:3706:5: kw= '<'
                             {
-                            kw=(Token)match(input,56,FOLLOW_56_in_ruleOpOther8215); if (state.failed) return current;
+                            kw=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1());
+                              				
                             }
 
                             }
                             break;
                         case 3 :
-                            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3286:2: kw= '=>'
+                            // InternalPerspectiveDsl.g:3712:5: kw= '=>'
                             {
-                            kw=(Token)match(input,69,FOLLOW_69_in_ruleOpOther8234); 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.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2());
+                              				
                             }
 
                             }
@@ -9508,27 +10544,27 @@
                     }
                     break;
                 case 8 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3293:2: kw= '<>'
+                    // InternalPerspectiveDsl.g:3720:3: kw= '<>'
                     {
-                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpOther8255); 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().getLessThanSignGreaterThanSignKeyword_7()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7());
+                      		
                     }
 
                     }
                     break;
                 case 9 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3300:2: kw= '?:'
+                    // InternalPerspectiveDsl.g:3726:3: kw= '?:'
                     {
-                    kw=(Token)match(input,71,FOLLOW_71_in_ruleOpOther8274); 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().getQuestionMarkColonKeyword_8()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8());
+                      		
                     }
 
                     }
@@ -9540,14 +10576,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9556,7 +10594,7 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3313:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    // InternalPerspectiveDsl.g:3735:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
     public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9564,13 +10602,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3314:2: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3315:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            // InternalPerspectiveDsl.g:3735:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // InternalPerspectiveDsl.g:3736:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression8314);
+            pushFollow(FOLLOW_1);
             iv_ruleXAdditiveExpression=ruleXAdditiveExpression();
 
             state._fsp--;
@@ -9578,16 +10616,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAdditiveExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression8324); 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;
@@ -9596,7 +10634,7 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3322:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3742: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;
 
@@ -9605,107 +10643,108 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3325:28: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3326:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3748:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3749:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3326:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3327:5: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            // InternalPerspectiveDsl.g:3749:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3750:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression8371);
+            pushFollow(FOLLOW_51);
             this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XMultiplicativeExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XMultiplicativeExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3335:1: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
-            loop44:
+            // InternalPerspectiveDsl.g:3758:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            loop47:
             do {
-                int alt44=2;
-                int LA44_0 = input.LA(1);
+                int alt47=2;
+                int LA47_0 = input.LA(1);
 
-                if ( (LA44_0==72) ) {
-                    int LA44_2 = input.LA(2);
+                if ( (LA47_0==85) ) {
+                    int LA47_2 = input.LA(2);
 
-                    if ( (synpred17_InternalPerspectiveDsl()) ) {
-                        alt44=1;
+                    if ( (synpred16_InternalPerspectiveDsl()) ) {
+                        alt47=1;
                     }
 
 
                 }
-                else if ( (LA44_0==73) ) {
-                    int LA44_3 = input.LA(2);
+                else if ( (LA47_0==86) ) {
+                    int LA47_3 = input.LA(2);
 
-                    if ( (synpred17_InternalPerspectiveDsl()) ) {
-                        alt44=1;
+                    if ( (synpred16_InternalPerspectiveDsl()) ) {
+                        alt47=1;
                     }
 
 
                 }
 
 
-                switch (alt44) {
+                switch (alt47) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3335:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalPerspectiveDsl.g:3759:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3335:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3335:3: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    // InternalPerspectiveDsl.g:3759:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // InternalPerspectiveDsl.g:3760:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3340:6: ( () ( ( ruleOpAdd ) ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3340:7: () ( ( ruleOpAdd ) )
+            	    // InternalPerspectiveDsl.g:3770:5: ( () ( ( ruleOpAdd ) ) )
+            	    // InternalPerspectiveDsl.g:3771:6: () ( ( ruleOpAdd ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3340:7: ()
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3341:5: 
+            	    // InternalPerspectiveDsl.g:3771:6: ()
+            	    // InternalPerspectiveDsl.g:3772:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3346:2: ( ( ruleOpAdd ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3347:1: ( ruleOpAdd )
+            	    // InternalPerspectiveDsl.g:3778:6: ( ( ruleOpAdd ) )
+            	    // InternalPerspectiveDsl.g:3779:7: ( ruleOpAdd )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3347:1: ( ruleOpAdd )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3348:3: ruleOpAdd
+            	    // InternalPerspectiveDsl.g:3779:7: ( ruleOpAdd )
+            	    // InternalPerspectiveDsl.g:3780:8: ruleOpAdd
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
-            	      	        }
-            	              
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+            	      								}
+            	      							
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
+
+            	      								newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
             	    }
-            	    pushFollow(FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression8424);
+            	    pushFollow(FOLLOW_33);
             	    ruleOpAdd();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -9719,34 +10758,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3361:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3362:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalPerspectiveDsl.g:3796:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalPerspectiveDsl.g:3797:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3362:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
-            	    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3363:3: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    // InternalPerspectiveDsl.g:3797:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalPerspectiveDsl.g:3798:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
-            	      	    
+
+            	      						newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0());
+            	      					
             	    }
-            	    pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression8447);
+            	    pushFollow(FOLLOW_51);
             	    lv_rightOperand_3_0=ruleXMultiplicativeExpression();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_3_0, 
-            	              		"XMultiplicativeExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XMultiplicativeExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -9759,7 +10798,7 @@
             	    break;
 
             	default :
-            	    break loop44;
+            	    break loop47;
                 }
             } while (true);
 
@@ -9770,14 +10809,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9786,7 +10827,7 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3387:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    // InternalPerspectiveDsl.g:3820:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
     public final String entryRuleOpAdd() throws RecognitionException {
         String current = null;
 
@@ -9794,13 +10835,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3388:2: (iv_ruleOpAdd= ruleOpAdd EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3389:2: iv_ruleOpAdd= ruleOpAdd EOF
+            // InternalPerspectiveDsl.g:3820:45: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // InternalPerspectiveDsl.g:3821:2: iv_ruleOpAdd= ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpAddRule()); 
             }
-            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd8486);
+            pushFollow(FOLLOW_1);
             iv_ruleOpAdd=ruleOpAdd();
 
             state._fsp--;
@@ -9808,16 +10849,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpAdd.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd8497); 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;
@@ -9826,58 +10867,59 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3396:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    // InternalPerspectiveDsl.g:3827:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
     public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3399:28: ( (kw= '+' | kw= '-' ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3400:1: (kw= '+' | kw= '-' )
-            {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3400:1: (kw= '+' | kw= '-' )
-            int alt45=2;
-            int LA45_0 = input.LA(1);
 
-            if ( (LA45_0==72) ) {
-                alt45=1;
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:3833:2: ( (kw= '+' | kw= '-' ) )
+            // InternalPerspectiveDsl.g:3834:2: (kw= '+' | kw= '-' )
+            {
+            // InternalPerspectiveDsl.g:3834:2: (kw= '+' | kw= '-' )
+            int alt48=2;
+            int LA48_0 = input.LA(1);
+
+            if ( (LA48_0==85) ) {
+                alt48=1;
             }
-            else if ( (LA45_0==73) ) {
-                alt45=2;
+            else if ( (LA48_0==86) ) {
+                alt48=2;
             }
             else {
                 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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3401:2: kw= '+'
+                    // InternalPerspectiveDsl.g:3835:3: kw= '+'
                     {
-                    kw=(Token)match(input,72,FOLLOW_72_in_ruleOpAdd8535); 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.getOpAddAccess().getPlusSignKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3408:2: kw= '-'
+                    // InternalPerspectiveDsl.g:3841:3: kw= '-'
                     {
-                    kw=(Token)match(input,73,FOLLOW_73_in_ruleOpAdd8554); 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.getOpAddAccess().getHyphenMinusKeyword_1()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1());
+                      		
                     }
 
                     }
@@ -9889,14 +10931,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9905,7 +10949,7 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3421:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    // InternalPerspectiveDsl.g:3850:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
     public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9913,13 +10957,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3422:2: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3423:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
+            // InternalPerspectiveDsl.g:3850:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // InternalPerspectiveDsl.g:3851:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression8594);
+            pushFollow(FOLLOW_1);
             iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();
 
             state._fsp--;
@@ -9927,16 +10971,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXMultiplicativeExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression8604); 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;
@@ -9945,7 +10989,7 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3430:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3857: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;
 
@@ -9954,61 +10998,18922 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3433:28: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3434:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalPerspectiveDsl.g:3863:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // InternalPerspectiveDsl.g:3864:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3434:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3435:5: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            // InternalPerspectiveDsl.g:3864:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalPerspectiveDsl.g:3865:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression8651);
+            pushFollow(FOLLOW_52);
             this_XUnaryOperation_0=ruleXUnaryOperation();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XUnaryOperation_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XUnaryOperation_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g:3443:1: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
-            loop46:
+            // InternalPerspectiveDsl.g:3873:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            loop49:
             do {
-                int alt46=2;
+                int alt49=2;
                 switch ( input.LA(1) ) {
-                case 42:
+                case 53:
                     {
-                    int LA46_2 = input.LA(2);
+                    int LA49_2 = input.LA(2);
 
-                    if ( (synpred18_InternalPerspectiveDsl()) ) {
-                        alt46=1;
+                    if ( (synpred17_InternalPerspectiveDsl()) ) {
+                        alt49=1;
                     }
 
 
                     }
                     break;
-                case 74:
+                case 87:
                     {
-                    int LA46_3 = input.LA(2);
+                    int LA49_3 = input.LA(2);
 
-                    if ( (synpred18_InternalPerspectiveDsl()) ) {
-                        alt46=1;
+                    if ( (synpred17_InternalPerspectiveDsl()) ) {
+                        alt49=1;
                     }
 
 
                     }
                     break;
-                case 75:
+                case 88:
                     {
-                    int LA46_4 = input.LA(2);
+                    int LA49_4 = input.LA(2);
+
+                    if ( (synpred17_InternalPerspectiveDsl()) ) {
+                        alt49=1;
+                    }
+
+
+                    }
+                    break;
+                case 89:
+                    {
+                    int LA49_5 = input.LA(2);
+
+                    if ( (synpred17_InternalPerspectiveDsl()) ) {
+                        alt49=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt49) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:3874:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3874:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // InternalPerspectiveDsl.g:3875:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3885:5: ( () ( ( ruleOpMulti ) ) )
+            	    // InternalPerspectiveDsl.g:3886:6: () ( ( ruleOpMulti ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:3886:6: ()
+            	    // InternalPerspectiveDsl.g:3887:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:3893:6: ( ( ruleOpMulti ) )
+            	    // InternalPerspectiveDsl.g:3894:7: ( ruleOpMulti )
+            	    {
+            	    // InternalPerspectiveDsl.g:3894:7: ( ruleOpMulti )
+            	    // InternalPerspectiveDsl.g:3895: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_33);
+            	    ruleOpMulti();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:3911:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalPerspectiveDsl.g:3912:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    {
+            	    // InternalPerspectiveDsl.g:3912:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalPerspectiveDsl.g:3913:6: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_52);
+            	    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 loop49;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXMultiplicativeExpression"
+
+
+    // $ANTLR start "entryRuleOpMulti"
+    // InternalPerspectiveDsl.g:3935:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    public final String entryRuleOpMulti() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpMulti = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:3935:47: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // InternalPerspectiveDsl.g:3936: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"
+    // InternalPerspectiveDsl.g:3942: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 {
+            // InternalPerspectiveDsl.g:3948:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // InternalPerspectiveDsl.g:3949:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            {
+            // InternalPerspectiveDsl.g:3949:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            int alt50=4;
+            switch ( input.LA(1) ) {
+            case 53:
+                {
+                alt50=1;
+                }
+                break;
+            case 87:
+                {
+                alt50=2;
+                }
+                break;
+            case 88:
+                {
+                alt50=3;
+                }
+                break;
+            case 89:
+                {
+                alt50=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 50, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt50) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3950:3: kw= '*'
+                    {
+                    kw=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:3956:3: kw= '**'
+                    {
+                    kw=(Token)match(input,87,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:3962:3: kw= '/'
+                    {
+                    kw=(Token)match(input,88,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalPerspectiveDsl.g:3968:3: kw= '%'
+                    {
+                    kw=(Token)match(input,89,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"
+    // InternalPerspectiveDsl.g:3977:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    public final EObject entryRuleXUnaryOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXUnaryOperation = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:3977:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // InternalPerspectiveDsl.g:3978: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"
+    // InternalPerspectiveDsl.g:3984: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 {
+            // InternalPerspectiveDsl.g:3990:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // InternalPerspectiveDsl.g:3991:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            {
+            // InternalPerspectiveDsl.g:3991:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            int alt51=2;
+            int LA51_0 = input.LA(1);
+
+            if ( ((LA51_0>=85 && LA51_0<=86)||LA51_0==90) ) {
+                alt51=1;
+            }
+            else if ( ((LA51_0>=RULE_ID && LA51_0<=RULE_DECIMAL)||LA51_0==14||(LA51_0>=50 && LA51_0<=52)||LA51_0==57||(LA51_0>=61 && LA51_0<=62)||LA51_0==69||LA51_0==98||LA51_0==100||(LA51_0>=104 && LA51_0<=106)||(LA51_0>=109 && LA51_0<=118)||LA51_0==120) ) {
+                alt51=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 51, 0, input);
+
+                throw nvae;
+            }
+            switch (alt51) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:3992:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:3992:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalPerspectiveDsl.g:3993:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    {
+                    // InternalPerspectiveDsl.g:3993:4: ()
+                    // InternalPerspectiveDsl.g:3994:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					current = forceCreateModelElement(
+                      						grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+                      						current);
+                      				
+                    }
+
+                    }
+
+                    // InternalPerspectiveDsl.g:4000:4: ( ( ruleOpUnary ) )
+                    // InternalPerspectiveDsl.g:4001:5: ( ruleOpUnary )
+                    {
+                    // InternalPerspectiveDsl.g:4001:5: ( ruleOpUnary )
+                    // InternalPerspectiveDsl.g:4002: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_33);
+                    ruleOpUnary();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:4016:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalPerspectiveDsl.g:4017:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    {
+                    // InternalPerspectiveDsl.g:4017:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalPerspectiveDsl.g:4018: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 :
+                    // InternalPerspectiveDsl.g:4037: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"
+    // InternalPerspectiveDsl.g:4049:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    public final String entryRuleOpUnary() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpUnary = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:4049:47: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // InternalPerspectiveDsl.g:4050: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"
+    // InternalPerspectiveDsl.g:4056: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 {
+            // InternalPerspectiveDsl.g:4062:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // InternalPerspectiveDsl.g:4063:2: (kw= '!' | kw= '-' | kw= '+' )
+            {
+            // InternalPerspectiveDsl.g:4063:2: (kw= '!' | kw= '-' | kw= '+' )
+            int alt52=3;
+            switch ( input.LA(1) ) {
+            case 90:
+                {
+                alt52=1;
+                }
+                break;
+            case 86:
+                {
+                alt52=2;
+                }
+                break;
+            case 85:
+                {
+                alt52=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 52, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt52) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4064:3: kw= '!'
+                    {
+                    kw=(Token)match(input,90,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:4070:3: kw= '-'
+                    {
+                    kw=(Token)match(input,86,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:4076:3: kw= '+'
+                    {
+                    kw=(Token)match(input,85,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"
+    // InternalPerspectiveDsl.g:4085:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    public final EObject entryRuleXCastedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCastedExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:4085:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // InternalPerspectiveDsl.g:4086: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"
+    // InternalPerspectiveDsl.g:4092: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 {
+            // InternalPerspectiveDsl.g:4098:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // InternalPerspectiveDsl.g:4099:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            {
+            // InternalPerspectiveDsl.g:4099:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalPerspectiveDsl.g:4100: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_53);
+            this_XPostfixOperation_0=ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XPostfixOperation_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalPerspectiveDsl.g:4108:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            loop53:
+            do {
+                int alt53=2;
+                int LA53_0 = input.LA(1);
+
+                if ( (LA53_0==91) ) {
+                    int LA53_2 = input.LA(2);
 
                     if ( (synpred18_InternalPerspectiveDsl()) ) {
-                        alt46=1;
+                        alt53=1;
+                    }
+
+
+                }
+
+
+                switch (alt53) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:4109:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:4109:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // InternalPerspectiveDsl.g:4110:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    {
+            	    // InternalPerspectiveDsl.g:4116:5: ( () otherlv_2= 'as' )
+            	    // InternalPerspectiveDsl.g:4117:6: () otherlv_2= 'as'
+            	    {
+            	    // InternalPerspectiveDsl.g:4117:6: ()
+            	    // InternalPerspectiveDsl.g:4118:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,91,FOLLOW_46); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:4130:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:4131:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // InternalPerspectiveDsl.g:4131:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:4132:6: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_53);
+            	    lv_type_3_0=ruleJvmTypeReference();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"type",
+            	      							lv_type_3_0,
+            	      							"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop53;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXCastedExpression"
+
+
+    // $ANTLR start "entryRuleXPostfixOperation"
+    // InternalPerspectiveDsl.g:4154:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    public final EObject entryRuleXPostfixOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXPostfixOperation = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:4154:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
+            // InternalPerspectiveDsl.g:4155: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"
+    // InternalPerspectiveDsl.g:4161: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 {
+            // InternalPerspectiveDsl.g:4167:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
+            // InternalPerspectiveDsl.g:4168:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            {
+            // InternalPerspectiveDsl.g:4168:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalPerspectiveDsl.g:4169:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_54);
+            this_XMemberFeatureCall_0=ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XMemberFeatureCall_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalPerspectiveDsl.g:4177:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
+
+            if ( (LA54_0==92) ) {
+                int LA54_1 = input.LA(2);
+
+                if ( (synpred19_InternalPerspectiveDsl()) ) {
+                    alt54=1;
+                }
+            }
+            else if ( (LA54_0==93) ) {
+                int LA54_2 = input.LA(2);
+
+                if ( (synpred19_InternalPerspectiveDsl()) ) {
+                    alt54=1;
+                }
+            }
+            switch (alt54) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4178:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:4188:4: ( () ( ( ruleOpPostfix ) ) )
+                    // InternalPerspectiveDsl.g:4189:5: () ( ( ruleOpPostfix ) )
+                    {
+                    // InternalPerspectiveDsl.g:4189:5: ()
+                    // InternalPerspectiveDsl.g:4190:6: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						current = forceCreateModelElementAndSet(
+                      							grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+                      							current);
+                      					
+                    }
+
+                    }
+
+                    // InternalPerspectiveDsl.g:4196:5: ( ( ruleOpPostfix ) )
+                    // InternalPerspectiveDsl.g:4197:6: ( ruleOpPostfix )
+                    {
+                    // InternalPerspectiveDsl.g:4197:6: ( ruleOpPostfix )
+                    // InternalPerspectiveDsl.g:4198: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"
+    // InternalPerspectiveDsl.g:4218:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
+    public final String entryRuleOpPostfix() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpPostfix = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:4218:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
+            // InternalPerspectiveDsl.g:4219: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"
+    // InternalPerspectiveDsl.g:4225:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
+    public final AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:4231:2: ( (kw= '++' | kw= '--' ) )
+            // InternalPerspectiveDsl.g:4232:2: (kw= '++' | kw= '--' )
+            {
+            // InternalPerspectiveDsl.g:4232:2: (kw= '++' | kw= '--' )
+            int alt55=2;
+            int LA55_0 = input.LA(1);
+
+            if ( (LA55_0==92) ) {
+                alt55=1;
+            }
+            else if ( (LA55_0==93) ) {
+                alt55=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 55, 0, input);
+
+                throw nvae;
+            }
+            switch (alt55) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4233:3: kw= '++'
+                    {
+                    kw=(Token)match(input,92,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:4239:3: kw= '--'
+                    {
+                    kw=(Token)match(input,93,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"
+    // InternalPerspectiveDsl.g:4248:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
+    public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXMemberFeatureCall = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:4248:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
+            // InternalPerspectiveDsl.g:4249: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"
+    // InternalPerspectiveDsl.g:4255: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 {
+            // InternalPerspectiveDsl.g:4261: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 ) )? ) )* ) )
+            // InternalPerspectiveDsl.g:4262: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 ) )? ) )* )
+            {
+            // InternalPerspectiveDsl.g:4262: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 ) )? ) )* )
+            // InternalPerspectiveDsl.g:4263: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_55);
+            this_XPrimaryExpression_0=ruleXPrimaryExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XPrimaryExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalPerspectiveDsl.g:4271: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 ) )? ) )*
+            loop64:
+            do {
+                int alt64=3;
+                switch ( input.LA(1) ) {
+                case 94:
+                    {
+                    int LA64_2 = input.LA(2);
+
+                    if ( (synpred20_InternalPerspectiveDsl()) ) {
+                        alt64=1;
+                    }
+                    else if ( (synpred21_InternalPerspectiveDsl()) ) {
+                        alt64=2;
+                    }
+
+
+                    }
+                    break;
+                case 95:
+                    {
+                    int LA64_3 = input.LA(2);
+
+                    if ( (synpred20_InternalPerspectiveDsl()) ) {
+                        alt64=1;
+                    }
+                    else if ( (synpred21_InternalPerspectiveDsl()) ) {
+                        alt64=2;
+                    }
+
+
+                    }
+                    break;
+                case 96:
+                    {
+                    int LA64_4 = input.LA(2);
+
+                    if ( (synpred21_InternalPerspectiveDsl()) ) {
+                        alt64=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt64) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:4272:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:4272:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalPerspectiveDsl.g:4273:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:4273:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+            	    // InternalPerspectiveDsl.g:4274:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    {
+            	    // InternalPerspectiveDsl.g:4294:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalPerspectiveDsl.g:4295:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+            	    {
+            	    // InternalPerspectiveDsl.g:4295:7: ()
+            	    // InternalPerspectiveDsl.g:4296:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:4302:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
+            	    int alt56=2;
+            	    int LA56_0 = input.LA(1);
+
+            	    if ( (LA56_0==94) ) {
+            	        alt56=1;
+            	    }
+            	    else if ( (LA56_0==95) ) {
+            	        alt56=2;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 56, 0, input);
+
+            	        throw nvae;
+            	    }
+            	    switch (alt56) {
+            	        case 1 :
+            	            // InternalPerspectiveDsl.g:4303:8: otherlv_2= '.'
+            	            {
+            	            otherlv_2=(Token)match(input,94,FOLLOW_56); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
+            	              							
+            	            }
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // InternalPerspectiveDsl.g:4308:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            {
+            	            // InternalPerspectiveDsl.g:4308:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4309:9: (lv_explicitStatic_3_0= '::' )
+            	            {
+            	            // InternalPerspectiveDsl.g:4309:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalPerspectiveDsl.g:4310:10: lv_explicitStatic_3_0= '::'
+            	            {
+            	            lv_explicitStatic_3_0=(Token)match(input,95,FOLLOW_56); 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;
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:4323:7: ( ( ruleFeatureCallID ) )
+            	    // InternalPerspectiveDsl.g:4324:8: ( ruleFeatureCallID )
+            	    {
+            	    // InternalPerspectiveDsl.g:4324:8: ( ruleFeatureCallID )
+            	    // InternalPerspectiveDsl.g:4325: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_32);
+            	    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_33);
+            	    ruleOpSingleAssign();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:4348:5: ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalPerspectiveDsl.g:4349:6: (lv_value_6_0= ruleXAssignment )
+            	    {
+            	    // InternalPerspectiveDsl.g:4349:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalPerspectiveDsl.g:4350:7: lv_value_6_0= ruleXAssignment
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_55);
+            	    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 :
+            	    // InternalPerspectiveDsl.g:4369: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 ) )? )
+            	    {
+            	    // InternalPerspectiveDsl.g:4369: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 ) )? )
+            	    // InternalPerspectiveDsl.g:4370: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 ) )?
+            	    {
+            	    // InternalPerspectiveDsl.g:4370:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:4371:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:4391:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalPerspectiveDsl.g:4392:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:4392:7: ()
+            	    // InternalPerspectiveDsl.g:4393:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:4399:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    int alt57=3;
+            	    switch ( input.LA(1) ) {
+            	    case 94:
+            	        {
+            	        alt57=1;
+            	        }
+            	        break;
+            	    case 96:
+            	        {
+            	        alt57=2;
+            	        }
+            	        break;
+            	    case 95:
+            	        {
+            	        alt57=3;
+            	        }
+            	        break;
+            	    default:
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 57, 0, input);
+
+            	        throw nvae;
+            	    }
+
+            	    switch (alt57) {
+            	        case 1 :
+            	            // InternalPerspectiveDsl.g:4400:8: otherlv_8= '.'
+            	            {
+            	            otherlv_8=(Token)match(input,94,FOLLOW_57); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
+            	              							
+            	            }
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // InternalPerspectiveDsl.g:4405:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            {
+            	            // InternalPerspectiveDsl.g:4405:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalPerspectiveDsl.g:4406:9: (lv_nullSafe_9_0= '?.' )
+            	            {
+            	            // InternalPerspectiveDsl.g:4406:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalPerspectiveDsl.g:4407:10: lv_nullSafe_9_0= '?.'
+            	            {
+            	            lv_nullSafe_9_0=(Token)match(input,96,FOLLOW_57); 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 :
+            	            // InternalPerspectiveDsl.g:4420:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            {
+            	            // InternalPerspectiveDsl.g:4420:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4421:9: (lv_explicitStatic_10_0= '::' )
+            	            {
+            	            // InternalPerspectiveDsl.g:4421:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalPerspectiveDsl.g:4422:10: lv_explicitStatic_10_0= '::'
+            	            {
+            	            lv_explicitStatic_10_0=(Token)match(input,95,FOLLOW_57); 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;
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:4437:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
+            	    int alt59=2;
+            	    int LA59_0 = input.LA(1);
+
+            	    if ( (LA59_0==69) ) {
+            	        alt59=1;
+            	    }
+            	    switch (alt59) {
+            	        case 1 :
+            	            // InternalPerspectiveDsl.g:4438:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
+            	            {
+            	            otherlv_11=(Token)match(input,69,FOLLOW_58); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
+            	              					
+            	            }
+            	            // InternalPerspectiveDsl.g:4442:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
+            	            // InternalPerspectiveDsl.g:4443:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            {
+            	            // InternalPerspectiveDsl.g:4443:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalPerspectiveDsl.g:4444:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	              								newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0());
+            	              							
+            	            }
+            	            pushFollow(FOLLOW_59);
+            	            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();
+            	              							
+            	            }
+
+            	            }
+
+
+            	            }
+
+            	            // InternalPerspectiveDsl.g:4461:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
+            	            loop58:
+            	            do {
+            	                int alt58=2;
+            	                int LA58_0 = input.LA(1);
+
+            	                if ( (LA58_0==58) ) {
+            	                    alt58=1;
+            	                }
+
+
+            	                switch (alt58) {
+            	            	case 1 :
+            	            	    // InternalPerspectiveDsl.g:4462:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    {
+            	            	    otherlv_13=(Token)match(input,58,FOLLOW_58); if (state.failed) return current;
+            	            	    if ( state.backtracking==0 ) {
+
+            	            	      							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
+            	            	      						
+            	            	    }
+            	            	    // InternalPerspectiveDsl.g:4466:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalPerspectiveDsl.g:4467:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    {
+            	            	    // InternalPerspectiveDsl.g:4467:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalPerspectiveDsl.g:4468:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
+            	            	    {
+            	            	    if ( state.backtracking==0 ) {
+
+            	            	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0());
+            	            	      								
+            	            	    }
+            	            	    pushFollow(FOLLOW_59);
+            	            	    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 loop58;
+            	                }
+            	            } while (true);
+
+            	            otherlv_15=(Token)match(input,70,FOLLOW_57); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
+            	              					
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:4491:5: ( ( ruleIdOrSuper ) )
+            	    // InternalPerspectiveDsl.g:4492:6: ( ruleIdOrSuper )
+            	    {
+            	    // InternalPerspectiveDsl.g:4492:6: ( ruleIdOrSuper )
+            	    // InternalPerspectiveDsl.g:4493: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_60);
+            	    ruleIdOrSuper();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:4507: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 alt62=2;
+            	    alt62 = dfa62.predict(input);
+            	    switch (alt62) {
+            	        case 1 :
+            	            // InternalPerspectiveDsl.g:4508: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= ')'
+            	            {
+            	            // InternalPerspectiveDsl.g:4508:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
+            	            // InternalPerspectiveDsl.g:4509:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
+            	            {
+            	            // InternalPerspectiveDsl.g:4513:7: (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalPerspectiveDsl.g:4514:8: lv_explicitOperationCall_17_0= '('
+            	            {
+            	            lv_explicitOperationCall_17_0=(Token)match(input,57,FOLLOW_61); 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, "(");
+            	              							
+            	            }
+
+            	            }
+
+
+            	            }
+
+            	            // InternalPerspectiveDsl.g:4526:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
+            	            int alt61=3;
+            	            alt61 = dfa61.predict(input);
+            	            switch (alt61) {
+            	                case 1 :
+            	                    // InternalPerspectiveDsl.g:4527:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    {
+            	                    // InternalPerspectiveDsl.g:4527:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalPerspectiveDsl.g:4528:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    {
+            	                    // InternalPerspectiveDsl.g:4553:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalPerspectiveDsl.g:4554:9: lv_memberCallArguments_18_0= ruleXShortClosure
+            	                    {
+            	                    if ( state.backtracking==0 ) {
+
+            	                      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0());
+            	                      								
+            	                    }
+            	                    pushFollow(FOLLOW_31);
+            	                    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 :
+            	                    // InternalPerspectiveDsl.g:4572:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    {
+            	                    // InternalPerspectiveDsl.g:4572:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalPerspectiveDsl.g:4573:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    {
+            	                    // InternalPerspectiveDsl.g:4573:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
+            	                    // InternalPerspectiveDsl.g:4574:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    {
+            	                    // InternalPerspectiveDsl.g:4574:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalPerspectiveDsl.g:4575:10: lv_memberCallArguments_19_0= ruleXExpression
+            	                    {
+            	                    if ( state.backtracking==0 ) {
+
+            	                      										newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0());
+            	                      									
+            	                    }
+            	                    pushFollow(FOLLOW_30);
+            	                    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();
+            	                      									
+            	                    }
+
+            	                    }
+
+
+            	                    }
+
+            	                    // InternalPerspectiveDsl.g:4592:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    loop60:
+            	                    do {
+            	                        int alt60=2;
+            	                        int LA60_0 = input.LA(1);
+
+            	                        if ( (LA60_0==58) ) {
+            	                            alt60=1;
+            	                        }
+
+
+            	                        switch (alt60) {
+            	                    	case 1 :
+            	                    	    // InternalPerspectiveDsl.g:4593:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    {
+            	                    	    otherlv_20=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+            	                    	    if ( state.backtracking==0 ) {
+
+            	                    	      									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
+            	                    	      								
+            	                    	    }
+            	                    	    // InternalPerspectiveDsl.g:4597:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalPerspectiveDsl.g:4598:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    {
+            	                    	    // InternalPerspectiveDsl.g:4598:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalPerspectiveDsl.g:4599:11: lv_memberCallArguments_21_0= ruleXExpression
+            	                    	    {
+            	                    	    if ( state.backtracking==0 ) {
+
+            	                    	      											newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0());
+            	                    	      										
+            	                    	    }
+            	                    	    pushFollow(FOLLOW_30);
+            	                    	    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 loop60;
+            	                        }
+            	                    } while (true);
+
+
+            	                    }
+
+
+            	                    }
+            	                    break;
+
+            	            }
+
+            	            otherlv_22=(Token)match(input,59,FOLLOW_62); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
+            	              					
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:4624:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    int alt63=2;
+            	    alt63 = dfa63.predict(input);
+            	    switch (alt63) {
+            	        case 1 :
+            	            // InternalPerspectiveDsl.g:4625:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
+            	            {
+            	            // InternalPerspectiveDsl.g:4631:6: (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalPerspectiveDsl.g:4632:7: lv_memberCallArguments_23_0= ruleXClosure
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	              							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0());
+            	              						
+            	            }
+            	            pushFollow(FOLLOW_55);
+            	            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 loop64;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXMemberFeatureCall"
+
+
+    // $ANTLR start "entryRuleXPrimaryExpression"
+    // InternalPerspectiveDsl.g:4655:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
+    public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXPrimaryExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:4655:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
+            // InternalPerspectiveDsl.g:4656: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"
+    // InternalPerspectiveDsl.g:4662: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 {
+            // InternalPerspectiveDsl.g:4668: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 ) )
+            // InternalPerspectiveDsl.g:4669: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 )
+            {
+            // InternalPerspectiveDsl.g:4669: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 alt65=15;
+            alt65 = dfa65.predict(input);
+            switch (alt65) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4670: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 :
+                    // InternalPerspectiveDsl.g:4679: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 :
+                    // InternalPerspectiveDsl.g:4688: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 :
+                    // InternalPerspectiveDsl.g:4697:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    {
+                    // InternalPerspectiveDsl.g:4697:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:4698: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 :
+                    // InternalPerspectiveDsl.g:4715: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 :
+                    // InternalPerspectiveDsl.g:4724: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 :
+                    // InternalPerspectiveDsl.g:4733: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 :
+                    // InternalPerspectiveDsl.g:4742:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    {
+                    // InternalPerspectiveDsl.g:4742:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:4743: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 :
+                    // InternalPerspectiveDsl.g:4766: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 :
+                    // InternalPerspectiveDsl.g:4775: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 :
+                    // InternalPerspectiveDsl.g:4784: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 :
+                    // InternalPerspectiveDsl.g:4793: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 :
+                    // InternalPerspectiveDsl.g:4802: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 :
+                    // InternalPerspectiveDsl.g:4811: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 :
+                    // InternalPerspectiveDsl.g:4820: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"
+    // InternalPerspectiveDsl.g:4832:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
+    public final EObject entryRuleXLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXLiteral = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:4832:49: (iv_ruleXLiteral= ruleXLiteral EOF )
+            // InternalPerspectiveDsl.g:4833: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"
+    // InternalPerspectiveDsl.g:4839: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 {
+            // InternalPerspectiveDsl.g:4845: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 ) )
+            // InternalPerspectiveDsl.g:4846: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 )
+            {
+            // InternalPerspectiveDsl.g:4846: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 alt66=7;
+            int LA66_0 = input.LA(1);
+
+            if ( (LA66_0==61) ) {
+                alt66=1;
+            }
+            else if ( (LA66_0==62) && (synpred27_InternalPerspectiveDsl())) {
+                alt66=2;
+            }
+            else if ( ((LA66_0>=112 && LA66_0<=113)) ) {
+                alt66=3;
+            }
+            else if ( ((LA66_0>=RULE_INT && LA66_0<=RULE_DECIMAL)) ) {
+                alt66=4;
+            }
+            else if ( (LA66_0==114) ) {
+                alt66=5;
+            }
+            else if ( (LA66_0==RULE_STRING) ) {
+                alt66=6;
+            }
+            else if ( (LA66_0==115) ) {
+                alt66=7;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 66, 0, input);
+
+                throw nvae;
+            }
+            switch (alt66) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4847: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 :
+                    // InternalPerspectiveDsl.g:4856:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    {
+                    // InternalPerspectiveDsl.g:4856:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalPerspectiveDsl.g:4857: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 :
+                    // InternalPerspectiveDsl.g:4873: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 :
+                    // InternalPerspectiveDsl.g:4882: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 :
+                    // InternalPerspectiveDsl.g:4891: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 :
+                    // InternalPerspectiveDsl.g:4900: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 :
+                    // InternalPerspectiveDsl.g:4909: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"
+    // InternalPerspectiveDsl.g:4921:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
+    public final EObject entryRuleXCollectionLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCollectionLiteral = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:4921:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
+            // InternalPerspectiveDsl.g:4922: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"
+    // InternalPerspectiveDsl.g:4928: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 {
+            // InternalPerspectiveDsl.g:4934:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
+            // InternalPerspectiveDsl.g:4935:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            {
+            // InternalPerspectiveDsl.g:4935:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==61) ) {
+                int LA67_1 = input.LA(2);
+
+                if ( (LA67_1==62) ) {
+                    alt67=2;
+                }
+                else if ( (LA67_1==14) ) {
+                    alt67=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 67, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 67, 0, input);
+
+                throw nvae;
+            }
+            switch (alt67) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4936: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 :
+                    // InternalPerspectiveDsl.g:4945: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"
+    // InternalPerspectiveDsl.g:4957:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
+    public final EObject entryRuleXSetLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSetLiteral = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:4957:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
+            // InternalPerspectiveDsl.g:4958: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"
+    // InternalPerspectiveDsl.g:4964: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 {
+            // InternalPerspectiveDsl.g:4970:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
+            // InternalPerspectiveDsl.g:4971:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            {
+            // InternalPerspectiveDsl.g:4971:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalPerspectiveDsl.g:4972:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
+            {
+            // InternalPerspectiveDsl.g:4972:3: ()
+            // InternalPerspectiveDsl.g:4973:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,61,FOLLOW_63); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,14,FOLLOW_64); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
+              		
+            }
+            // InternalPerspectiveDsl.g:4987:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
+
+            if ( ((LA69_0>=RULE_ID && LA69_0<=RULE_DECIMAL)||LA69_0==14||(LA69_0>=50 && LA69_0<=52)||LA69_0==57||(LA69_0>=61 && LA69_0<=62)||LA69_0==69||(LA69_0>=85 && LA69_0<=86)||LA69_0==90||LA69_0==98||LA69_0==100||(LA69_0>=104 && LA69_0<=106)||(LA69_0>=109 && LA69_0<=118)||LA69_0==120) ) {
+                alt69=1;
+            }
+            switch (alt69) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:4988:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    {
+                    // InternalPerspectiveDsl.g:4988:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:4989:5: (lv_elements_3_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:4989:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:4990:6: lv_elements_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_65);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:5007:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop68:
+                    do {
+                        int alt68=2;
+                        int LA68_0 = input.LA(1);
+
+                        if ( (LA68_0==58) ) {
+                            alt68=1;
+                        }
+
+
+                        switch (alt68) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:5008:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalPerspectiveDsl.g:5012:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5013:6: (lv_elements_5_0= ruleXExpression )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:5013:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5014:7: lv_elements_5_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_65);
+                    	    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 loop68;
+                        }
+                    } 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"
+    // InternalPerspectiveDsl.g:5041:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
+    public final EObject entryRuleXListLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXListLiteral = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:5041:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
+            // InternalPerspectiveDsl.g:5042: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"
+    // InternalPerspectiveDsl.g:5048: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 {
+            // InternalPerspectiveDsl.g:5054:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
+            // InternalPerspectiveDsl.g:5055:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            {
+            // InternalPerspectiveDsl.g:5055:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalPerspectiveDsl.g:5056:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
+            {
+            // InternalPerspectiveDsl.g:5056:3: ()
+            // InternalPerspectiveDsl.g:5057:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,61,FOLLOW_34); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,62,FOLLOW_35); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
+              		
+            }
+            // InternalPerspectiveDsl.g:5071:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt71=2;
+            int LA71_0 = input.LA(1);
+
+            if ( ((LA71_0>=RULE_ID && LA71_0<=RULE_DECIMAL)||LA71_0==14||(LA71_0>=50 && LA71_0<=52)||LA71_0==57||(LA71_0>=61 && LA71_0<=62)||LA71_0==69||(LA71_0>=85 && LA71_0<=86)||LA71_0==90||LA71_0==98||LA71_0==100||(LA71_0>=104 && LA71_0<=106)||(LA71_0>=109 && LA71_0<=118)||LA71_0==120) ) {
+                alt71=1;
+            }
+            switch (alt71) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:5072:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    {
+                    // InternalPerspectiveDsl.g:5072:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5073:5: (lv_elements_3_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:5073:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5074:6: lv_elements_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_36);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:5091:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop70:
+                    do {
+                        int alt70=2;
+                        int LA70_0 = input.LA(1);
+
+                        if ( (LA70_0==58) ) {
+                            alt70=1;
+                        }
+
+
+                        switch (alt70) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:5092:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalPerspectiveDsl.g:5096:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5097:6: (lv_elements_5_0= ruleXExpression )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:5097:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5098:7: lv_elements_5_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_36);
+                    	    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 loop70;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,63,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"
+    // InternalPerspectiveDsl.g:5125:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
+    public final EObject entryRuleXClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXClosure = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:5125:49: (iv_ruleXClosure= ruleXClosure EOF )
+            // InternalPerspectiveDsl.g:5126: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"
+    // InternalPerspectiveDsl.g:5132: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 {
+            // InternalPerspectiveDsl.g:5138: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= ']' ) )
+            // InternalPerspectiveDsl.g:5139: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= ']' )
+            {
+            // InternalPerspectiveDsl.g:5139: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= ']' )
+            // InternalPerspectiveDsl.g:5140: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= ']'
+            {
+            // InternalPerspectiveDsl.g:5140:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
+            // InternalPerspectiveDsl.g:5141:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
+            {
+            // InternalPerspectiveDsl.g:5147:4: ( () otherlv_1= '[' )
+            // InternalPerspectiveDsl.g:5148:5: () otherlv_1= '['
+            {
+            // InternalPerspectiveDsl.g:5148:5: ()
+            // InternalPerspectiveDsl.g:5149:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,62,FOLLOW_66); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:5161:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
+            int alt74=2;
+            alt74 = dfa74.predict(input);
+            switch (alt74) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:5162:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:5185:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalPerspectiveDsl.g:5186:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
+                    {
+                    // InternalPerspectiveDsl.g:5186:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
+                    int alt73=2;
+                    int LA73_0 = input.LA(1);
+
+                    if ( (LA73_0==RULE_ID||LA73_0==57||LA73_0==82) ) {
+                        alt73=1;
+                    }
+                    switch (alt73) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:5187:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            {
+                            // InternalPerspectiveDsl.g:5187:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
+                            // InternalPerspectiveDsl.g:5188:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            {
+                            // InternalPerspectiveDsl.g:5188:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:5189:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_67);
+                            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();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalPerspectiveDsl.g:5206:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            loop72:
+                            do {
+                                int alt72=2;
+                                int LA72_0 = input.LA(1);
+
+                                if ( (LA72_0==58) ) {
+                                    alt72=1;
+                                }
+
+
+                                switch (alt72) {
+                            	case 1 :
+                            	    // InternalPerspectiveDsl.g:5207:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    {
+                            	    otherlv_3=(Token)match(input,58,FOLLOW_46); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
+                            	      						
+                            	    }
+                            	    // InternalPerspectiveDsl.g:5211:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalPerspectiveDsl.g:5212:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    {
+                            	    // InternalPerspectiveDsl.g:5212:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalPerspectiveDsl.g:5213:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_67);
+                            	    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 loop72;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalPerspectiveDsl.g:5232:5: ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalPerspectiveDsl.g:5233:6: (lv_explicitSyntax_5_0= '|' )
+                    {
+                    // InternalPerspectiveDsl.g:5233:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalPerspectiveDsl.g:5234:7: lv_explicitSyntax_5_0= '|'
+                    {
+                    lv_explicitSyntax_5_0=(Token)match(input,97,FOLLOW_68); 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;
+
+            }
+
+            // InternalPerspectiveDsl.g:5248:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
+            // InternalPerspectiveDsl.g:5249:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            {
+            // InternalPerspectiveDsl.g:5249:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:5250:5: lv_expression_6_0= ruleXExpressionInClosure
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_69);
+            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,63,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"
+    // InternalPerspectiveDsl.g:5275:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
+    public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpressionInClosure = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:5275:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
+            // InternalPerspectiveDsl.g:5276: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"
+    // InternalPerspectiveDsl.g:5282: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 {
+            // InternalPerspectiveDsl.g:5288:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
+            // InternalPerspectiveDsl.g:5289:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            {
+            // InternalPerspectiveDsl.g:5289:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalPerspectiveDsl.g:5290:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            {
+            // InternalPerspectiveDsl.g:5290:3: ()
+            // InternalPerspectiveDsl.g:5291:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:5297:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            loop76:
+            do {
+                int alt76=2;
+                int LA76_0 = input.LA(1);
+
+                if ( ((LA76_0>=RULE_ID && LA76_0<=RULE_DECIMAL)||LA76_0==14||(LA76_0>=50 && LA76_0<=52)||LA76_0==57||(LA76_0>=61 && LA76_0<=62)||LA76_0==69||(LA76_0>=85 && LA76_0<=86)||LA76_0==90||LA76_0==98||LA76_0==100||(LA76_0>=104 && LA76_0<=118)||LA76_0==120) ) {
+                    alt76=1;
+                }
+
+
+                switch (alt76) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:5298:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
+            	    {
+            	    // InternalPerspectiveDsl.g:5298:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalPerspectiveDsl.g:5299:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    {
+            	    // InternalPerspectiveDsl.g:5299:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:5300:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_70);
+            	    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();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:5317:4: (otherlv_2= ';' )?
+            	    int alt75=2;
+            	    int LA75_0 = input.LA(1);
+
+            	    if ( (LA75_0==55) ) {
+            	        alt75=1;
+            	    }
+            	    switch (alt75) {
+            	        case 1 :
+            	            // InternalPerspectiveDsl.g:5318:5: otherlv_2= ';'
+            	            {
+            	            otherlv_2=(Token)match(input,55,FOLLOW_71); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+            	              				
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop76;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXExpressionInClosure"
+
+
+    // $ANTLR start "entryRuleXShortClosure"
+    // InternalPerspectiveDsl.g:5328:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
+    public final EObject entryRuleXShortClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXShortClosure = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:5328:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
+            // InternalPerspectiveDsl.g:5329: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"
+    // InternalPerspectiveDsl.g:5335: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 {
+            // InternalPerspectiveDsl.g:5341:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:5342:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            {
+            // InternalPerspectiveDsl.g:5342:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:5343:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
+            {
+            // InternalPerspectiveDsl.g:5343:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
+            // InternalPerspectiveDsl.g:5344:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            {
+            // InternalPerspectiveDsl.g:5369:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalPerspectiveDsl.g:5370:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
+            {
+            // InternalPerspectiveDsl.g:5370:5: ()
+            // InternalPerspectiveDsl.g:5371:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:5377:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
+            int alt78=2;
+            int LA78_0 = input.LA(1);
+
+            if ( (LA78_0==RULE_ID||LA78_0==57||LA78_0==82) ) {
+                alt78=1;
+            }
+            switch (alt78) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:5378:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    {
+                    // InternalPerspectiveDsl.g:5378:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
+                    // InternalPerspectiveDsl.g:5379:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    {
+                    // InternalPerspectiveDsl.g:5379:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5380:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      								newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0());
+                      							
+                    }
+                    pushFollow(FOLLOW_67);
+                    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();
+                      							
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:5397:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    loop77:
+                    do {
+                        int alt77=2;
+                        int LA77_0 = input.LA(1);
+
+                        if ( (LA77_0==58) ) {
+                            alt77=1;
+                        }
+
+
+                        switch (alt77) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:5398:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    {
+                    	    otherlv_2=(Token)match(input,58,FOLLOW_46); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
+                    	      						
+                    	    }
+                    	    // InternalPerspectiveDsl.g:5402:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalPerspectiveDsl.g:5403:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:5403:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalPerspectiveDsl.g:5404:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      									newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0());
+                    	      								
+                    	    }
+                    	    pushFollow(FOLLOW_67);
+                    	    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 loop77;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalPerspectiveDsl.g:5423:5: ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalPerspectiveDsl.g:5424:6: (lv_explicitSyntax_4_0= '|' )
+            {
+            // InternalPerspectiveDsl.g:5424:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalPerspectiveDsl.g:5425:7: lv_explicitSyntax_4_0= '|'
+            {
+            lv_explicitSyntax_4_0=(Token)match(input,97,FOLLOW_33); 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, "|");
+              						
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:5439:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5440:4: (lv_expression_5_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:5440:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5441: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"
+    // InternalPerspectiveDsl.g:5462:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
+    public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXParenthesizedExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:5462:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
+            // InternalPerspectiveDsl.g:5463: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"
+    // InternalPerspectiveDsl.g:5469: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 {
+            // InternalPerspectiveDsl.g:5475:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
+            // InternalPerspectiveDsl.g:5476:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            {
+            // InternalPerspectiveDsl.g:5476:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalPerspectiveDsl.g:5477:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
+            {
+            otherlv_0=(Token)match(input,57,FOLLOW_33); 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_31);
+            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,59,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"
+    // InternalPerspectiveDsl.g:5497:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
+    public final EObject entryRuleXIfExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXIfExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:5497:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
+            // InternalPerspectiveDsl.g:5498: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"
+    // InternalPerspectiveDsl.g:5504: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 {
+            // InternalPerspectiveDsl.g:5510: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 ) ) )? ) )
+            // InternalPerspectiveDsl.g:5511: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 ) ) )? )
+            {
+            // InternalPerspectiveDsl.g:5511: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 ) ) )? )
+            // InternalPerspectiveDsl.g:5512: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 ) ) )?
+            {
+            // InternalPerspectiveDsl.g:5512:3: ()
+            // InternalPerspectiveDsl.g:5513:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,98,FOLLOW_72); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalPerspectiveDsl.g:5527:3: ( (lv_if_3_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5528:4: (lv_if_3_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:5528:4: (lv_if_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5529:5: lv_if_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_31);
+            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,59,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
+              		
+            }
+            // InternalPerspectiveDsl.g:5550:3: ( (lv_then_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5551:4: (lv_then_5_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:5551:4: (lv_then_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5552:5: lv_then_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_73);
+            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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:5569:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
+
+            if ( (LA79_0==99) ) {
+                int LA79_1 = input.LA(2);
+
+                if ( (synpred31_InternalPerspectiveDsl()) ) {
+                    alt79=1;
+                }
+            }
+            switch (alt79) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:5570:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
+                    {
+                    // InternalPerspectiveDsl.g:5570:4: ( ( 'else' )=>otherlv_6= 'else' )
+                    // InternalPerspectiveDsl.g:5571:5: ( 'else' )=>otherlv_6= 'else'
+                    {
+                    otherlv_6=(Token)match(input,99,FOLLOW_33); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalPerspectiveDsl.g:5577:4: ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5578:5: (lv_else_7_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:5578:5: (lv_else_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5579: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"
+    // InternalPerspectiveDsl.g:5601:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
+    public final EObject entryRuleXSwitchExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSwitchExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:5601:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
+            // InternalPerspectiveDsl.g:5602: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"
+    // InternalPerspectiveDsl.g:5608: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 {
+            // InternalPerspectiveDsl.g:5614: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= '}' ) )
+            // InternalPerspectiveDsl.g:5615: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= '}' )
+            {
+            // InternalPerspectiveDsl.g:5615: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= '}' )
+            // InternalPerspectiveDsl.g:5616: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= '}'
+            {
+            // InternalPerspectiveDsl.g:5616:3: ()
+            // InternalPerspectiveDsl.g:5617:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,100,FOLLOW_74); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:5627: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 alt81=2;
+            alt81 = dfa81.predict(input);
+            switch (alt81) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:5628:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    {
+                    // InternalPerspectiveDsl.g:5628:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalPerspectiveDsl.g:5629:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
+                    {
+                    // InternalPerspectiveDsl.g:5629:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+                    // InternalPerspectiveDsl.g:5630:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    {
+                    // InternalPerspectiveDsl.g:5640:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalPerspectiveDsl.g:5641:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+                    {
+                    otherlv_2=(Token)match(input,57,FOLLOW_46); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
+                      						
+                    }
+                    // InternalPerspectiveDsl.g:5645:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+                    // InternalPerspectiveDsl.g:5646:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    {
+                    // InternalPerspectiveDsl.g:5646:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5647:9: lv_declaredParam_3_0= ruleJvmFormalParameter
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0());
+                      								
+                    }
+                    pushFollow(FOLLOW_75);
+                    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,101,FOLLOW_33); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:5670:5: ( (lv_switch_5_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5671:6: (lv_switch_5_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:5671:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5672:7: lv_switch_5_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_31);
+                    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,59,FOLLOW_63); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:5695:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:5695:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:5696:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
+                    {
+                    // InternalPerspectiveDsl.g:5696:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
+                    int alt80=2;
+                    alt80 = dfa80.predict(input);
+                    switch (alt80) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:5697:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            {
+                            // InternalPerspectiveDsl.g:5706:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalPerspectiveDsl.g:5707:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
+                            {
+                            // InternalPerspectiveDsl.g:5707:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
+                            // InternalPerspectiveDsl.g:5708:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            {
+                            // InternalPerspectiveDsl.g:5708:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:5709:9: lv_declaredParam_7_0= ruleJvmFormalParameter
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0());
+                              								
+                            }
+                            pushFollow(FOLLOW_75);
+                            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,101,FOLLOW_33); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
+                              						
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalPerspectiveDsl.g:5732:5: ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5733:6: (lv_switch_9_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:5733:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5734:7: lv_switch_9_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_63);
+                    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_76); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
+              		
+            }
+            // InternalPerspectiveDsl.g:5757:3: ( (lv_cases_11_0= ruleXCasePart ) )*
+            loop82:
+            do {
+                int alt82=2;
+                int LA82_0 = input.LA(1);
+
+                if ( (LA82_0==RULE_ID||(LA82_0>=57 && LA82_0<=58)||LA82_0==82||LA82_0==101||LA82_0==103) ) {
+                    alt82=1;
+                }
+
+
+                switch (alt82) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:5758:4: (lv_cases_11_0= ruleXCasePart )
+            	    {
+            	    // InternalPerspectiveDsl.g:5758:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalPerspectiveDsl.g:5759:5: lv_cases_11_0= ruleXCasePart
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_76);
+            	    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 loop82;
+                }
+            } while (true);
+
+            // InternalPerspectiveDsl.g:5776:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
+            int alt83=2;
+            int LA83_0 = input.LA(1);
+
+            if ( (LA83_0==102) ) {
+                alt83=1;
+            }
+            switch (alt83) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:5777:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
+                    {
+                    otherlv_12=(Token)match(input,102,FOLLOW_75); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
+                      			
+                    }
+                    otherlv_13=(Token)match(input,101,FOLLOW_33); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
+                      			
+                    }
+                    // InternalPerspectiveDsl.g:5785:4: ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5786:5: (lv_default_14_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:5786:5: (lv_default_14_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5787:6: lv_default_14_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_77);
+                    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"
+    // InternalPerspectiveDsl.g:5813:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
+    public final EObject entryRuleXCasePart() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCasePart = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:5813:50: (iv_ruleXCasePart= ruleXCasePart EOF )
+            // InternalPerspectiveDsl.g:5814: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"
+    // InternalPerspectiveDsl.g:5820: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 {
+            // InternalPerspectiveDsl.g:5826: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= ',' ) ) ) ) )
+            // InternalPerspectiveDsl.g:5827: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= ',' ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:5827: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= ',' ) ) ) )
+            // InternalPerspectiveDsl.g:5828: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= ',' ) ) )
+            {
+            // InternalPerspectiveDsl.g:5828:3: ()
+            // InternalPerspectiveDsl.g:5829:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:5835:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
+            int alt84=2;
+            int LA84_0 = input.LA(1);
+
+            if ( (LA84_0==RULE_ID||LA84_0==57||LA84_0==82) ) {
+                alt84=1;
+            }
+            switch (alt84) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:5836:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    {
+                    // InternalPerspectiveDsl.g:5836:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:5837:5: lv_typeGuard_1_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_78);
+                    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;
+
+            }
+
+            // InternalPerspectiveDsl.g:5854:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
+            int alt85=2;
+            int LA85_0 = input.LA(1);
+
+            if ( (LA85_0==103) ) {
+                alt85=1;
+            }
+            switch (alt85) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:5855:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
+                    {
+                    otherlv_2=(Token)match(input,103,FOLLOW_33); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
+                      			
+                    }
+                    // InternalPerspectiveDsl.g:5859:4: ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5860:5: (lv_case_3_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:5860:5: (lv_case_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5861:6: lv_case_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_79);
+                    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;
+
+            }
+
+            // InternalPerspectiveDsl.g:5879:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            int alt86=2;
+            int LA86_0 = input.LA(1);
+
+            if ( (LA86_0==101) ) {
+                alt86=1;
+            }
+            else if ( (LA86_0==58) ) {
+                alt86=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 86, 0, input);
+
+                throw nvae;
+            }
+            switch (alt86) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:5880:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:5880:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:5881:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
+                    {
+                    otherlv_4=(Token)match(input,101,FOLLOW_33); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
+                      				
+                    }
+                    // InternalPerspectiveDsl.g:5885:5: ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5886:6: (lv_then_5_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:5886:6: (lv_then_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5887: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 :
+                    // InternalPerspectiveDsl.g:5906:4: ( (lv_fallThrough_6_0= ',' ) )
+                    {
+                    // InternalPerspectiveDsl.g:5906:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalPerspectiveDsl.g:5907:5: (lv_fallThrough_6_0= ',' )
+                    {
+                    // InternalPerspectiveDsl.g:5907:5: (lv_fallThrough_6_0= ',' )
+                    // InternalPerspectiveDsl.g:5908:6: lv_fallThrough_6_0= ','
+                    {
+                    lv_fallThrough_6_0=(Token)match(input,58,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"
+    // InternalPerspectiveDsl.g:5925:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
+    public final EObject entryRuleXForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXForLoopExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:5925:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:5926: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"
+    // InternalPerspectiveDsl.g:5932: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 {
+            // InternalPerspectiveDsl.g:5938: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 ) ) ) )
+            // InternalPerspectiveDsl.g:5939: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 ) ) )
+            {
+            // InternalPerspectiveDsl.g:5939: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 ) ) )
+            // InternalPerspectiveDsl.g:5940: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 ) )
+            {
+            // InternalPerspectiveDsl.g:5940:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+            // InternalPerspectiveDsl.g:5941:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            {
+            // InternalPerspectiveDsl.g:5954:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalPerspectiveDsl.g:5955:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+            {
+            // InternalPerspectiveDsl.g:5955:5: ()
+            // InternalPerspectiveDsl.g:5956:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,104,FOLLOW_72); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
+              				
+            }
+            otherlv_2=(Token)match(input,57,FOLLOW_46); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+              				
+            }
+            // InternalPerspectiveDsl.g:5970:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:5971:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:5971:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:5972:7: lv_declaredParam_3_0= ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+
+              							newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0());
+              						
+            }
+            pushFollow(FOLLOW_75);
+            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,101,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:5995:3: ( (lv_forExpression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5996:4: (lv_forExpression_5_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:5996:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5997:5: lv_forExpression_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_31);
+            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,59,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
+              		
+            }
+            // InternalPerspectiveDsl.g:6018:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6019:4: (lv_eachExpression_7_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:6019:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6020: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"
+    // InternalPerspectiveDsl.g:6041:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
+    public final EObject entryRuleXBasicForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBasicForLoopExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6041:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:6042: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"
+    // InternalPerspectiveDsl.g:6048: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 {
+            // InternalPerspectiveDsl.g:6054: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 ) ) ) )
+            // InternalPerspectiveDsl.g:6055: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 ) ) )
+            {
+            // InternalPerspectiveDsl.g:6055: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 ) ) )
+            // InternalPerspectiveDsl.g:6056: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 ) )
+            {
+            // InternalPerspectiveDsl.g:6056:3: ()
+            // InternalPerspectiveDsl.g:6057:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,104,FOLLOW_72); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,57,FOLLOW_80); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalPerspectiveDsl.g:6071:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
+            int alt88=2;
+            int LA88_0 = input.LA(1);
+
+            if ( ((LA88_0>=RULE_ID && LA88_0<=RULE_DECIMAL)||LA88_0==14||(LA88_0>=50 && LA88_0<=52)||LA88_0==57||(LA88_0>=61 && LA88_0<=62)||LA88_0==69||(LA88_0>=85 && LA88_0<=86)||LA88_0==90||LA88_0==98||LA88_0==100||(LA88_0>=104 && LA88_0<=118)||LA88_0==120) ) {
+                alt88=1;
+            }
+            switch (alt88) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6072:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    {
+                    // InternalPerspectiveDsl.g:6072:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
+                    // InternalPerspectiveDsl.g:6073:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    {
+                    // InternalPerspectiveDsl.g:6073:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalPerspectiveDsl.g:6074:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_81);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:6091:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    loop87:
+                    do {
+                        int alt87=2;
+                        int LA87_0 = input.LA(1);
+
+                        if ( (LA87_0==58) ) {
+                            alt87=1;
+                        }
+
+
+                        switch (alt87) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:6092:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,58,FOLLOW_82); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalPerspectiveDsl.g:6096:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalPerspectiveDsl.g:6097:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:6097:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalPerspectiveDsl.g:6098:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_81);
+                    	    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 loop87;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,55,FOLLOW_83); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
+              		
+            }
+            // InternalPerspectiveDsl.g:6121:3: ( (lv_expression_7_0= ruleXExpression ) )?
+            int alt89=2;
+            int LA89_0 = input.LA(1);
+
+            if ( ((LA89_0>=RULE_ID && LA89_0<=RULE_DECIMAL)||LA89_0==14||(LA89_0>=50 && LA89_0<=52)||LA89_0==57||(LA89_0>=61 && LA89_0<=62)||LA89_0==69||(LA89_0>=85 && LA89_0<=86)||LA89_0==90||LA89_0==98||LA89_0==100||(LA89_0>=104 && LA89_0<=106)||(LA89_0>=109 && LA89_0<=118)||LA89_0==120) ) {
+                alt89=1;
+            }
+            switch (alt89) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6122:4: (lv_expression_7_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:6122:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6123:5: lv_expression_7_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_84);
+                    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,55,FOLLOW_29); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
+              		
+            }
+            // InternalPerspectiveDsl.g:6144:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
+            int alt91=2;
+            int LA91_0 = input.LA(1);
+
+            if ( ((LA91_0>=RULE_ID && LA91_0<=RULE_DECIMAL)||LA91_0==14||(LA91_0>=50 && LA91_0<=52)||LA91_0==57||(LA91_0>=61 && LA91_0<=62)||LA91_0==69||(LA91_0>=85 && LA91_0<=86)||LA91_0==90||LA91_0==98||LA91_0==100||(LA91_0>=104 && LA91_0<=106)||(LA91_0>=109 && LA91_0<=118)||LA91_0==120) ) {
+                alt91=1;
+            }
+            switch (alt91) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6145:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    {
+                    // InternalPerspectiveDsl.g:6145:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6146:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:6146:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6147:6: lv_updateExpressions_9_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_30);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:6164:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    loop90:
+                    do {
+                        int alt90=2;
+                        int LA90_0 = input.LA(1);
+
+                        if ( (LA90_0==58) ) {
+                            alt90=1;
+                        }
+
+
+                        switch (alt90) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:6165:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_10=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
+                    	      				
+                    	    }
+                    	    // InternalPerspectiveDsl.g:6169:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:6170:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:6170:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:6171:7: lv_updateExpressions_11_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_30);
+                    	    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 loop90;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_12=(Token)match(input,59,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
+              		
+            }
+            // InternalPerspectiveDsl.g:6194:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6195:4: (lv_eachExpression_13_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:6195:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6196: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"
+    // InternalPerspectiveDsl.g:6217:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
+    public final EObject entryRuleXWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXWhileExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6217:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
+            // InternalPerspectiveDsl.g:6218: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"
+    // InternalPerspectiveDsl.g:6224: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 {
+            // InternalPerspectiveDsl.g:6230:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:6231:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            {
+            // InternalPerspectiveDsl.g:6231:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:6232:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
+            {
+            // InternalPerspectiveDsl.g:6232:3: ()
+            // InternalPerspectiveDsl.g:6233:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,105,FOLLOW_72); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalPerspectiveDsl.g:6247:3: ( (lv_predicate_3_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6248:4: (lv_predicate_3_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:6248:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6249:5: lv_predicate_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_31);
+            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,59,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
+              		
+            }
+            // InternalPerspectiveDsl.g:6270:3: ( (lv_body_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6271:4: (lv_body_5_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:6271:4: (lv_body_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6272: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"
+    // InternalPerspectiveDsl.g:6293:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
+    public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXDoWhileExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6293:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
+            // InternalPerspectiveDsl.g:6294: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"
+    // InternalPerspectiveDsl.g:6300: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 {
+            // InternalPerspectiveDsl.g:6306:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
+            // InternalPerspectiveDsl.g:6307:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            {
+            // InternalPerspectiveDsl.g:6307:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalPerspectiveDsl.g:6308:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
+            {
+            // InternalPerspectiveDsl.g:6308:3: ()
+            // InternalPerspectiveDsl.g:6309:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,106,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:6319:3: ( (lv_body_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6320:4: (lv_body_2_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:6320:4: (lv_body_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6321:5: lv_body_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_85);
+            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,105,FOLLOW_72); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
+              		
+            }
+            otherlv_4=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
+              		
+            }
+            // InternalPerspectiveDsl.g:6346:3: ( (lv_predicate_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6347:4: (lv_predicate_5_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:6347:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6348:5: lv_predicate_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_31);
+            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,59,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"
+    // InternalPerspectiveDsl.g:6373:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
+    public final EObject entryRuleXBlockExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBlockExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6373:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
+            // InternalPerspectiveDsl.g:6374: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"
+    // InternalPerspectiveDsl.g:6380: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 {
+            // InternalPerspectiveDsl.g:6386:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
+            // InternalPerspectiveDsl.g:6387:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            {
+            // InternalPerspectiveDsl.g:6387:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalPerspectiveDsl.g:6388:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
+            {
+            // InternalPerspectiveDsl.g:6388:3: ()
+            // InternalPerspectiveDsl.g:6389:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,14,FOLLOW_86); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:6399:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
+            loop93:
+            do {
+                int alt93=2;
+                int LA93_0 = input.LA(1);
+
+                if ( ((LA93_0>=RULE_ID && LA93_0<=RULE_DECIMAL)||LA93_0==14||(LA93_0>=50 && LA93_0<=52)||LA93_0==57||(LA93_0>=61 && LA93_0<=62)||LA93_0==69||(LA93_0>=85 && LA93_0<=86)||LA93_0==90||LA93_0==98||LA93_0==100||(LA93_0>=104 && LA93_0<=118)||LA93_0==120) ) {
+                    alt93=1;
+                }
+
+
+                switch (alt93) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:6400:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
+            	    {
+            	    // InternalPerspectiveDsl.g:6400:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalPerspectiveDsl.g:6401:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    {
+            	    // InternalPerspectiveDsl.g:6401:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:6402:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_87);
+            	    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();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalPerspectiveDsl.g:6419:4: (otherlv_3= ';' )?
+            	    int alt92=2;
+            	    int LA92_0 = input.LA(1);
+
+            	    if ( (LA92_0==55) ) {
+            	        alt92=1;
+            	    }
+            	    switch (alt92) {
+            	        case 1 :
+            	            // InternalPerspectiveDsl.g:6420:5: otherlv_3= ';'
+            	            {
+            	            otherlv_3=(Token)match(input,55,FOLLOW_86); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+            	              				
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop93;
+                }
+            } 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"
+    // InternalPerspectiveDsl.g:6434:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
+    public final EObject entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpressionOrVarDeclaration = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6434:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
+            // InternalPerspectiveDsl.g:6435: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"
+    // InternalPerspectiveDsl.g:6441: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 {
+            // InternalPerspectiveDsl.g:6447:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6448:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:6448:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            int alt94=2;
+            int LA94_0 = input.LA(1);
+
+            if ( ((LA94_0>=107 && LA94_0<=108)) ) {
+                alt94=1;
+            }
+            else if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_DECIMAL)||LA94_0==14||(LA94_0>=50 && LA94_0<=52)||LA94_0==57||(LA94_0>=61 && LA94_0<=62)||LA94_0==69||(LA94_0>=85 && LA94_0<=86)||LA94_0==90||LA94_0==98||LA94_0==100||(LA94_0>=104 && LA94_0<=106)||(LA94_0>=109 && LA94_0<=118)||LA94_0==120) ) {
+                alt94=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 94, 0, input);
+
+                throw nvae;
+            }
+            switch (alt94) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6449: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 :
+                    // InternalPerspectiveDsl.g:6458: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"
+    // InternalPerspectiveDsl.g:6470:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
+    public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXVariableDeclaration = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6470:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
+            // InternalPerspectiveDsl.g:6471: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"
+    // InternalPerspectiveDsl.g:6477: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 {
+            // InternalPerspectiveDsl.g:6483: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 ) ) )? ) )
+            // InternalPerspectiveDsl.g:6484: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 ) ) )? )
+            {
+            // InternalPerspectiveDsl.g:6484: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 ) ) )? )
+            // InternalPerspectiveDsl.g:6485: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 ) ) )?
+            {
+            // InternalPerspectiveDsl.g:6485:3: ()
+            // InternalPerspectiveDsl.g:6486:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:6492:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
+            int alt95=2;
+            int LA95_0 = input.LA(1);
+
+            if ( (LA95_0==107) ) {
+                alt95=1;
+            }
+            else if ( (LA95_0==108) ) {
+                alt95=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 95, 0, input);
+
+                throw nvae;
+            }
+            switch (alt95) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6493:4: ( (lv_writeable_1_0= 'var' ) )
+                    {
+                    // InternalPerspectiveDsl.g:6493:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalPerspectiveDsl.g:6494:5: (lv_writeable_1_0= 'var' )
+                    {
+                    // InternalPerspectiveDsl.g:6494:5: (lv_writeable_1_0= 'var' )
+                    // InternalPerspectiveDsl.g:6495:6: lv_writeable_1_0= 'var'
+                    {
+                    lv_writeable_1_0=(Token)match(input,107,FOLLOW_46); 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 :
+                    // InternalPerspectiveDsl.g:6508:4: otherlv_2= 'val'
+                    {
+                    otherlv_2=(Token)match(input,108,FOLLOW_46); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalPerspectiveDsl.g:6513:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
+            int alt96=2;
+            int LA96_0 = input.LA(1);
+
+            if ( (LA96_0==RULE_ID) ) {
+                int LA96_1 = input.LA(2);
+
+                if ( (synpred35_InternalPerspectiveDsl()) ) {
+                    alt96=1;
+                }
+                else if ( (true) ) {
+                    alt96=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 96, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA96_0==57) && (synpred35_InternalPerspectiveDsl())) {
+                alt96=1;
+            }
+            else if ( (LA96_0==82) && (synpred35_InternalPerspectiveDsl())) {
+                alt96=1;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 96, 0, input);
+
+                throw nvae;
+            }
+            switch (alt96) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6514:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:6514:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:6515:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:6528:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalPerspectiveDsl.g:6529:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
+                    {
+                    // InternalPerspectiveDsl.g:6529:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
+                    // InternalPerspectiveDsl.g:6530:7: (lv_type_3_0= ruleJvmTypeReference )
+                    {
+                    // InternalPerspectiveDsl.g:6530:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6531: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();
+                      							
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:6548:6: ( (lv_name_4_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6549:7: (lv_name_4_0= ruleValidID )
+                    {
+                    // InternalPerspectiveDsl.g:6549:7: (lv_name_4_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6550:8: lv_name_4_0= ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0());
+                      							
+                    }
+                    pushFollow(FOLLOW_88);
+                    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 :
+                    // InternalPerspectiveDsl.g:6570:4: ( (lv_name_5_0= ruleValidID ) )
+                    {
+                    // InternalPerspectiveDsl.g:6570:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6571:5: (lv_name_5_0= ruleValidID )
+                    {
+                    // InternalPerspectiveDsl.g:6571:5: (lv_name_5_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6572:6: lv_name_5_0= ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_88);
+                    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;
+
+            }
+
+            // InternalPerspectiveDsl.g:6590:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            int alt97=2;
+            int LA97_0 = input.LA(1);
+
+            if ( (LA97_0==60) ) {
+                alt97=1;
+            }
+            switch (alt97) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6591:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
+                    {
+                    otherlv_6=(Token)match(input,60,FOLLOW_33); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
+                      			
+                    }
+                    // InternalPerspectiveDsl.g:6595:4: ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6596:5: (lv_right_7_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:6596:5: (lv_right_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6597: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"
+    // InternalPerspectiveDsl.g:6619:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
+    public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmFormalParameter = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6619:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:6620: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"
+    // InternalPerspectiveDsl.g:6626: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 {
+            // InternalPerspectiveDsl.g:6632:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalPerspectiveDsl.g:6633:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            {
+            // InternalPerspectiveDsl.g:6633:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6634:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
+            {
+            // InternalPerspectiveDsl.g:6634:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
+            int alt98=2;
+            int LA98_0 = input.LA(1);
+
+            if ( (LA98_0==RULE_ID) ) {
+                int LA98_1 = input.LA(2);
+
+                if ( (LA98_1==RULE_ID||LA98_1==62||LA98_1==69||LA98_1==94) ) {
+                    alt98=1;
+                }
+            }
+            else if ( (LA98_0==57||LA98_0==82) ) {
+                alt98=1;
+            }
+            switch (alt98) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6635:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    {
+                    // InternalPerspectiveDsl.g:6635:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6636: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;
+
+            }
+
+            // InternalPerspectiveDsl.g:6653:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:6654:4: (lv_name_1_0= ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:6654:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:6655: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"
+    // InternalPerspectiveDsl.g:6676:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
+    public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFullJvmFormalParameter = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6676:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:6677: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"
+    // InternalPerspectiveDsl.g:6683: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 {
+            // InternalPerspectiveDsl.g:6689:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalPerspectiveDsl.g:6690:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            {
+            // InternalPerspectiveDsl.g:6690:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6691:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
+            {
+            // InternalPerspectiveDsl.g:6691:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:6692:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:6692:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:6693: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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:6710:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:6711:4: (lv_name_1_0= ruleValidID )
+            {
+            // InternalPerspectiveDsl.g:6711:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:6712: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"
+    // InternalPerspectiveDsl.g:6733:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
+    public final EObject entryRuleXFeatureCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXFeatureCall = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6733:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
+            // InternalPerspectiveDsl.g:6734: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"
+    // InternalPerspectiveDsl.g:6740: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 {
+            // InternalPerspectiveDsl.g:6746: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 ) )? ) )
+            // InternalPerspectiveDsl.g:6747: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 ) )? )
+            {
+            // InternalPerspectiveDsl.g:6747: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 ) )? )
+            // InternalPerspectiveDsl.g:6748: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 ) )?
+            {
+            // InternalPerspectiveDsl.g:6748:3: ()
+            // InternalPerspectiveDsl.g:6749:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:6755:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
+            int alt100=2;
+            int LA100_0 = input.LA(1);
+
+            if ( (LA100_0==69) ) {
+                alt100=1;
+            }
+            switch (alt100) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6756:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
+                    {
+                    otherlv_1=(Token)match(input,69,FOLLOW_58); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
+                      			
+                    }
+                    // InternalPerspectiveDsl.g:6760:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalPerspectiveDsl.g:6761:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalPerspectiveDsl.g:6761:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:6762:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_59);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:6779:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop99:
+                    do {
+                        int alt99=2;
+                        int LA99_0 = input.LA(1);
+
+                        if ( (LA99_0==58) ) {
+                            alt99=1;
+                        }
+
+
+                        switch (alt99) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:6780:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_3=(Token)match(input,58,FOLLOW_58); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
+                    	      				
+                    	    }
+                    	    // InternalPerspectiveDsl.g:6784:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:6785:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:6785:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:6786:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_59);
+                    	    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 loop99;
+                        }
+                    } while (true);
+
+                    otherlv_5=(Token)match(input,70,FOLLOW_57); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalPerspectiveDsl.g:6809:3: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:6810:4: ( ruleIdOrSuper )
+            {
+            // InternalPerspectiveDsl.g:6810:4: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:6811: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_89);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:6825: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 alt103=2;
+            alt103 = dfa103.predict(input);
+            switch (alt103) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6826: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= ')'
+                    {
+                    // InternalPerspectiveDsl.g:6826:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
+                    // InternalPerspectiveDsl.g:6827:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
+                    {
+                    // InternalPerspectiveDsl.g:6831:5: (lv_explicitOperationCall_7_0= '(' )
+                    // InternalPerspectiveDsl.g:6832:6: lv_explicitOperationCall_7_0= '('
+                    {
+                    lv_explicitOperationCall_7_0=(Token)match(input,57,FOLLOW_61); 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, "(");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:6844:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
+                    int alt102=3;
+                    alt102 = dfa102.predict(input);
+                    switch (alt102) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:6845:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            {
+                            // InternalPerspectiveDsl.g:6845:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:6846:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            {
+                            // InternalPerspectiveDsl.g:6871:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:6872:7: lv_featureCallArguments_8_0= ruleXShortClosure
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_31);
+                            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 :
+                            // InternalPerspectiveDsl.g:6890:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            {
+                            // InternalPerspectiveDsl.g:6890:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:6891:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            {
+                            // InternalPerspectiveDsl.g:6891:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:6892:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            {
+                            // InternalPerspectiveDsl.g:6892:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:6893:8: lv_featureCallArguments_9_0= ruleXExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_30);
+                            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();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalPerspectiveDsl.g:6910:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            loop101:
+                            do {
+                                int alt101=2;
+                                int LA101_0 = input.LA(1);
+
+                                if ( (LA101_0==58) ) {
+                                    alt101=1;
+                                }
+
+
+                                switch (alt101) {
+                            	case 1 :
+                            	    // InternalPerspectiveDsl.g:6911:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    {
+                            	    otherlv_10=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
+                            	      						
+                            	    }
+                            	    // InternalPerspectiveDsl.g:6915:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:6916:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    {
+                            	    // InternalPerspectiveDsl.g:6916:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:6917:9: lv_featureCallArguments_11_0= ruleXExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_30);
+                            	    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 loop101;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_12=(Token)match(input,59,FOLLOW_90); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalPerspectiveDsl.g:6942:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            int alt104=2;
+            alt104 = dfa104.predict(input);
+            switch (alt104) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6943:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
+                    {
+                    // InternalPerspectiveDsl.g:6949:4: (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:6950: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"
+    // InternalPerspectiveDsl.g:6971:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
+    public final String entryRuleFeatureCallID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleFeatureCallID = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:6971:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
+            // InternalPerspectiveDsl.g:6972: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"
+    // InternalPerspectiveDsl.g:6978: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 {
+            // InternalPerspectiveDsl.g:6984:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
+            // InternalPerspectiveDsl.g:6985:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            {
+            // InternalPerspectiveDsl.g:6985:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            int alt105=5;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                alt105=1;
+                }
+                break;
+            case 109:
+                {
+                alt105=2;
+                }
+                break;
+            case 51:
+                {
+                alt105=3;
+                }
+                break;
+            case 50:
+                {
+                alt105=4;
+                }
+                break;
+            case 52:
+                {
+                alt105=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 105, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt105) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:6986: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 :
+                    // InternalPerspectiveDsl.g:6997:3: kw= 'extends'
+                    {
+                    kw=(Token)match(input,109,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalPerspectiveDsl.g:7003:3: kw= 'static'
+                    {
+                    kw=(Token)match(input,51,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalPerspectiveDsl.g:7009:3: kw= 'import'
+                    {
+                    kw=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3());
+                      		
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // InternalPerspectiveDsl.g:7015:3: kw= 'extension'
+                    {
+                    kw=(Token)match(input,52,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"
+    // InternalPerspectiveDsl.g:7024:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
+    public final String entryRuleIdOrSuper() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleIdOrSuper = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7024:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
+            // InternalPerspectiveDsl.g:7025: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"
+    // InternalPerspectiveDsl.g:7031: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 {
+            // InternalPerspectiveDsl.g:7037:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
+            // InternalPerspectiveDsl.g:7038:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            {
+            // InternalPerspectiveDsl.g:7038:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            int alt106=2;
+            int LA106_0 = input.LA(1);
+
+            if ( (LA106_0==RULE_ID||(LA106_0>=50 && LA106_0<=52)||LA106_0==109) ) {
+                alt106=1;
+            }
+            else if ( (LA106_0==110) ) {
+                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 :
+                    // InternalPerspectiveDsl.g:7039: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 :
+                    // InternalPerspectiveDsl.g:7050:3: kw= 'super'
+                    {
+                    kw=(Token)match(input,110,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"
+    // InternalPerspectiveDsl.g:7059:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
+    public final EObject entryRuleXConstructorCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXConstructorCall = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7059:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
+            // InternalPerspectiveDsl.g:7060: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"
+    // InternalPerspectiveDsl.g:7066: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 {
+            // InternalPerspectiveDsl.g:7072: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 ) )? ) )
+            // InternalPerspectiveDsl.g:7073: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 ) )? )
+            {
+            // InternalPerspectiveDsl.g:7073: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 ) )? )
+            // InternalPerspectiveDsl.g:7074: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 ) )?
+            {
+            // InternalPerspectiveDsl.g:7074:3: ()
+            // InternalPerspectiveDsl.g:7075:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,111,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:7085:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:7086:4: ( ruleQualifiedName )
+            {
+            // InternalPerspectiveDsl.g:7086:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7087: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_91);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:7101:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
+            int alt108=2;
+            alt108 = dfa108.predict(input);
+            switch (alt108) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7102:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
+                    {
+                    // InternalPerspectiveDsl.g:7102:4: ( ( '<' )=>otherlv_3= '<' )
+                    // InternalPerspectiveDsl.g:7103:5: ( '<' )=>otherlv_3= '<'
+                    {
+                    otherlv_3=(Token)match(input,69,FOLLOW_58); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalPerspectiveDsl.g:7109:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    // InternalPerspectiveDsl.g:7110:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalPerspectiveDsl.g:7110:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:7111:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_59);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:7128:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop107:
+                    do {
+                        int alt107=2;
+                        int LA107_0 = input.LA(1);
+
+                        if ( (LA107_0==58) ) {
+                            alt107=1;
+                        }
+
+
+                        switch (alt107) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:7129:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_5=(Token)match(input,58,FOLLOW_58); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
+                    	      				
+                    	    }
+                    	    // InternalPerspectiveDsl.g:7133:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:7134:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:7134:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:7135:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_59);
+                    	    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 loop107;
+                        }
+                    } while (true);
+
+                    otherlv_7=(Token)match(input,70,FOLLOW_89); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalPerspectiveDsl.g:7158: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 alt111=2;
+            alt111 = dfa111.predict(input);
+            switch (alt111) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7159: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= ')'
+                    {
+                    // InternalPerspectiveDsl.g:7159:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
+                    // InternalPerspectiveDsl.g:7160:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
+                    {
+                    // InternalPerspectiveDsl.g:7164:5: (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalPerspectiveDsl.g:7165:6: lv_explicitConstructorCall_8_0= '('
+                    {
+                    lv_explicitConstructorCall_8_0=(Token)match(input,57,FOLLOW_61); 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, "(");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:7177:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
+                    int alt110=3;
+                    alt110 = dfa110.predict(input);
+                    switch (alt110) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:7178:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            {
+                            // InternalPerspectiveDsl.g:7178:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:7179:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
+                            {
+                            // InternalPerspectiveDsl.g:7204:6: (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:7205:7: lv_arguments_9_0= ruleXShortClosure
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_31);
+                            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 :
+                            // InternalPerspectiveDsl.g:7223:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            {
+                            // InternalPerspectiveDsl.g:7223:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:7224:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            {
+                            // InternalPerspectiveDsl.g:7224:6: ( (lv_arguments_10_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:7225:7: (lv_arguments_10_0= ruleXExpression )
+                            {
+                            // InternalPerspectiveDsl.g:7225:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7226:8: lv_arguments_10_0= ruleXExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_30);
+                            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();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalPerspectiveDsl.g:7243:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            loop109:
+                            do {
+                                int alt109=2;
+                                int LA109_0 = input.LA(1);
+
+                                if ( (LA109_0==58) ) {
+                                    alt109=1;
+                                }
+
+
+                                switch (alt109) {
+                            	case 1 :
+                            	    // InternalPerspectiveDsl.g:7244:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    {
+                            	    otherlv_11=(Token)match(input,58,FOLLOW_33); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
+                            	      						
+                            	    }
+                            	    // InternalPerspectiveDsl.g:7248:7: ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:7249:8: (lv_arguments_12_0= ruleXExpression )
+                            	    {
+                            	    // InternalPerspectiveDsl.g:7249:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:7250:9: lv_arguments_12_0= ruleXExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_30);
+                            	    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 loop109;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_13=(Token)match(input,59,FOLLOW_90); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalPerspectiveDsl.g:7275:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            int alt112=2;
+            alt112 = dfa112.predict(input);
+            switch (alt112) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7276:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
+                    {
+                    // InternalPerspectiveDsl.g:7282:4: (lv_arguments_14_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:7283: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"
+    // InternalPerspectiveDsl.g:7304:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
+    public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBooleanLiteral = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7304:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
+            // InternalPerspectiveDsl.g:7305: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"
+    // InternalPerspectiveDsl.g:7311: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 {
+            // InternalPerspectiveDsl.g:7317:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
+            // InternalPerspectiveDsl.g:7318:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:7318:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalPerspectiveDsl.g:7319:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            {
+            // InternalPerspectiveDsl.g:7319:3: ()
+            // InternalPerspectiveDsl.g:7320:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:7326:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            int alt113=2;
+            int LA113_0 = input.LA(1);
+
+            if ( (LA113_0==112) ) {
+                alt113=1;
+            }
+            else if ( (LA113_0==113) ) {
+                alt113=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 113, 0, input);
+
+                throw nvae;
+            }
+            switch (alt113) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7327:4: otherlv_1= 'false'
+                    {
+                    otherlv_1=(Token)match(input,112,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
+                      			
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:7332:4: ( (lv_isTrue_2_0= 'true' ) )
+                    {
+                    // InternalPerspectiveDsl.g:7332:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalPerspectiveDsl.g:7333:5: (lv_isTrue_2_0= 'true' )
+                    {
+                    // InternalPerspectiveDsl.g:7333:5: (lv_isTrue_2_0= 'true' )
+                    // InternalPerspectiveDsl.g:7334:6: lv_isTrue_2_0= 'true'
+                    {
+                    lv_isTrue_2_0=(Token)match(input,113,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"
+    // InternalPerspectiveDsl.g:7351:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
+    public final EObject entryRuleXNullLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXNullLiteral = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7351:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
+            // InternalPerspectiveDsl.g:7352: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"
+    // InternalPerspectiveDsl.g:7358:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
+    public final EObject ruleXNullLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:7364:2: ( ( () otherlv_1= 'null' ) )
+            // InternalPerspectiveDsl.g:7365:2: ( () otherlv_1= 'null' )
+            {
+            // InternalPerspectiveDsl.g:7365:2: ( () otherlv_1= 'null' )
+            // InternalPerspectiveDsl.g:7366:3: () otherlv_1= 'null'
+            {
+            // InternalPerspectiveDsl.g:7366:3: ()
+            // InternalPerspectiveDsl.g:7367:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,114,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"
+    // InternalPerspectiveDsl.g:7381:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
+    public final EObject entryRuleXNumberLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXNumberLiteral = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7381:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
+            // InternalPerspectiveDsl.g:7382: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"
+    // InternalPerspectiveDsl.g:7388: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 {
+            // InternalPerspectiveDsl.g:7394:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
+            // InternalPerspectiveDsl.g:7395:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            {
+            // InternalPerspectiveDsl.g:7395:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalPerspectiveDsl.g:7396:3: () ( (lv_value_1_0= ruleNumber ) )
+            {
+            // InternalPerspectiveDsl.g:7396:3: ()
+            // InternalPerspectiveDsl.g:7397:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:7403:3: ( (lv_value_1_0= ruleNumber ) )
+            // InternalPerspectiveDsl.g:7404:4: (lv_value_1_0= ruleNumber )
+            {
+            // InternalPerspectiveDsl.g:7404:4: (lv_value_1_0= ruleNumber )
+            // InternalPerspectiveDsl.g:7405: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"
+    // InternalPerspectiveDsl.g:7426:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
+    public final EObject entryRuleXStringLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXStringLiteral = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7426:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
+            // InternalPerspectiveDsl.g:7427: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"
+    // InternalPerspectiveDsl.g:7433: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 {
+            // InternalPerspectiveDsl.g:7439:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
+            // InternalPerspectiveDsl.g:7440:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            {
+            // InternalPerspectiveDsl.g:7440:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:7441:3: () ( (lv_value_1_0= RULE_STRING ) )
+            {
+            // InternalPerspectiveDsl.g:7441:3: ()
+            // InternalPerspectiveDsl.g:7442:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalPerspectiveDsl.g:7448:3: ( (lv_value_1_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:7449:4: (lv_value_1_0= RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:7449:4: (lv_value_1_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:7450: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"
+    // InternalPerspectiveDsl.g:7470:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
+    public final EObject entryRuleXTypeLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXTypeLiteral = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7470:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
+            // InternalPerspectiveDsl.g:7471: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"
+    // InternalPerspectiveDsl.g:7477: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 {
+            // InternalPerspectiveDsl.g:7483:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
+            // InternalPerspectiveDsl.g:7484:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            {
+            // InternalPerspectiveDsl.g:7484:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalPerspectiveDsl.g:7485:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
+            {
+            // InternalPerspectiveDsl.g:7485:3: ()
+            // InternalPerspectiveDsl.g:7486:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,115,FOLLOW_72); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,57,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalPerspectiveDsl.g:7500:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:7501:4: ( ruleQualifiedName )
+            {
+            // InternalPerspectiveDsl.g:7501:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7502: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_92);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:7516:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
+            loop114:
+            do {
+                int alt114=2;
+                int LA114_0 = input.LA(1);
+
+                if ( (LA114_0==62) ) {
+                    alt114=1;
+                }
+
+
+                switch (alt114) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:7517:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    {
+            	    // InternalPerspectiveDsl.g:7517:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalPerspectiveDsl.g:7518:5: lv_arrayDimensions_4_0= ruleArrayBrackets
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_92);
+            	    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 loop114;
+                }
+            } while (true);
+
+            otherlv_5=(Token)match(input,59,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"
+    // InternalPerspectiveDsl.g:7543:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
+    public final EObject entryRuleXThrowExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXThrowExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7543:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
+            // InternalPerspectiveDsl.g:7544: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"
+    // InternalPerspectiveDsl.g:7550: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 {
+            // InternalPerspectiveDsl.g:7556:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:7557:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            {
+            // InternalPerspectiveDsl.g:7557:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7558:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
+            {
+            // InternalPerspectiveDsl.g:7558:3: ()
+            // InternalPerspectiveDsl.g:7559:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,116,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:7569:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7570:4: (lv_expression_2_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:7570:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7571: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"
+    // InternalPerspectiveDsl.g:7592:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
+    public final EObject entryRuleXReturnExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXReturnExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7592:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
+            // InternalPerspectiveDsl.g:7593: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"
+    // InternalPerspectiveDsl.g:7599: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 {
+            // InternalPerspectiveDsl.g:7605: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 ) )? ) )
+            // InternalPerspectiveDsl.g:7606: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 ) )? )
+            {
+            // InternalPerspectiveDsl.g:7606: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 ) )? )
+            // InternalPerspectiveDsl.g:7607: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 ) )?
+            {
+            // InternalPerspectiveDsl.g:7607:3: ()
+            // InternalPerspectiveDsl.g:7608:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,117,FOLLOW_93); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:7618: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 alt115=2;
+            alt115 = dfa115.predict(input);
+            switch (alt115) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7619: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 )
+                    {
+                    // InternalPerspectiveDsl.g:7620:4: (lv_expression_2_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:7621: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"
+    // InternalPerspectiveDsl.g:7642:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
+    public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXTryCatchFinallyExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7642:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
+            // InternalPerspectiveDsl.g:7643: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"
+    // InternalPerspectiveDsl.g:7649: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 {
+            // InternalPerspectiveDsl.g:7655: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 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:7656: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 ) ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:7656: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 ) ) ) ) )
+            // InternalPerspectiveDsl.g:7657: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 ) ) ) )
+            {
+            // InternalPerspectiveDsl.g:7657:3: ()
+            // InternalPerspectiveDsl.g:7658:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,118,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:7668:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7669:4: (lv_expression_2_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:7669:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7670:5: lv_expression_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_94);
+            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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:7687: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 alt118=2;
+            int LA118_0 = input.LA(1);
+
+            if ( (LA118_0==121) ) {
+                alt118=1;
+            }
+            else if ( (LA118_0==119) ) {
+                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 :
+                    // InternalPerspectiveDsl.g:7688:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    {
+                    // InternalPerspectiveDsl.g:7688:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalPerspectiveDsl.g:7689:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    {
+                    // InternalPerspectiveDsl.g:7689:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
+                    int cnt116=0;
+                    loop116:
+                    do {
+                        int alt116=2;
+                        int LA116_0 = input.LA(1);
+
+                        if ( (LA116_0==121) ) {
+                            int LA116_2 = input.LA(2);
+
+                            if ( (synpred44_InternalPerspectiveDsl()) ) {
+                                alt116=1;
+                            }
+
+
+                        }
+
+
+                        switch (alt116) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:7690:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:7691:6: (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalPerspectiveDsl.g:7692:7: lv_catchClauses_3_0= ruleXCatchClause
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_95);
+                    	    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 ( cnt116 >= 1 ) break loop116;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(116, input);
+                                throw eee;
+                        }
+                        cnt116++;
+                    } while (true);
+
+                    // InternalPerspectiveDsl.g:7709:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    int alt117=2;
+                    int LA117_0 = input.LA(1);
+
+                    if ( (LA117_0==119) ) {
+                        int LA117_1 = input.LA(2);
+
+                        if ( (synpred45_InternalPerspectiveDsl()) ) {
+                            alt117=1;
+                        }
+                    }
+                    switch (alt117) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:7710:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            {
+                            // InternalPerspectiveDsl.g:7710:6: ( ( 'finally' )=>otherlv_4= 'finally' )
+                            // InternalPerspectiveDsl.g:7711:7: ( 'finally' )=>otherlv_4= 'finally'
+                            {
+                            otherlv_4=(Token)match(input,119,FOLLOW_33); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+                              						
+                            }
+
+                            }
+
+                            // InternalPerspectiveDsl.g:7717:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:7718:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            {
+                            // InternalPerspectiveDsl.g:7718:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7719: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 :
+                    // InternalPerspectiveDsl.g:7739:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:7739:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:7740:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    {
+                    otherlv_6=(Token)match(input,119,FOLLOW_33); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+                      				
+                    }
+                    // InternalPerspectiveDsl.g:7744:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:7745:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    {
+                    // InternalPerspectiveDsl.g:7745:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:7746: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"
+    // InternalPerspectiveDsl.g:7769:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
+    public final EObject entryRuleXSynchronizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSynchronizedExpression = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7769:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
+            // InternalPerspectiveDsl.g:7770: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"
+    // InternalPerspectiveDsl.g:7776: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 {
+            // InternalPerspectiveDsl.g:7782:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:7783:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            {
+            // InternalPerspectiveDsl.g:7783:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7784:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
+            {
+            // InternalPerspectiveDsl.g:7784:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
+            // InternalPerspectiveDsl.g:7785:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            {
+            // InternalPerspectiveDsl.g:7792:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalPerspectiveDsl.g:7793:5: () otherlv_1= 'synchronized' otherlv_2= '('
+            {
+            // InternalPerspectiveDsl.g:7793:5: ()
+            // InternalPerspectiveDsl.g:7794:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,120,FOLLOW_72); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+              				
+            }
+            otherlv_2=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:7810:3: ( (lv_param_3_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7811:4: (lv_param_3_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:7811:4: (lv_param_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7812:5: lv_param_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_31);
+            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,59,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+              		
+            }
+            // InternalPerspectiveDsl.g:7833:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7834:4: (lv_expression_5_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:7834:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7835: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"
+    // InternalPerspectiveDsl.g:7856:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
+    public final EObject entryRuleXCatchClause() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCatchClause = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7856:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
+            // InternalPerspectiveDsl.g:7857: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"
+    // InternalPerspectiveDsl.g:7863: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 {
+            // InternalPerspectiveDsl.g:7869:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:7870:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            {
+            // InternalPerspectiveDsl.g:7870:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7871:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
+            {
+            // InternalPerspectiveDsl.g:7871:3: ( ( 'catch' )=>otherlv_0= 'catch' )
+            // InternalPerspectiveDsl.g:7872:4: ( 'catch' )=>otherlv_0= 'catch'
+            {
+            otherlv_0=(Token)match(input,121,FOLLOW_72); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,57,FOLLOW_46); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:7882:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:7883:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            {
+            // InternalPerspectiveDsl.g:7883:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:7884:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_31);
+            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,59,FOLLOW_33); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+              		
+            }
+            // InternalPerspectiveDsl.g:7905:3: ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7906:4: (lv_expression_4_0= ruleXExpression )
+            {
+            // InternalPerspectiveDsl.g:7906:4: (lv_expression_4_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7907: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"
+    // InternalPerspectiveDsl.g:7928:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+    public final String entryRuleQualifiedName() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:7928:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+            // InternalPerspectiveDsl.g:7929: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"
+    // InternalPerspectiveDsl.g:7935: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 {
+            // InternalPerspectiveDsl.g:7941:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
+            // InternalPerspectiveDsl.g:7942:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            {
+            // InternalPerspectiveDsl.g:7942:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalPerspectiveDsl.g:7943:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_96);
+            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();
+              		
+            }
+            // InternalPerspectiveDsl.g:7953:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            loop119:
+            do {
+                int alt119=2;
+                int LA119_0 = input.LA(1);
+
+                if ( (LA119_0==94) ) {
+                    int LA119_2 = input.LA(2);
+
+                    if ( (LA119_2==RULE_ID) ) {
+                        int LA119_3 = input.LA(3);
+
+                        if ( (synpred48_InternalPerspectiveDsl()) ) {
+                            alt119=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt119) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:7954:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    {
+            	    // InternalPerspectiveDsl.g:7954:4: ( ( '.' )=>kw= '.' )
+            	    // InternalPerspectiveDsl.g:7955:5: ( '.' )=>kw= '.'
+            	    {
+            	    kw=(Token)match(input,94,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_96);
+            	    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 loop119;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedName"
+
+
+    // $ANTLR start "entryRuleNumber"
+    // InternalPerspectiveDsl.g:7977: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 {
+            // InternalPerspectiveDsl.g:7979:2: (iv_ruleNumber= ruleNumber EOF )
+            // InternalPerspectiveDsl.g:7980: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"
+    // InternalPerspectiveDsl.g:7989: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 {
+            // InternalPerspectiveDsl.g:7996: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 ) )? ) ) )
+            // InternalPerspectiveDsl.g:7997: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 ) )? ) )
+            {
+            // InternalPerspectiveDsl.g:7997: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 alt123=2;
+            int LA123_0 = input.LA(1);
+
+            if ( (LA123_0==RULE_HEX) ) {
+                alt123=1;
+            }
+            else if ( (LA123_0==RULE_INT||LA123_0==RULE_DECIMAL) ) {
+                alt123=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 123, 0, input);
+
+                throw nvae;
+            }
+            switch (alt123) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:7998: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 :
+                    // InternalPerspectiveDsl.g:8006:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    {
+                    // InternalPerspectiveDsl.g:8006:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalPerspectiveDsl.g:8007:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    {
+                    // InternalPerspectiveDsl.g:8007:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
+                    int alt120=2;
+                    int LA120_0 = input.LA(1);
+
+                    if ( (LA120_0==RULE_INT) ) {
+                        alt120=1;
+                    }
+                    else if ( (LA120_0==RULE_DECIMAL) ) {
+                        alt120=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 120, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt120) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:8008:5: this_INT_1= RULE_INT
+                            {
+                            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_96); 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 :
+                            // InternalPerspectiveDsl.g:8016:5: this_DECIMAL_2= RULE_DECIMAL
+                            {
+                            this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_96); 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;
+
+                    }
+
+                    // InternalPerspectiveDsl.g:8024:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    int alt122=2;
+                    int LA122_0 = input.LA(1);
+
+                    if ( (LA122_0==94) ) {
+                        int LA122_1 = input.LA(2);
+
+                        if ( (LA122_1==RULE_INT||LA122_1==RULE_DECIMAL) ) {
+                            alt122=1;
+                        }
+                    }
+                    switch (alt122) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:8025:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            {
+                            kw=(Token)match(input,94,FOLLOW_97); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
+                              				
+                            }
+                            // InternalPerspectiveDsl.g:8030:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            int alt121=2;
+                            int LA121_0 = input.LA(1);
+
+                            if ( (LA121_0==RULE_INT) ) {
+                                alt121=1;
+                            }
+                            else if ( (LA121_0==RULE_DECIMAL) ) {
+                                alt121=2;
+                            }
+                            else {
+                                if (state.backtracking>0) {state.failed=true; return current;}
+                                NoViableAltException nvae =
+                                    new NoViableAltException("", 121, 0, input);
+
+                                throw nvae;
+                            }
+                            switch (alt121) {
+                                case 1 :
+                                    // InternalPerspectiveDsl.g:8031: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 :
+                                    // InternalPerspectiveDsl.g:8039: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"
+    // InternalPerspectiveDsl.g:8056:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+    public final EObject entryRuleJvmTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmTypeReference = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8056:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+            // InternalPerspectiveDsl.g:8057: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"
+    // InternalPerspectiveDsl.g:8063: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 {
+            // InternalPerspectiveDsl.g:8069:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+            // InternalPerspectiveDsl.g:8070:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            {
+            // InternalPerspectiveDsl.g:8070:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            int alt125=2;
+            int LA125_0 = input.LA(1);
+
+            if ( (LA125_0==RULE_ID) ) {
+                alt125=1;
+            }
+            else if ( (LA125_0==57||LA125_0==82) ) {
+                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 :
+                    // InternalPerspectiveDsl.g:8071:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    {
+                    // InternalPerspectiveDsl.g:8071:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalPerspectiveDsl.g:8072:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
+                      			
+                    }
+                    pushFollow(FOLLOW_90);
+                    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_JvmParameterizedTypeReference_0;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+                    // InternalPerspectiveDsl.g:8080:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    loop124:
+                    do {
+                        int alt124=2;
+                        int LA124_0 = input.LA(1);
+
+                        if ( (LA124_0==62) ) {
+                            int LA124_2 = input.LA(2);
+
+                            if ( (LA124_2==63) ) {
+                                int LA124_3 = input.LA(3);
+
+                                if ( (synpred49_InternalPerspectiveDsl()) ) {
+                                    alt124=1;
+                                }
+
+
+                            }
+
+
+                        }
+
+
+                        switch (alt124) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:8081:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:8087:5: ( () ruleArrayBrackets )
+                    	    // InternalPerspectiveDsl.g:8088:6: () ruleArrayBrackets
+                    	    {
+                    	    // InternalPerspectiveDsl.g:8088:6: ()
+                    	    // InternalPerspectiveDsl.g:8089: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_90);
+                    	    ruleArrayBrackets();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop124;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:8106: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"
+    // InternalPerspectiveDsl.g:8118:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+    public final String entryRuleArrayBrackets() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleArrayBrackets = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8118:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+            // InternalPerspectiveDsl.g:8119: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"
+    // InternalPerspectiveDsl.g:8125:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+    public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:8131:2: ( (kw= '[' kw= ']' ) )
+            // InternalPerspectiveDsl.g:8132:2: (kw= '[' kw= ']' )
+            {
+            // InternalPerspectiveDsl.g:8132:2: (kw= '[' kw= ']' )
+            // InternalPerspectiveDsl.g:8133:3: kw= '[' kw= ']'
+            {
+            kw=(Token)match(input,62,FOLLOW_69); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
+              		
+            }
+            kw=(Token)match(input,63,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"
+    // InternalPerspectiveDsl.g:8147:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+    public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXFunctionTypeRef = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8147:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+            // InternalPerspectiveDsl.g:8148: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"
+    // InternalPerspectiveDsl.g:8154: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 {
+            // InternalPerspectiveDsl.g:8160:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8161:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalPerspectiveDsl.g:8161:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8162:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            {
+            // InternalPerspectiveDsl.g:8162:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+            int alt128=2;
+            int LA128_0 = input.LA(1);
+
+            if ( (LA128_0==57) ) {
+                alt128=1;
+            }
+            switch (alt128) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:8163:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+                    {
+                    otherlv_0=(Token)match(input,57,FOLLOW_98); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+                      			
+                    }
+                    // InternalPerspectiveDsl.g:8167:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+                    int alt127=2;
+                    int LA127_0 = input.LA(1);
+
+                    if ( (LA127_0==RULE_ID||LA127_0==57||LA127_0==82) ) {
+                        alt127=1;
+                    }
+                    switch (alt127) {
+                        case 1 :
+                            // InternalPerspectiveDsl.g:8168:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            {
+                            // InternalPerspectiveDsl.g:8168:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+                            // InternalPerspectiveDsl.g:8169:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            {
+                            // InternalPerspectiveDsl.g:8169:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalPerspectiveDsl.g:8170:7: lv_paramTypes_1_0= ruleJvmTypeReference
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_30);
+                            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();
+                              						
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalPerspectiveDsl.g:8187:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            loop126:
+                            do {
+                                int alt126=2;
+                                int LA126_0 = input.LA(1);
+
+                                if ( (LA126_0==58) ) {
+                                    alt126=1;
+                                }
+
+
+                                switch (alt126) {
+                            	case 1 :
+                            	    // InternalPerspectiveDsl.g:8188:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    {
+                            	    otherlv_2=(Token)match(input,58,FOLLOW_46); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+                            	      					
+                            	    }
+                            	    // InternalPerspectiveDsl.g:8192:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalPerspectiveDsl.g:8193:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    {
+                            	    // InternalPerspectiveDsl.g:8193:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalPerspectiveDsl.g:8194:8: lv_paramTypes_3_0= ruleJvmTypeReference
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
+                            	      							
+                            	    }
+                            	    pushFollow(FOLLOW_30);
+                            	    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 loop126;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_4=(Token)match(input,59,FOLLOW_99); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            otherlv_5=(Token)match(input,82,FOLLOW_46); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:8222:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8223:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:8223:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8224: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"
+    // InternalPerspectiveDsl.g:8245:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+    public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmParameterizedTypeReference = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8245:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+            // InternalPerspectiveDsl.g:8246: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"
+    // InternalPerspectiveDsl.g:8252: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 {
+            // InternalPerspectiveDsl.g:8258: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= '>' )? )* )? ) )
+            // InternalPerspectiveDsl.g:8259: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= '>' )? )* )? )
+            {
+            // InternalPerspectiveDsl.g:8259: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= '>' )? )* )? )
+            // InternalPerspectiveDsl.g:8260: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= '>' )? )* )?
+            {
+            // InternalPerspectiveDsl.g:8260:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:8261:4: ( ruleQualifiedName )
+            {
+            // InternalPerspectiveDsl.g:8261:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:8262: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_100);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalPerspectiveDsl.g:8276: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 alt133=2;
+            alt133 = dfa133.predict(input);
+            switch (alt133) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:8277: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= '>' )? )*
+                    {
+                    // InternalPerspectiveDsl.g:8277:4: ( ( '<' )=>otherlv_1= '<' )
+                    // InternalPerspectiveDsl.g:8278:5: ( '<' )=>otherlv_1= '<'
+                    {
+                    otherlv_1=(Token)match(input,69,FOLLOW_58); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalPerspectiveDsl.g:8284:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalPerspectiveDsl.g:8285:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalPerspectiveDsl.g:8285:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:8286:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_59);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:8303:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop129:
+                    do {
+                        int alt129=2;
+                        int LA129_0 = input.LA(1);
+
+                        if ( (LA129_0==58) ) {
+                            alt129=1;
+                        }
+
+
+                        switch (alt129) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:8304:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_3=(Token)match(input,58,FOLLOW_58); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+                    	      				
+                    	    }
+                    	    // InternalPerspectiveDsl.g:8308:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:8309:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:8309:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:8310:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_59);
+                    	    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 loop129;
+                        }
+                    } while (true);
+
+                    otherlv_5=(Token)match(input,70,FOLLOW_96); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+                      			
+                    }
+                    // InternalPerspectiveDsl.g:8332:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    loop132:
+                    do {
+                        int alt132=2;
+                        int LA132_0 = input.LA(1);
+
+                        if ( (LA132_0==94) ) {
+                            int LA132_2 = input.LA(2);
+
+                            if ( (LA132_2==RULE_ID) ) {
+                                int LA132_3 = input.LA(3);
+
+                                if ( (synpred51_InternalPerspectiveDsl()) ) {
+                                    alt132=1;
+                                }
+
+
+                            }
+
+
+                        }
+
+
+                        switch (alt132) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:8333:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    {
+                    	    // InternalPerspectiveDsl.g:8333:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+                    	    // InternalPerspectiveDsl.g:8334:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:8340:6: ( () otherlv_7= '.' )
+                    	    // InternalPerspectiveDsl.g:8341:7: () otherlv_7= '.'
+                    	    {
+                    	    // InternalPerspectiveDsl.g:8341:7: ()
+                    	    // InternalPerspectiveDsl.g:8342:8: 
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      								current = forceCreateModelElementAndSet(
+                    	      									grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+                    	      									current);
+                    	      							
+                    	    }
+
+                    	    }
+
+                    	    otherlv_7=(Token)match(input,94,FOLLOW_4); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    // InternalPerspectiveDsl.g:8354:5: ( ( ruleValidID ) )
+                    	    // InternalPerspectiveDsl.g:8355:6: ( ruleValidID )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:8355:6: ( ruleValidID )
+                    	    // InternalPerspectiveDsl.g:8356: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_101);
+                    	    ruleValidID();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    // InternalPerspectiveDsl.g:8370:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    int alt131=2;
+                    	    alt131 = dfa131.predict(input);
+                    	    switch (alt131) {
+                    	        case 1 :
+                    	            // InternalPerspectiveDsl.g:8371:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+                    	            {
+                    	            // InternalPerspectiveDsl.g:8371:6: ( ( '<' )=>otherlv_9= '<' )
+                    	            // InternalPerspectiveDsl.g:8372:7: ( '<' )=>otherlv_9= '<'
+                    	            {
+                    	            otherlv_9=(Token)match(input,69,FOLLOW_58); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+                    	              						
+                    	            }
+
+                    	            }
+
+                    	            // InternalPerspectiveDsl.g:8378:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+                    	            // InternalPerspectiveDsl.g:8379:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            {
+                    	            // InternalPerspectiveDsl.g:8379:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalPerspectiveDsl.g:8380:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+
+                    	              								newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
+                    	              							
+                    	            }
+                    	            pushFollow(FOLLOW_59);
+                    	            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();
+                    	              							
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+                    	            // InternalPerspectiveDsl.g:8397:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+                    	            loop130:
+                    	            do {
+                    	                int alt130=2;
+                    	                int LA130_0 = input.LA(1);
+
+                    	                if ( (LA130_0==58) ) {
+                    	                    alt130=1;
+                    	                }
+
+
+                    	                switch (alt130) {
+                    	            	case 1 :
+                    	            	    // InternalPerspectiveDsl.g:8398:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    {
+                    	            	    otherlv_11=(Token)match(input,58,FOLLOW_58); if (state.failed) return current;
+                    	            	    if ( state.backtracking==0 ) {
+
+                    	            	      							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+                    	            	      						
+                    	            	    }
+                    	            	    // InternalPerspectiveDsl.g:8402:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalPerspectiveDsl.g:8403:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    {
+                    	            	    // InternalPerspectiveDsl.g:8403:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalPerspectiveDsl.g:8404:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+                    	            	    {
+                    	            	    if ( state.backtracking==0 ) {
+
+                    	            	      									newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
+                    	            	      								
+                    	            	    }
+                    	            	    pushFollow(FOLLOW_59);
+                    	            	    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 loop130;
+                    	                }
+                    	            } while (true);
+
+                    	            otherlv_13=(Token)match(input,70,FOLLOW_96); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+                    	              					
+                    	            }
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop132;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmArgumentTypeReference"
+    // InternalPerspectiveDsl.g:8433:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+    public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmArgumentTypeReference = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8433:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+            // InternalPerspectiveDsl.g:8434: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"
+    // InternalPerspectiveDsl.g:8440: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 {
+            // InternalPerspectiveDsl.g:8446:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+            // InternalPerspectiveDsl.g:8447:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            {
+            // InternalPerspectiveDsl.g:8447:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            int alt134=2;
+            int LA134_0 = input.LA(1);
+
+            if ( (LA134_0==RULE_ID||LA134_0==57||LA134_0==82) ) {
+                alt134=1;
+            }
+            else if ( (LA134_0==122) ) {
+                alt134=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 134, 0, input);
+
+                throw nvae;
+            }
+            switch (alt134) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:8448: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 :
+                    // InternalPerspectiveDsl.g:8457: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"
+    // InternalPerspectiveDsl.g:8469:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+    public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmWildcardTypeReference = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8469:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+            // InternalPerspectiveDsl.g:8470: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"
+    // InternalPerspectiveDsl.g:8476: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 {
+            // InternalPerspectiveDsl.g:8482:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
+            // InternalPerspectiveDsl.g:8483:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            {
+            // InternalPerspectiveDsl.g:8483:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalPerspectiveDsl.g:8484:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            {
+            // InternalPerspectiveDsl.g:8484:3: ()
+            // InternalPerspectiveDsl.g:8485:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,122,FOLLOW_102); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+              		
+            }
+            // InternalPerspectiveDsl.g:8495:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            int alt137=3;
+            int LA137_0 = input.LA(1);
+
+            if ( (LA137_0==109) ) {
+                alt137=1;
+            }
+            else if ( (LA137_0==110) ) {
+                alt137=2;
+            }
+            switch (alt137) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:8496:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    {
+                    // InternalPerspectiveDsl.g:8496:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8497:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    {
+                    // InternalPerspectiveDsl.g:8497:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+                    // InternalPerspectiveDsl.g:8498:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    {
+                    // InternalPerspectiveDsl.g:8498:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalPerspectiveDsl.g:8499:7: lv_constraints_2_0= ruleJvmUpperBound
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_103);
+                    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();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:8516:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    loop135:
+                    do {
+                        int alt135=2;
+                        int LA135_0 = input.LA(1);
+
+                        if ( (LA135_0==123) ) {
+                            alt135=1;
+                        }
+
+
+                        switch (alt135) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:8517:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:8517:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8518:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_103);
+                    	    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 loop135;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:8537:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    {
+                    // InternalPerspectiveDsl.g:8537:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8538:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    {
+                    // InternalPerspectiveDsl.g:8538:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+                    // InternalPerspectiveDsl.g:8539:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    {
+                    // InternalPerspectiveDsl.g:8539:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalPerspectiveDsl.g:8540:7: lv_constraints_4_0= ruleJvmLowerBound
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_103);
+                    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();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalPerspectiveDsl.g:8557:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    loop136:
+                    do {
+                        int alt136=2;
+                        int LA136_0 = input.LA(1);
+
+                        if ( (LA136_0==123) ) {
+                            alt136=1;
+                        }
+
+
+                        switch (alt136) {
+                    	case 1 :
+                    	    // InternalPerspectiveDsl.g:8558:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    {
+                    	    // InternalPerspectiveDsl.g:8558:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8559:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_103);
+                    	    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 loop136;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmUpperBound"
+    // InternalPerspectiveDsl.g:8582:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+    public final EObject entryRuleJvmUpperBound() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmUpperBound = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8582:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+            // InternalPerspectiveDsl.g:8583: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"
+    // InternalPerspectiveDsl.g:8589: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 {
+            // InternalPerspectiveDsl.g:8595:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8596:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalPerspectiveDsl.g:8596:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8597:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,109,FOLLOW_46); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+              		
+            }
+            // InternalPerspectiveDsl.g:8601:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8602:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:8602:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8603: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"
+    // InternalPerspectiveDsl.g:8624:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+    public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmUpperBoundAnded = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8624:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+            // InternalPerspectiveDsl.g:8625: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"
+    // InternalPerspectiveDsl.g:8631: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 {
+            // InternalPerspectiveDsl.g:8637:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8638:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalPerspectiveDsl.g:8638:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8639:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,123,FOLLOW_46); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+              		
+            }
+            // InternalPerspectiveDsl.g:8643:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8644:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:8644:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8645: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"
+    // InternalPerspectiveDsl.g:8666:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+    public final EObject entryRuleJvmLowerBound() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmLowerBound = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8666:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+            // InternalPerspectiveDsl.g:8667: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"
+    // InternalPerspectiveDsl.g:8673: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 {
+            // InternalPerspectiveDsl.g:8679:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8680:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalPerspectiveDsl.g:8680:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8681:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,110,FOLLOW_46); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+              		
+            }
+            // InternalPerspectiveDsl.g:8685:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8686:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:8686:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8687: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"
+    // InternalPerspectiveDsl.g:8708:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+    public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmLowerBoundAnded = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8708:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+            // InternalPerspectiveDsl.g:8709: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"
+    // InternalPerspectiveDsl.g:8715: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 {
+            // InternalPerspectiveDsl.g:8721:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8722:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalPerspectiveDsl.g:8722:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8723:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,123,FOLLOW_46); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+              		
+            }
+            // InternalPerspectiveDsl.g:8727:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8728:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalPerspectiveDsl.g:8728:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8729: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"
+    // InternalPerspectiveDsl.g:8750:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+    public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8750:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+            // InternalPerspectiveDsl.g:8751: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"
+    // InternalPerspectiveDsl.g:8757: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 {
+            // InternalPerspectiveDsl.g:8763:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+            // InternalPerspectiveDsl.g:8764:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            {
+            // InternalPerspectiveDsl.g:8764:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalPerspectiveDsl.g:8765:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_104);
+            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,94,FOLLOW_105); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
+              		
+            }
+            kw=(Token)match(input,53,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"
+    // InternalPerspectiveDsl.g:8789:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+    public final String entryRuleValidID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleValidID = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8789:47: (iv_ruleValidID= ruleValidID EOF )
+            // InternalPerspectiveDsl.g:8790: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"
+    // InternalPerspectiveDsl.g:8796: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 {
+            // InternalPerspectiveDsl.g:8802:2: (this_ID_0= RULE_ID )
+            // InternalPerspectiveDsl.g:8803: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"
+    // InternalPerspectiveDsl.g:8813:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
+    public final EObject entryRuleXImportSection() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXImportSection = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8813:55: (iv_ruleXImportSection= ruleXImportSection EOF )
+            // InternalPerspectiveDsl.g:8814: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"
+    // InternalPerspectiveDsl.g:8820: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 {
+            // InternalPerspectiveDsl.g:8826:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
+            // InternalPerspectiveDsl.g:8827:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            {
+            // InternalPerspectiveDsl.g:8827:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            int cnt138=0;
+            loop138:
+            do {
+                int alt138=2;
+                int LA138_0 = input.LA(1);
+
+                if ( (LA138_0==50) ) {
+                    alt138=1;
+                }
+
+
+                switch (alt138) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:8828:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    {
+            	    // InternalPerspectiveDsl.g:8828:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalPerspectiveDsl.g:8829:4: lv_importDeclarations_0_0= ruleXImportDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      				newCompositeNode(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0());
+            	      			
+            	    }
+            	    pushFollow(FOLLOW_106);
+            	    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 ( cnt138 >= 1 ) break loop138;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(138, input);
+                        throw eee;
+                }
+                cnt138++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXImportSection"
+
+
+    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+    // InternalPerspectiveDsl.g:8849:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+    public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedNameInStaticImport = null;
+
+
+        try {
+            // InternalPerspectiveDsl.g:8849:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+            // InternalPerspectiveDsl.g:8850: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"
+    // InternalPerspectiveDsl.g:8856: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 {
+            // InternalPerspectiveDsl.g:8862:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+            // InternalPerspectiveDsl.g:8863:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            {
+            // InternalPerspectiveDsl.g:8863:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            int cnt139=0;
+            loop139:
+            do {
+                int alt139=2;
+                int LA139_0 = input.LA(1);
+
+                if ( (LA139_0==RULE_ID) ) {
+                    int LA139_2 = input.LA(2);
+
+                    if ( (LA139_2==94) ) {
+                        alt139=1;
+                    }
+
+
+                }
+
+
+                switch (alt139) {
+            	case 1 :
+            	    // InternalPerspectiveDsl.g:8864:3: this_ValidID_0= ruleValidID kw= '.'
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
+            	      		
+            	    }
+            	    pushFollow(FOLLOW_104);
+            	    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,94,FOLLOW_107); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			current.merge(kw);
+            	      			newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
+            	      		
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt139 >= 1 ) break loop139;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(139, input);
+                        throw eee;
+                }
+                cnt139++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleSashOrientation"
+    // InternalPerspectiveDsl.g:8883:1: ruleSashOrientation returns [Enumerator current=null] : ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) ;
+    public final Enumerator ruleSashOrientation() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalPerspectiveDsl.g:8889:2: ( ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) )
+            // InternalPerspectiveDsl.g:8890:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
+            {
+            // InternalPerspectiveDsl.g:8890:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
+            int alt140=2;
+            int LA140_0 = input.LA(1);
+
+            if ( (LA140_0==124) ) {
+                alt140=1;
+            }
+            else if ( (LA140_0==125) ) {
+                alt140=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 140, 0, input);
+
+                throw nvae;
+            }
+            switch (alt140) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:8891:3: (enumLiteral_0= 'horizontal' )
+                    {
+                    // InternalPerspectiveDsl.g:8891:3: (enumLiteral_0= 'horizontal' )
+                    // InternalPerspectiveDsl.g:8892:4: enumLiteral_0= 'horizontal'
+                    {
+                    enumLiteral_0=(Token)match(input,124,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalPerspectiveDsl.g:8899:3: (enumLiteral_1= 'vertical' )
+                    {
+                    // InternalPerspectiveDsl.g:8899:3: (enumLiteral_1= 'vertical' )
+                    // InternalPerspectiveDsl.g:8900:4: enumLiteral_1= 'vertical'
+                    {
+                    enumLiteral_1=(Token)match(input,125,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSashOrientation"
+
+    // $ANTLR start synpred1_InternalPerspectiveDsl
+    public final void synpred1_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2259:5: ( '(' )
+        // InternalPerspectiveDsl.g:2259:6: '('
+        {
+        match(input,57,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred1_InternalPerspectiveDsl
+
+    // $ANTLR start synpred2_InternalPerspectiveDsl
+    public final void synpred2_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2268:7: ( ( ( ( ruleValidID ) ) '=' ) )
+        // InternalPerspectiveDsl.g:2268:8: ( ( ( ruleValidID ) ) '=' )
+        {
+        // InternalPerspectiveDsl.g:2268:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalPerspectiveDsl.g:2269:8: ( ( ruleValidID ) ) '='
+        {
+        // InternalPerspectiveDsl.g:2269:8: ( ( ruleValidID ) )
+        // InternalPerspectiveDsl.g:2270:9: ( ruleValidID )
+        {
+        // InternalPerspectiveDsl.g:2270:9: ( ruleValidID )
+        // InternalPerspectiveDsl.g:2271:10: ruleValidID
+        {
+        pushFollow(FOLLOW_32);
+        ruleValidID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,60,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred2_InternalPerspectiveDsl
+
+    // $ANTLR start synpred5_InternalPerspectiveDsl
+    public final void synpred5_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2448:5: ( ( () '#' '[' ) )
+        // InternalPerspectiveDsl.g:2448:6: ( () '#' '[' )
+        {
+        // InternalPerspectiveDsl.g:2448:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2449:6: () '#' '['
+        {
+        // InternalPerspectiveDsl.g:2449:6: ()
+        // InternalPerspectiveDsl.g:2450:6: 
+        {
+        }
+
+        match(input,61,FOLLOW_34); if (state.failed) return ;
+        match(input,62,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred5_InternalPerspectiveDsl
+
+    // $ANTLR start synpred6_InternalPerspectiveDsl
+    public final void synpred6_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2590:5: ( ( () '#' '[' ) )
+        // InternalPerspectiveDsl.g:2590:6: ( () '#' '[' )
+        {
+        // InternalPerspectiveDsl.g:2590:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2591:6: () '#' '['
+        {
+        // InternalPerspectiveDsl.g:2591:6: ()
+        // InternalPerspectiveDsl.g:2592:6: 
+        {
+        }
+
+        match(input,61,FOLLOW_34); if (state.failed) return ;
+        match(input,62,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred6_InternalPerspectiveDsl
+
+    // $ANTLR start synpred7_InternalPerspectiveDsl
+    public final void synpred7_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:2818:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
+        // InternalPerspectiveDsl.g:2818:7: ( () ( ( ruleOpMultiAssign ) ) )
+        {
+        // InternalPerspectiveDsl.g:2818:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalPerspectiveDsl.g:2819:7: () ( ( ruleOpMultiAssign ) )
+        {
+        // InternalPerspectiveDsl.g:2819:7: ()
+        // InternalPerspectiveDsl.g:2820:7: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:2821:7: ( ( ruleOpMultiAssign ) )
+        // InternalPerspectiveDsl.g:2822:8: ( ruleOpMultiAssign )
+        {
+        // InternalPerspectiveDsl.g:2822:8: ( ruleOpMultiAssign )
+        // InternalPerspectiveDsl.g:2823:9: ruleOpMultiAssign
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpMultiAssign();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred7_InternalPerspectiveDsl
+
+    // $ANTLR start synpred8_InternalPerspectiveDsl
+    public final void synpred8_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3012:5: ( ( () ( ( ruleOpOr ) ) ) )
+        // InternalPerspectiveDsl.g:3012:6: ( () ( ( ruleOpOr ) ) )
+        {
+        // InternalPerspectiveDsl.g:3012:6: ( () ( ( ruleOpOr ) ) )
+        // InternalPerspectiveDsl.g:3013:6: () ( ( ruleOpOr ) )
+        {
+        // InternalPerspectiveDsl.g:3013:6: ()
+        // InternalPerspectiveDsl.g:3014:6: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:3015:6: ( ( ruleOpOr ) )
+        // InternalPerspectiveDsl.g:3016:7: ( ruleOpOr )
+        {
+        // InternalPerspectiveDsl.g:3016:7: ( ruleOpOr )
+        // InternalPerspectiveDsl.g:3017:8: ruleOpOr
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpOr();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred8_InternalPerspectiveDsl
+
+    // $ANTLR start synpred9_InternalPerspectiveDsl
+    public final void synpred9_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3119:5: ( ( () ( ( ruleOpAnd ) ) ) )
+        // InternalPerspectiveDsl.g:3119:6: ( () ( ( ruleOpAnd ) ) )
+        {
+        // InternalPerspectiveDsl.g:3119:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalPerspectiveDsl.g:3120:6: () ( ( ruleOpAnd ) )
+        {
+        // InternalPerspectiveDsl.g:3120:6: ()
+        // InternalPerspectiveDsl.g:3121:6: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:3122:6: ( ( ruleOpAnd ) )
+        // InternalPerspectiveDsl.g:3123:7: ( ruleOpAnd )
+        {
+        // InternalPerspectiveDsl.g:3123:7: ( ruleOpAnd )
+        // InternalPerspectiveDsl.g:3124:8: ruleOpAnd
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpAnd();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred9_InternalPerspectiveDsl
+
+    // $ANTLR start synpred10_InternalPerspectiveDsl
+    public final void synpred10_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3226:5: ( ( () ( ( ruleOpEquality ) ) ) )
+        // InternalPerspectiveDsl.g:3226:6: ( () ( ( ruleOpEquality ) ) )
+        {
+        // InternalPerspectiveDsl.g:3226:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalPerspectiveDsl.g:3227:6: () ( ( ruleOpEquality ) )
+        {
+        // InternalPerspectiveDsl.g:3227:6: ()
+        // InternalPerspectiveDsl.g:3228:6: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:3229:6: ( ( ruleOpEquality ) )
+        // InternalPerspectiveDsl.g:3230:7: ( ruleOpEquality )
+        {
+        // InternalPerspectiveDsl.g:3230:7: ( ruleOpEquality )
+        // InternalPerspectiveDsl.g:3231:8: ruleOpEquality
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpEquality();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred10_InternalPerspectiveDsl
+
+    // $ANTLR start synpred11_InternalPerspectiveDsl
+    public final void synpred11_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3354:6: ( ( () 'instanceof' ) )
+        // InternalPerspectiveDsl.g:3354:7: ( () 'instanceof' )
+        {
+        // InternalPerspectiveDsl.g:3354:7: ( () 'instanceof' )
+        // InternalPerspectiveDsl.g:3355:7: () 'instanceof'
+        {
+        // InternalPerspectiveDsl.g:3355:7: ()
+        // InternalPerspectiveDsl.g:3356:7: 
+        {
+        }
+
+        match(input,78,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred11_InternalPerspectiveDsl
+
+    // $ANTLR start synpred12_InternalPerspectiveDsl
+    public final void synpred12_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3397:6: ( ( () ( ( ruleOpCompare ) ) ) )
+        // InternalPerspectiveDsl.g:3397:7: ( () ( ( ruleOpCompare ) ) )
+        {
+        // InternalPerspectiveDsl.g:3397:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalPerspectiveDsl.g:3398:7: () ( ( ruleOpCompare ) )
+        {
+        // InternalPerspectiveDsl.g:3398:7: ()
+        // InternalPerspectiveDsl.g:3399:7: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:3400:7: ( ( ruleOpCompare ) )
+        // InternalPerspectiveDsl.g:3401:8: ( ruleOpCompare )
+        {
+        // InternalPerspectiveDsl.g:3401:8: ( ruleOpCompare )
+        // InternalPerspectiveDsl.g:3402:9: ruleOpCompare
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpCompare();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred12_InternalPerspectiveDsl
+
+    // $ANTLR start synpred13_InternalPerspectiveDsl
+    public final void synpred13_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3532:5: ( ( () ( ( ruleOpOther ) ) ) )
+        // InternalPerspectiveDsl.g:3532:6: ( () ( ( ruleOpOther ) ) )
+        {
+        // InternalPerspectiveDsl.g:3532:6: ( () ( ( ruleOpOther ) ) )
+        // InternalPerspectiveDsl.g:3533:6: () ( ( ruleOpOther ) )
+        {
+        // InternalPerspectiveDsl.g:3533:6: ()
+        // InternalPerspectiveDsl.g:3534:6: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:3535:6: ( ( ruleOpOther ) )
+        // InternalPerspectiveDsl.g:3536:7: ( ruleOpOther )
+        {
+        // InternalPerspectiveDsl.g:3536:7: ( ruleOpOther )
+        // InternalPerspectiveDsl.g:3537:8: ruleOpOther
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpOther();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred13_InternalPerspectiveDsl
+
+    // $ANTLR start synpred14_InternalPerspectiveDsl
+    public final void synpred14_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3652:6: ( ( '>' '>' ) )
+        // InternalPerspectiveDsl.g:3652:7: ( '>' '>' )
+        {
+        // InternalPerspectiveDsl.g:3652:7: ( '>' '>' )
+        // InternalPerspectiveDsl.g:3653:7: '>' '>'
+        {
+        match(input,70,FOLLOW_49); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred14_InternalPerspectiveDsl
+
+    // $ANTLR start synpred15_InternalPerspectiveDsl
+    public final void synpred15_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3687:6: ( ( '<' '<' ) )
+        // InternalPerspectiveDsl.g:3687:7: ( '<' '<' )
+        {
+        // InternalPerspectiveDsl.g:3687:7: ( '<' '<' )
+        // InternalPerspectiveDsl.g:3688:7: '<' '<'
+        {
+        match(input,69,FOLLOW_39); if (state.failed) return ;
+        match(input,69,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred15_InternalPerspectiveDsl
+
+    // $ANTLR start synpred16_InternalPerspectiveDsl
+    public final void synpred16_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3760:5: ( ( () ( ( ruleOpAdd ) ) ) )
+        // InternalPerspectiveDsl.g:3760:6: ( () ( ( ruleOpAdd ) ) )
+        {
+        // InternalPerspectiveDsl.g:3760:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalPerspectiveDsl.g:3761:6: () ( ( ruleOpAdd ) )
+        {
+        // InternalPerspectiveDsl.g:3761:6: ()
+        // InternalPerspectiveDsl.g:3762:6: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:3763:6: ( ( ruleOpAdd ) )
+        // InternalPerspectiveDsl.g:3764:7: ( ruleOpAdd )
+        {
+        // InternalPerspectiveDsl.g:3764:7: ( ruleOpAdd )
+        // InternalPerspectiveDsl.g:3765:8: ruleOpAdd
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpAdd();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred16_InternalPerspectiveDsl
+
+    // $ANTLR start synpred17_InternalPerspectiveDsl
+    public final void synpred17_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:3875:5: ( ( () ( ( ruleOpMulti ) ) ) )
+        // InternalPerspectiveDsl.g:3875:6: ( () ( ( ruleOpMulti ) ) )
+        {
+        // InternalPerspectiveDsl.g:3875:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalPerspectiveDsl.g:3876:6: () ( ( ruleOpMulti ) )
+        {
+        // InternalPerspectiveDsl.g:3876:6: ()
+        // InternalPerspectiveDsl.g:3877:6: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:3878:6: ( ( ruleOpMulti ) )
+        // InternalPerspectiveDsl.g:3879:7: ( ruleOpMulti )
+        {
+        // InternalPerspectiveDsl.g:3879:7: ( ruleOpMulti )
+        // InternalPerspectiveDsl.g:3880:8: ruleOpMulti
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpMulti();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred17_InternalPerspectiveDsl
+
+    // $ANTLR start synpred18_InternalPerspectiveDsl
+    public final void synpred18_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4110:5: ( ( () 'as' ) )
+        // InternalPerspectiveDsl.g:4110:6: ( () 'as' )
+        {
+        // InternalPerspectiveDsl.g:4110:6: ( () 'as' )
+        // InternalPerspectiveDsl.g:4111:6: () 'as'
+        {
+        // InternalPerspectiveDsl.g:4111:6: ()
+        // InternalPerspectiveDsl.g:4112:6: 
+        {
+        }
+
+        match(input,91,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred18_InternalPerspectiveDsl
+
+    // $ANTLR start synpred19_InternalPerspectiveDsl
+    public final void synpred19_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4178:4: ( ( () ( ( ruleOpPostfix ) ) ) )
+        // InternalPerspectiveDsl.g:4178:5: ( () ( ( ruleOpPostfix ) ) )
+        {
+        // InternalPerspectiveDsl.g:4178:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalPerspectiveDsl.g:4179:5: () ( ( ruleOpPostfix ) )
+        {
+        // InternalPerspectiveDsl.g:4179:5: ()
+        // InternalPerspectiveDsl.g:4180:5: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:4181:5: ( ( ruleOpPostfix ) )
+        // InternalPerspectiveDsl.g:4182:6: ( ruleOpPostfix )
+        {
+        // InternalPerspectiveDsl.g:4182:6: ( ruleOpPostfix )
+        // InternalPerspectiveDsl.g:4183:7: ruleOpPostfix
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpPostfix();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred19_InternalPerspectiveDsl
+
+    // $ANTLR start synpred20_InternalPerspectiveDsl
+    public final void synpred20_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4274:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+        // InternalPerspectiveDsl.g:4274:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        {
+        // InternalPerspectiveDsl.g:4274:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalPerspectiveDsl.g:4275:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+        {
+        // InternalPerspectiveDsl.g:4275:7: ()
+        // InternalPerspectiveDsl.g:4276:7: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:4277:7: ( '.' | ( ( '::' ) ) )
+        int alt141=2;
+        int LA141_0 = input.LA(1);
+
+        if ( (LA141_0==94) ) {
+            alt141=1;
+        }
+        else if ( (LA141_0==95) ) {
+            alt141=2;
+        }
+        else {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 141, 0, input);
+
+            throw nvae;
+        }
+        switch (alt141) {
+            case 1 :
+                // InternalPerspectiveDsl.g:4278:8: '.'
+                {
+                match(input,94,FOLLOW_56); if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // InternalPerspectiveDsl.g:4280:8: ( ( '::' ) )
+                {
+                // InternalPerspectiveDsl.g:4280:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4281:9: ( '::' )
+                {
+                // InternalPerspectiveDsl.g:4281:9: ( '::' )
+                // InternalPerspectiveDsl.g:4282:10: '::'
+                {
+                match(input,95,FOLLOW_56); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+
+        }
+
+        // InternalPerspectiveDsl.g:4286:7: ( ( ruleFeatureCallID ) )
+        // InternalPerspectiveDsl.g:4287:8: ( ruleFeatureCallID )
+        {
+        // InternalPerspectiveDsl.g:4287:8: ( ruleFeatureCallID )
+        // InternalPerspectiveDsl.g:4288:9: ruleFeatureCallID
+        {
+        pushFollow(FOLLOW_32);
+        ruleFeatureCallID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        pushFollow(FOLLOW_2);
+        ruleOpSingleAssign();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred20_InternalPerspectiveDsl
+
+    // $ANTLR start synpred21_InternalPerspectiveDsl
+    public final void synpred21_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4371:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
+        // InternalPerspectiveDsl.g:4371:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:4371:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalPerspectiveDsl.g:4372:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        {
+        // InternalPerspectiveDsl.g:4372:7: ()
+        // InternalPerspectiveDsl.g:4373:7: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:4374:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        int alt142=3;
+        switch ( input.LA(1) ) {
+        case 94:
+            {
+            alt142=1;
+            }
+            break;
+        case 96:
+            {
+            alt142=2;
+            }
+            break;
+        case 95:
+            {
+            alt142=3;
+            }
+            break;
+        default:
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 142, 0, input);
+
+            throw nvae;
+        }
+
+        switch (alt142) {
+            case 1 :
+                // InternalPerspectiveDsl.g:4375:8: '.'
+                {
+                match(input,94,FOLLOW_2); if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // InternalPerspectiveDsl.g:4377:8: ( ( '?.' ) )
+                {
+                // InternalPerspectiveDsl.g:4377:8: ( ( '?.' ) )
+                // InternalPerspectiveDsl.g:4378:9: ( '?.' )
+                {
+                // InternalPerspectiveDsl.g:4378:9: ( '?.' )
+                // InternalPerspectiveDsl.g:4379:10: '?.'
+                {
+                match(input,96,FOLLOW_2); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+            case 3 :
+                // InternalPerspectiveDsl.g:4383:8: ( ( '::' ) )
+                {
+                // InternalPerspectiveDsl.g:4383:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4384:9: ( '::' )
+                {
+                // InternalPerspectiveDsl.g:4384:9: ( '::' )
+                // InternalPerspectiveDsl.g:4385:10: '::'
+                {
+                match(input,95,FOLLOW_2); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred21_InternalPerspectiveDsl
+
+    // $ANTLR start synpred22_InternalPerspectiveDsl
+    public final void synpred22_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4509:7: ( ( '(' ) )
+        // InternalPerspectiveDsl.g:4509:8: ( '(' )
+        {
+        // InternalPerspectiveDsl.g:4509:8: ( '(' )
+        // InternalPerspectiveDsl.g:4510:8: '('
+        {
+        match(input,57,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred22_InternalPerspectiveDsl
+
+    // $ANTLR start synpred23_InternalPerspectiveDsl
+    public final void synpred23_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4528:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:4528:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalPerspectiveDsl.g:4528:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:4529:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalPerspectiveDsl.g:4529:9: ()
+        // InternalPerspectiveDsl.g:4530:9: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:4531:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt144=2;
+        int LA144_0 = input.LA(1);
+
+        if ( (LA144_0==RULE_ID||LA144_0==57||LA144_0==82) ) {
+            alt144=1;
+        }
+        switch (alt144) {
+            case 1 :
+                // InternalPerspectiveDsl.g:4532:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalPerspectiveDsl.g:4532:10: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:4533:11: ( ruleJvmFormalParameter )
+                {
+                // InternalPerspectiveDsl.g:4533:11: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:4534:12: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_67);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalPerspectiveDsl.g:4537:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop143:
+                do {
+                    int alt143=2;
+                    int LA143_0 = input.LA(1);
+
+                    if ( (LA143_0==58) ) {
+                        alt143=1;
+                    }
+
+
+                    switch (alt143) {
+                	case 1 :
+                	    // InternalPerspectiveDsl.g:4538:11: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,58,FOLLOW_46); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:4539:11: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:4540:12: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalPerspectiveDsl.g:4540:12: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:4541:13: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_67);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop143;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalPerspectiveDsl.g:4546:9: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:4547:10: ( '|' )
+        {
+        // InternalPerspectiveDsl.g:4547:10: ( '|' )
+        // InternalPerspectiveDsl.g:4548:11: '|'
+        {
+        match(input,97,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred23_InternalPerspectiveDsl
+
+    // $ANTLR start synpred24_InternalPerspectiveDsl
+    public final void synpred24_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4625:6: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:4625:7: ( () '[' )
+        {
+        // InternalPerspectiveDsl.g:4625:7: ( () '[' )
+        // InternalPerspectiveDsl.g:4626:7: () '['
+        {
+        // InternalPerspectiveDsl.g:4626:7: ()
+        // InternalPerspectiveDsl.g:4627:7: 
+        {
+        }
+
+        match(input,62,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred24_InternalPerspectiveDsl
+
+    // $ANTLR start synpred25_InternalPerspectiveDsl
+    public final void synpred25_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4698:4: ( ( () 'synchronized' '(' ) )
+        // InternalPerspectiveDsl.g:4698:5: ( () 'synchronized' '(' )
+        {
+        // InternalPerspectiveDsl.g:4698:5: ( () 'synchronized' '(' )
+        // InternalPerspectiveDsl.g:4699:5: () 'synchronized' '('
+        {
+        // InternalPerspectiveDsl.g:4699:5: ()
+        // InternalPerspectiveDsl.g:4700:5: 
+        {
+        }
+
+        match(input,120,FOLLOW_72); if (state.failed) return ;
+        match(input,57,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred25_InternalPerspectiveDsl
+
+    // $ANTLR start synpred26_InternalPerspectiveDsl
+    public final void synpred26_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4743:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalPerspectiveDsl.g:4743:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalPerspectiveDsl.g:4743:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:4744:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        // InternalPerspectiveDsl.g:4744:5: ()
+        // InternalPerspectiveDsl.g:4745:5: 
+        {
+        }
+
+        match(input,104,FOLLOW_72); if (state.failed) return ;
+        match(input,57,FOLLOW_46); if (state.failed) return ;
+        // InternalPerspectiveDsl.g:4748:5: ( ( ruleJvmFormalParameter ) )
+        // InternalPerspectiveDsl.g:4749:6: ( ruleJvmFormalParameter )
+        {
+        // InternalPerspectiveDsl.g:4749:6: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:4750:7: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_75);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,101,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred26_InternalPerspectiveDsl
+
+    // $ANTLR start synpred27_InternalPerspectiveDsl
+    public final void synpred27_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:4857:4: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:4857:5: ( () '[' )
+        {
+        // InternalPerspectiveDsl.g:4857:5: ( () '[' )
+        // InternalPerspectiveDsl.g:4858:5: () '['
+        {
+        // InternalPerspectiveDsl.g:4858:5: ()
+        // InternalPerspectiveDsl.g:4859:5: 
+        {
+        }
+
+        match(input,62,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred27_InternalPerspectiveDsl
+
+    // $ANTLR start synpred29_InternalPerspectiveDsl
+    public final void synpred29_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:5162:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:5162:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalPerspectiveDsl.g:5162:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:5163:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalPerspectiveDsl.g:5163:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt146=2;
+        int LA146_0 = input.LA(1);
+
+        if ( (LA146_0==RULE_ID||LA146_0==57||LA146_0==82) ) {
+            alt146=1;
+        }
+        switch (alt146) {
+            case 1 :
+                // InternalPerspectiveDsl.g:5164:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalPerspectiveDsl.g:5164:6: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:5165:7: ( ruleJvmFormalParameter )
+                {
+                // InternalPerspectiveDsl.g:5165:7: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:5166:8: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_67);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalPerspectiveDsl.g:5169:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop145:
+                do {
+                    int alt145=2;
+                    int LA145_0 = input.LA(1);
+
+                    if ( (LA145_0==58) ) {
+                        alt145=1;
+                    }
+
+
+                    switch (alt145) {
+                	case 1 :
+                	    // InternalPerspectiveDsl.g:5170:7: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,58,FOLLOW_46); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:5171:7: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:5172:8: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalPerspectiveDsl.g:5172:8: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:5173:9: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_67);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop145;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalPerspectiveDsl.g:5178:5: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:5179:6: ( '|' )
+        {
+        // InternalPerspectiveDsl.g:5179:6: ( '|' )
+        // InternalPerspectiveDsl.g:5180:7: '|'
+        {
+        match(input,97,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred29_InternalPerspectiveDsl
+
+    // $ANTLR start synpred31_InternalPerspectiveDsl
+    public final void synpred31_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:5571:5: ( 'else' )
+        // InternalPerspectiveDsl.g:5571:6: 'else'
+        {
+        match(input,99,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred31_InternalPerspectiveDsl
+
+    // $ANTLR start synpred32_InternalPerspectiveDsl
+    public final void synpred32_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:5630:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalPerspectiveDsl.g:5630:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalPerspectiveDsl.g:5630:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5631:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        match(input,57,FOLLOW_46); if (state.failed) return ;
+        // InternalPerspectiveDsl.g:5632:7: ( ( ruleJvmFormalParameter ) )
+        // InternalPerspectiveDsl.g:5633:8: ( ruleJvmFormalParameter )
+        {
+        // InternalPerspectiveDsl.g:5633:8: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:5634:9: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_75);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,101,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred32_InternalPerspectiveDsl
+
+    // $ANTLR start synpred33_InternalPerspectiveDsl
+    public final void synpred33_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:5697:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalPerspectiveDsl.g:5697:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalPerspectiveDsl.g:5697:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5698:7: ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        // InternalPerspectiveDsl.g:5698:7: ( ( ruleJvmFormalParameter ) )
+        // InternalPerspectiveDsl.g:5699:8: ( ruleJvmFormalParameter )
+        {
+        // InternalPerspectiveDsl.g:5699:8: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:5700:9: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_75);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,101,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred33_InternalPerspectiveDsl
+
+    // $ANTLR start synpred35_InternalPerspectiveDsl
+    public final void synpred35_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:6515:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
+        // InternalPerspectiveDsl.g:6515:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        {
+        // InternalPerspectiveDsl.g:6515:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalPerspectiveDsl.g:6516:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
+        {
+        // InternalPerspectiveDsl.g:6516:6: ( ( ruleJvmTypeReference ) )
+        // InternalPerspectiveDsl.g:6517:7: ( ruleJvmTypeReference )
+        {
+        // InternalPerspectiveDsl.g:6517:7: ( ruleJvmTypeReference )
+        // InternalPerspectiveDsl.g:6518:8: ruleJvmTypeReference
+        {
+        pushFollow(FOLLOW_4);
+        ruleJvmTypeReference();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        // InternalPerspectiveDsl.g:6521:6: ( ( ruleValidID ) )
+        // InternalPerspectiveDsl.g:6522:7: ( ruleValidID )
+        {
+        // InternalPerspectiveDsl.g:6522:7: ( ruleValidID )
+        // InternalPerspectiveDsl.g:6523:8: ruleValidID
+        {
+        pushFollow(FOLLOW_2);
+        ruleValidID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred35_InternalPerspectiveDsl
+
+    // $ANTLR start synpred36_InternalPerspectiveDsl
+    public final void synpred36_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:6827:5: ( ( '(' ) )
+        // InternalPerspectiveDsl.g:6827:6: ( '(' )
+        {
+        // InternalPerspectiveDsl.g:6827:6: ( '(' )
+        // InternalPerspectiveDsl.g:6828:6: '('
+        {
+        match(input,57,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred36_InternalPerspectiveDsl
+
+    // $ANTLR start synpred37_InternalPerspectiveDsl
+    public final void synpred37_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:6846:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:6846:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalPerspectiveDsl.g:6846:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:6847:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalPerspectiveDsl.g:6847:7: ()
+        // InternalPerspectiveDsl.g:6848:7: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:6849:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt150=2;
+        int LA150_0 = input.LA(1);
+
+        if ( (LA150_0==RULE_ID||LA150_0==57||LA150_0==82) ) {
+            alt150=1;
+        }
+        switch (alt150) {
+            case 1 :
+                // InternalPerspectiveDsl.g:6850:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalPerspectiveDsl.g:6850:8: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:6851:9: ( ruleJvmFormalParameter )
+                {
+                // InternalPerspectiveDsl.g:6851:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:6852:10: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_67);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalPerspectiveDsl.g:6855:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop149:
+                do {
+                    int alt149=2;
+                    int LA149_0 = input.LA(1);
+
+                    if ( (LA149_0==58) ) {
+                        alt149=1;
+                    }
+
+
+                    switch (alt149) {
+                	case 1 :
+                	    // InternalPerspectiveDsl.g:6856:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,58,FOLLOW_46); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:6857:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:6858:10: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalPerspectiveDsl.g:6858:10: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:6859:11: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_67);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop149;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalPerspectiveDsl.g:6864:7: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:6865:8: ( '|' )
+        {
+        // InternalPerspectiveDsl.g:6865:8: ( '|' )
+        // InternalPerspectiveDsl.g:6866:9: '|'
+        {
+        match(input,97,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred37_InternalPerspectiveDsl
+
+    // $ANTLR start synpred38_InternalPerspectiveDsl
+    public final void synpred38_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:6943:4: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:6943:5: ( () '[' )
+        {
+        // InternalPerspectiveDsl.g:6943:5: ( () '[' )
+        // InternalPerspectiveDsl.g:6944:5: () '['
+        {
+        // InternalPerspectiveDsl.g:6944:5: ()
+        // InternalPerspectiveDsl.g:6945:5: 
+        {
+        }
+
+        match(input,62,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred38_InternalPerspectiveDsl
+
+    // $ANTLR start synpred39_InternalPerspectiveDsl
+    public final void synpred39_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:7103:5: ( '<' )
+        // InternalPerspectiveDsl.g:7103:6: '<'
+        {
+        match(input,69,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred39_InternalPerspectiveDsl
+
+    // $ANTLR start synpred40_InternalPerspectiveDsl
+    public final void synpred40_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:7160:5: ( ( '(' ) )
+        // InternalPerspectiveDsl.g:7160:6: ( '(' )
+        {
+        // InternalPerspectiveDsl.g:7160:6: ( '(' )
+        // InternalPerspectiveDsl.g:7161:6: '('
+        {
+        match(input,57,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred40_InternalPerspectiveDsl
+
+    // $ANTLR start synpred41_InternalPerspectiveDsl
+    public final void synpred41_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:7179:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:7179:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalPerspectiveDsl.g:7179:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:7180:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalPerspectiveDsl.g:7180:7: ()
+        // InternalPerspectiveDsl.g:7181:7: 
+        {
+        }
+
+        // InternalPerspectiveDsl.g:7182:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt152=2;
+        int LA152_0 = input.LA(1);
+
+        if ( (LA152_0==RULE_ID||LA152_0==57||LA152_0==82) ) {
+            alt152=1;
+        }
+        switch (alt152) {
+            case 1 :
+                // InternalPerspectiveDsl.g:7183:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalPerspectiveDsl.g:7183:8: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:7184:9: ( ruleJvmFormalParameter )
+                {
+                // InternalPerspectiveDsl.g:7184:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:7185:10: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_67);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalPerspectiveDsl.g:7188:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop151:
+                do {
+                    int alt151=2;
+                    int LA151_0 = input.LA(1);
+
+                    if ( (LA151_0==58) ) {
+                        alt151=1;
+                    }
+
+
+                    switch (alt151) {
+                	case 1 :
+                	    // InternalPerspectiveDsl.g:7189:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,58,FOLLOW_46); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:7190:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:7191:10: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalPerspectiveDsl.g:7191:10: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:7192:11: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_67);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop151;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalPerspectiveDsl.g:7197:7: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:7198:8: ( '|' )
+        {
+        // InternalPerspectiveDsl.g:7198:8: ( '|' )
+        // InternalPerspectiveDsl.g:7199:9: '|'
+        {
+        match(input,97,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred41_InternalPerspectiveDsl
+
+    // $ANTLR start synpred42_InternalPerspectiveDsl
+    public final void synpred42_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:7276:4: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:7276:5: ( () '[' )
+        {
+        // InternalPerspectiveDsl.g:7276:5: ( () '[' )
+        // InternalPerspectiveDsl.g:7277:5: () '['
+        {
+        // InternalPerspectiveDsl.g:7277:5: ()
+        // InternalPerspectiveDsl.g:7278:5: 
+        {
+        }
+
+        match(input,62,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred42_InternalPerspectiveDsl
+
+    // $ANTLR start synpred43_InternalPerspectiveDsl
+    public final void synpred43_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:7619: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 )
+        // InternalPerspectiveDsl.g:
+        {
+        if ( (input.LA(1)>=RULE_ID && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||(input.LA(1)>=50 && input.LA(1)<=52)||input.LA(1)==57||(input.LA(1)>=61 && input.LA(1)<=62)||input.LA(1)==69||(input.LA(1)>=85 && input.LA(1)<=86)||input.LA(1)==90||input.LA(1)==98||input.LA(1)==100||(input.LA(1)>=104 && input.LA(1)<=106)||(input.LA(1)>=109 && input.LA(1)<=118)||input.LA(1)==120 ) {
+            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_InternalPerspectiveDsl
+
+    // $ANTLR start synpred44_InternalPerspectiveDsl
+    public final void synpred44_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:7690:6: ( 'catch' )
+        // InternalPerspectiveDsl.g:7690:7: 'catch'
+        {
+        match(input,121,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred44_InternalPerspectiveDsl
+
+    // $ANTLR start synpred45_InternalPerspectiveDsl
+    public final void synpred45_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:7711:7: ( 'finally' )
+        // InternalPerspectiveDsl.g:7711:8: 'finally'
+        {
+        match(input,119,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred45_InternalPerspectiveDsl
+
+    // $ANTLR start synpred48_InternalPerspectiveDsl
+    public final void synpred48_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:7955:5: ( '.' )
+        // InternalPerspectiveDsl.g:7955:6: '.'
+        {
+        match(input,94,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred48_InternalPerspectiveDsl
+
+    // $ANTLR start synpred49_InternalPerspectiveDsl
+    public final void synpred49_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:8081:5: ( ( () ruleArrayBrackets ) )
+        // InternalPerspectiveDsl.g:8081:6: ( () ruleArrayBrackets )
+        {
+        // InternalPerspectiveDsl.g:8081:6: ( () ruleArrayBrackets )
+        // InternalPerspectiveDsl.g:8082:6: () ruleArrayBrackets
+        {
+        // InternalPerspectiveDsl.g:8082:6: ()
+        // InternalPerspectiveDsl.g:8083:6: 
+        {
+        }
+
+        pushFollow(FOLLOW_2);
+        ruleArrayBrackets();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred49_InternalPerspectiveDsl
+
+    // $ANTLR start synpred50_InternalPerspectiveDsl
+    public final void synpred50_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:8278:5: ( '<' )
+        // InternalPerspectiveDsl.g:8278:6: '<'
+        {
+        match(input,69,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred50_InternalPerspectiveDsl
+
+    // $ANTLR start synpred51_InternalPerspectiveDsl
+    public final void synpred51_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:8334:6: ( ( () '.' ) )
+        // InternalPerspectiveDsl.g:8334:7: ( () '.' )
+        {
+        // InternalPerspectiveDsl.g:8334:7: ( () '.' )
+        // InternalPerspectiveDsl.g:8335:7: () '.'
+        {
+        // InternalPerspectiveDsl.g:8335:7: ()
+        // InternalPerspectiveDsl.g:8336:7: 
+        {
+        }
+
+        match(input,94,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred51_InternalPerspectiveDsl
+
+    // $ANTLR start synpred52_InternalPerspectiveDsl
+    public final void synpred52_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:8372:7: ( '<' )
+        // InternalPerspectiveDsl.g:8372:8: '<'
+        {
+        match(input,69,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred52_InternalPerspectiveDsl
+
+    // Delegated rules
+
+    public final boolean synpred33_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred33_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred12_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred49_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred5_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred14_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred52_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred35_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred31_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred31_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred50_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred37_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred43_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred39_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred45_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred9_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred18_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred22_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred41_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred16_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred24_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred26_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred1_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred10_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred29_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred13_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred2_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred11_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred27_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred6_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred15_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred32_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred20_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred36_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred51_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred19_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred23_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred44_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred38_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred42_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred21_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred8_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred17_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred25_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (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_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred48_InternalPerspectiveDsl_fragment(); // can never 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 DFA19 dfa19 = new DFA19(this);
+    protected DFA22 dfa22 = new DFA22(this);
+    protected DFA28 dfa28 = new DFA28(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA33 dfa33 = new DFA33(this);
+    protected DFA43 dfa43 = new DFA43(this);
+    protected DFA46 dfa46 = new DFA46(this);
+    protected DFA62 dfa62 = new DFA62(this);
+    protected DFA61 dfa61 = new DFA61(this);
+    protected DFA63 dfa63 = new DFA63(this);
+    protected DFA65 dfa65 = new DFA65(this);
+    protected DFA74 dfa74 = new DFA74(this);
+    protected DFA81 dfa81 = new DFA81(this);
+    protected DFA80 dfa80 = new DFA80(this);
+    protected DFA103 dfa103 = new DFA103(this);
+    protected DFA102 dfa102 = new DFA102(this);
+    protected DFA104 dfa104 = new DFA104(this);
+    protected DFA108 dfa108 = new DFA108(this);
+    protected DFA111 dfa111 = new DFA111(this);
+    protected DFA110 dfa110 = new DFA110(this);
+    protected DFA112 dfa112 = new DFA112(this);
+    protected DFA115 dfa115 = new DFA115(this);
+    protected DFA133 dfa133 = new DFA133(this);
+    protected DFA131 dfa131 = new DFA131(this);
+    static final String dfa_1s = "\10\uffff";
+    static final String dfa_2s = "\2\uffff\1\5\3\uffff\1\5\1\uffff";
+    static final String dfa_3s = "\1\4\1\uffff\1\15\1\uffff\1\4\1\uffff\1\15\1\uffff";
+    static final String dfa_4s = "\1\66\1\uffff\1\136\1\uffff\1\65\1\uffff\1\136\1\uffff";
+    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\uffff\1\3";
+    static final String dfa_6s = "\10\uffff}>";
+    static final String[] dfa_7s = {
+            "\1\2\56\uffff\1\1\2\uffff\1\3",
+            "",
+            "\1\5\44\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
+            "",
+            "\1\6\60\uffff\1\7",
+            "",
+            "\1\5\44\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
+            ""
+    };
+
+    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
+    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
+    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
+    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
+    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
+    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
+    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
+
+    class DFA19 extends DFA {
+
+        public DFA19(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 19;
+            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 "2048: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\170\1\0\42\uffff";
+    static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\3\1\1";
+    static final String dfa_12s = "\1\uffff\1\0\42\uffff}>";
+    static final String[] dfa_13s = {
+            "\1\1\4\2\5\uffff\1\2\43\uffff\3\2\3\uffff\2\2\1\uffff\1\42\1\uffff\2\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_8 = DFA.unpackEncodedString(dfa_8s);
+    static final char[] dfa_9 = DFA.unpackEncodedStringToUnsignedChars(dfa_9s);
+    static final char[] dfa_10 = DFA.unpackEncodedStringToUnsignedChars(dfa_10s);
+    static final short[] dfa_11 = DFA.unpackEncodedString(dfa_11s);
+    static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
+    static final short[][] dfa_13 = unpackEncodedStringArray(dfa_13s);
+
+    class DFA22 extends DFA {
+
+        public DFA22(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 22;
+            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 "2265: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 LA22_1 = input.LA(1);
+
+                         
+                        int index22_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred2_InternalPerspectiveDsl()) ) {s = 35;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index22_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 22, _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\170\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\43\uffff\3\2\3\uffff\2\2\3\uffff\1\1\1\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_14 = DFA.unpackEncodedString(dfa_14s);
+    static final char[] dfa_15 = DFA.unpackEncodedStringToUnsignedChars(dfa_15s);
+    static final char[] dfa_16 = DFA.unpackEncodedStringToUnsignedChars(dfa_16s);
+    static final short[] dfa_17 = DFA.unpackEncodedString(dfa_17s);
+    static final short[] dfa_18 = DFA.unpackEncodedString(dfa_18s);
+    static final short[][] dfa_19 = unpackEncodedStringArray(dfa_19s);
+
+    class DFA28 extends DFA {
+
+        public DFA28(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 28;
+            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 "2445: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 LA28_1 = input.LA(1);
+
+                         
+                        int index28_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred5_InternalPerspectiveDsl()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index28_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 28, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA31 extends DFA {
+
+        public DFA31(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 31;
+            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 "2587: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 LA31_1 = input.LA(1);
+
+                         
+                        int index31_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred6_InternalPerspectiveDsl()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index31_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 31, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    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\171\7\0\2\uffff";
+    static final String dfa_24s = "\10\uffff\1\2\1\1";
+    static final String dfa_25s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\0\1\6\2\uffff}>";
+    static final String[] dfa_26s = {
+            "\5\10\5\uffff\2\10\42\uffff\4\10\1\uffff\1\10\1\uffff\3\10\1\uffff\3\10\1\1\1\2\1\3\1\4\1\5\1\6\1\7\32\10\1\uffff\30\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] dfa_20 = DFA.unpackEncodedString(dfa_20s);
+    static final short[] dfa_21 = DFA.unpackEncodedString(dfa_21s);
+    static final char[] dfa_22 = DFA.unpackEncodedStringToUnsignedChars(dfa_22s);
+    static final char[] dfa_23 = DFA.unpackEncodedStringToUnsignedChars(dfa_23s);
+    static final short[] dfa_24 = DFA.unpackEncodedString(dfa_24s);
+    static final short[] dfa_25 = DFA.unpackEncodedString(dfa_25s);
+    static final short[][] dfa_26 = unpackEncodedStringArray(dfa_26s);
+
+    class DFA33 extends DFA {
+
+        public DFA33(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 33;
+            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 "2816: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 LA33_6 = input.LA(1);
+
+                         
+                        int index33_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index33_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA33_1 = input.LA(1);
+
+                         
+                        int index33_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index33_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA33_2 = input.LA(1);
+
+                         
+                        int index33_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index33_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA33_3 = input.LA(1);
+
+                         
+                        int index33_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index33_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA33_4 = input.LA(1);
+
+                         
+                        int index33_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index33_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA33_5 = input.LA(1);
+
+                         
+                        int index33_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index33_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA33_7 = input.LA(1);
+
+                         
+                        int index33_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index33_7);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 33, _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\171\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\3\1\4\1\6\1\7\1\5\1\0\1\1\1\2\1\uffff}>";
+    static final String[] dfa_33s = {
+            "\5\1\5\uffff\2\1\42\uffff\4\1\1\uffff\1\1\1\uffff\3\1\1\uffff\10\1\1\2\1\3\10\1\1\4\1\5\1\6\1\7\1\10\1\11\14\1\1\uffff\30\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] dfa_27 = DFA.unpackEncodedString(dfa_27s);
+    static final short[] dfa_28 = DFA.unpackEncodedString(dfa_28s);
+    static final char[] dfa_29 = DFA.unpackEncodedStringToUnsignedChars(dfa_29s);
+    static final char[] dfa_30 = DFA.unpackEncodedStringToUnsignedChars(dfa_30s);
+    static final short[] dfa_31 = DFA.unpackEncodedString(dfa_31s);
+    static final short[] dfa_32 = DFA.unpackEncodedString(dfa_32s);
+    static final short[][] dfa_33 = unpackEncodedStringArray(dfa_33s);
+
+    class DFA43 extends DFA {
+
+        public DFA43(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 43;
+            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 3530: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 LA43_7 = input.LA(1);
+
+                         
+                        int index43_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA43_8 = input.LA(1);
+
+                         
+                        int index43_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA43_9 = input.LA(1);
+
+                         
+                        int index43_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA43_2 = input.LA(1);
+
+                         
+                        int index43_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA43_3 = input.LA(1);
+
+                         
+                        int index43_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA43_6 = input.LA(1);
+
+                         
+                        int index43_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA43_4 = input.LA(1);
+
+                         
+                        int index43_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA43_5 = input.LA(1);
+
+                         
+                        int index43_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index43_5);
+                        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_34s = "\1\105\2\uffff\1\106\7\uffff";
+    static final String dfa_35s = "\1\124\2\uffff\1\121\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 DFA46 extends DFA {
+
+        public DFA46(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 46;
+            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 "3606: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\171\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\42\uffff\4\2\1\uffff\1\2\1\uffff\1\1\2\2\1\uffff\44\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_39 = DFA.unpackEncodedString(dfa_39s);
+    static final short[] dfa_40 = DFA.unpackEncodedString(dfa_40s);
+    static final char[] dfa_41 = DFA.unpackEncodedStringToUnsignedChars(dfa_41s);
+    static final char[] dfa_42 = DFA.unpackEncodedStringToUnsignedChars(dfa_42s);
+    static final short[] dfa_43 = DFA.unpackEncodedString(dfa_43s);
+    static final short[] dfa_44 = DFA.unpackEncodedString(dfa_44s);
+    static final short[][] dfa_45 = unpackEncodedStringArray(dfa_45s);
+
+    class DFA62 extends DFA {
+
+        public DFA62(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 62;
+            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 "4507: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 LA62_1 = input.LA(1);
+
+                         
+                        int index62_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred22_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index62_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 62, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_46s = "\1\4\2\0\41\uffff";
+    static final String dfa_47s = "\1\170\2\0\41\uffff";
+    static final String dfa_48s = "\3\uffff\2\1\1\2\35\uffff\1\3";
+    static final String dfa_49s = "\1\0\1\1\1\2\41\uffff}>";
+    static final String[] dfa_50s = {
+            "\1\1\4\5\5\uffff\1\5\43\uffff\3\5\4\uffff\1\2\1\uffff\1\43\1\uffff\2\5\6\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\3\5\2\uffff\12\5\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final char[] dfa_46 = DFA.unpackEncodedStringToUnsignedChars(dfa_46s);
+    static final char[] dfa_47 = DFA.unpackEncodedStringToUnsignedChars(dfa_47s);
+    static final short[] dfa_48 = DFA.unpackEncodedString(dfa_48s);
+    static final short[] dfa_49 = DFA.unpackEncodedString(dfa_49s);
+    static final short[][] dfa_50 = unpackEncodedStringArray(dfa_50s);
+
+    class DFA61 extends DFA {
+
+        public DFA61(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 61;
+            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 "4526: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 LA61_0 = input.LA(1);
+
+                         
+                        int index61_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA61_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA61_0==57) ) {s = 2;}
+
+                        else if ( (LA61_0==82) && (synpred23_InternalPerspectiveDsl())) {s = 3;}
+
+                        else if ( (LA61_0==97) && (synpred23_InternalPerspectiveDsl())) {s = 4;}
+
+                        else if ( ((LA61_0>=RULE_STRING && LA61_0<=RULE_DECIMAL)||LA61_0==14||(LA61_0>=50 && LA61_0<=52)||(LA61_0>=61 && LA61_0<=62)||LA61_0==69||(LA61_0>=85 && LA61_0<=86)||LA61_0==90||LA61_0==98||LA61_0==100||(LA61_0>=104 && LA61_0<=106)||(LA61_0>=109 && LA61_0<=118)||LA61_0==120) ) {s = 5;}
+
+                        else if ( (LA61_0==59) ) {s = 35;}
+
+                         
+                        input.seek(index61_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA61_1 = input.LA(1);
+
+                         
+                        int index61_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred23_InternalPerspectiveDsl()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index61_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA61_2 = input.LA(1);
+
+                         
+                        int index61_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred23_InternalPerspectiveDsl()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index61_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 61, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_51s = {
+            "\5\2\5\uffff\2\2\42\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\1\2\1\1\42\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_51 = unpackEncodedStringArray(dfa_51s);
+
+    class DFA63 extends DFA {
+
+        public DFA63(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 63;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_51;
+        }
+        public String getDescription() {
+            return "4624: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 LA63_1 = input.LA(1);
+
+                         
+                        int index63_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred24_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index63_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 63, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_52s = "\40\uffff";
+    static final String dfa_53s = "\1\4\26\uffff\1\0\10\uffff";
+    static final String dfa_54s = "\1\170\26\uffff\1\0\10\uffff";
+    static final String dfa_55s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
+    static final String dfa_56s = "\1\0\26\uffff\1\1\10\uffff}>";
+    static final String[] dfa_57s = {
+            "\1\5\4\14\5\uffff\1\2\43\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\34\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\2\uffff\2\5\1\1\4\14\1\32\1\33\1\34\1\uffff\1\4",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_52 = DFA.unpackEncodedString(dfa_52s);
+    static final char[] dfa_53 = DFA.unpackEncodedStringToUnsignedChars(dfa_53s);
+    static final char[] dfa_54 = DFA.unpackEncodedStringToUnsignedChars(dfa_54s);
+    static final short[] dfa_55 = DFA.unpackEncodedString(dfa_55s);
+    static final short[] dfa_56 = DFA.unpackEncodedString(dfa_56s);
+    static final short[][] dfa_57 = unpackEncodedStringArray(dfa_57s);
+
+    class DFA65 extends DFA {
+
+        public DFA65(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 65;
+            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 "4669: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 LA65_0 = input.LA(1);
+
+                         
+                        int index65_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA65_0==111) ) {s = 1;}
+
+                        else if ( (LA65_0==14) ) {s = 2;}
+
+                        else if ( (LA65_0==100) ) {s = 3;}
+
+                        else if ( (LA65_0==120) && (synpred25_InternalPerspectiveDsl())) {s = 4;}
+
+                        else if ( (LA65_0==RULE_ID||(LA65_0>=50 && LA65_0<=52)||LA65_0==69||(LA65_0>=109 && LA65_0<=110)) ) {s = 5;}
+
+                        else if ( ((LA65_0>=RULE_STRING && LA65_0<=RULE_DECIMAL)||(LA65_0>=61 && LA65_0<=62)||(LA65_0>=112 && LA65_0<=115)) ) {s = 12;}
+
+                        else if ( (LA65_0==98) ) {s = 22;}
+
+                        else if ( (LA65_0==104) ) {s = 23;}
+
+                        else if ( (LA65_0==105) ) {s = 24;}
+
+                        else if ( (LA65_0==106) ) {s = 25;}
+
+                        else if ( (LA65_0==116) ) {s = 26;}
+
+                        else if ( (LA65_0==117) ) {s = 27;}
+
+                        else if ( (LA65_0==118) ) {s = 28;}
+
+                        else if ( (LA65_0==57) ) {s = 29;}
+
+                         
+                        input.seek(index65_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA65_23 = input.LA(1);
+
+                         
+                        int index65_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred26_InternalPerspectiveDsl()) ) {s = 30;}
+
+                        else if ( (true) ) {s = 31;}
+
+                         
+                        input.seek(index65_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 65, _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\170\2\0\43\uffff";
+    static final String dfa_61s = "\3\uffff\2\1\1\2\40\uffff";
+    static final String dfa_62s = "\1\0\1\1\1\2\43\uffff}>";
+    static final String[] dfa_63s = {
+            "\1\1\4\5\5\uffff\1\5\43\uffff\3\5\4\uffff\1\2\3\uffff\3\5\5\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\17\5\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_58 = DFA.unpackEncodedString(dfa_58s);
+    static final char[] dfa_59 = DFA.unpackEncodedStringToUnsignedChars(dfa_59s);
+    static final char[] dfa_60 = DFA.unpackEncodedStringToUnsignedChars(dfa_60s);
+    static final short[] dfa_61 = DFA.unpackEncodedString(dfa_61s);
+    static final short[] dfa_62 = DFA.unpackEncodedString(dfa_62s);
+    static final short[][] dfa_63 = unpackEncodedStringArray(dfa_63s);
+
+    class DFA74 extends DFA {
+
+        public DFA74(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 74;
+            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 "5161: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 LA74_0 = input.LA(1);
+
+                         
+                        int index74_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA74_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA74_0==57) ) {s = 2;}
+
+                        else if ( (LA74_0==82) && (synpred29_InternalPerspectiveDsl())) {s = 3;}
+
+                        else if ( (LA74_0==97) && (synpred29_InternalPerspectiveDsl())) {s = 4;}
+
+                        else if ( ((LA74_0>=RULE_STRING && LA74_0<=RULE_DECIMAL)||LA74_0==14||(LA74_0>=50 && LA74_0<=52)||(LA74_0>=61 && LA74_0<=63)||LA74_0==69||(LA74_0>=85 && LA74_0<=86)||LA74_0==90||LA74_0==98||LA74_0==100||(LA74_0>=104 && LA74_0<=118)||LA74_0==120) ) {s = 5;}
+
+                         
+                        input.seek(index74_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA74_1 = input.LA(1);
+
+                         
+                        int index74_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred29_InternalPerspectiveDsl()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index74_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA74_2 = input.LA(1);
+
+                         
+                        int index74_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred29_InternalPerspectiveDsl()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index74_2);
+                        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_64s = {
+            "\5\2\5\uffff\1\2\43\uffff\3\2\4\uffff\1\1\3\uffff\2\2\6\uffff\1\2\14\uffff\1\2\2\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_64 = unpackEncodedStringArray(dfa_64s);
+
+    class DFA81 extends DFA {
+
+        public DFA81(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 81;
+            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 "5627: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 LA81_1 = input.LA(1);
+
+                         
+                        int index81_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred32_InternalPerspectiveDsl()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index81_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 81, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_65s = "\42\uffff";
+    static final String dfa_66s = "\1\4\2\0\37\uffff";
+    static final String dfa_67s = "\1\170\2\0\37\uffff";
+    static final String dfa_68s = "\3\uffff\1\1\1\2\35\uffff";
+    static final String dfa_69s = "\1\0\1\1\1\2\37\uffff}>";
+    static final String[] dfa_70s = {
+            "\1\1\4\4\5\uffff\1\4\43\uffff\3\4\4\uffff\1\2\3\uffff\2\4\6\uffff\1\4\14\uffff\1\3\2\uffff\2\4\3\uffff\1\4\7\uffff\1\4\1\uffff\1\4\3\uffff\3\4\2\uffff\12\4\1\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_65 = DFA.unpackEncodedString(dfa_65s);
+    static final char[] dfa_66 = DFA.unpackEncodedStringToUnsignedChars(dfa_66s);
+    static final char[] dfa_67 = DFA.unpackEncodedStringToUnsignedChars(dfa_67s);
+    static final short[] dfa_68 = DFA.unpackEncodedString(dfa_68s);
+    static final short[] dfa_69 = DFA.unpackEncodedString(dfa_69s);
+    static final short[][] dfa_70 = unpackEncodedStringArray(dfa_70s);
+
+    class DFA80 extends DFA {
+
+        public DFA80(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 80;
+            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 "5696: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 LA80_0 = input.LA(1);
+
+                         
+                        int index80_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA80_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA80_0==57) ) {s = 2;}
+
+                        else if ( (LA80_0==82) && (synpred33_InternalPerspectiveDsl())) {s = 3;}
+
+                        else if ( ((LA80_0>=RULE_STRING && LA80_0<=RULE_DECIMAL)||LA80_0==14||(LA80_0>=50 && LA80_0<=52)||(LA80_0>=61 && LA80_0<=62)||LA80_0==69||(LA80_0>=85 && LA80_0<=86)||LA80_0==90||LA80_0==98||LA80_0==100||(LA80_0>=104 && LA80_0<=106)||(LA80_0>=109 && LA80_0<=118)||LA80_0==120) ) {s = 4;}
+
+                         
+                        input.seek(index80_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA80_1 = input.LA(1);
+
+                         
+                        int index80_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred33_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index80_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA80_2 = input.LA(1);
+
+                         
+                        int index80_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred33_InternalPerspectiveDsl()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index80_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 80, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA103 extends DFA {
+
+        public DFA103(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 103;
+            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 "6825: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 LA103_1 = input.LA(1);
+
+                         
+                        int index103_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred36_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index103_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 103, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA102 extends DFA {
+
+        public DFA102(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 102;
+            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 "6844: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 LA102_0 = input.LA(1);
+
+                         
+                        int index102_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA102_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA102_0==57) ) {s = 2;}
+
+                        else if ( (LA102_0==82) && (synpred37_InternalPerspectiveDsl())) {s = 3;}
+
+                        else if ( (LA102_0==97) && (synpred37_InternalPerspectiveDsl())) {s = 4;}
+
+                        else if ( ((LA102_0>=RULE_STRING && LA102_0<=RULE_DECIMAL)||LA102_0==14||(LA102_0>=50 && LA102_0<=52)||(LA102_0>=61 && LA102_0<=62)||LA102_0==69||(LA102_0>=85 && LA102_0<=86)||LA102_0==90||LA102_0==98||LA102_0==100||(LA102_0>=104 && LA102_0<=106)||(LA102_0>=109 && LA102_0<=118)||LA102_0==120) ) {s = 5;}
+
+                        else if ( (LA102_0==59) ) {s = 35;}
+
+                         
+                        input.seek(index102_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA102_1 = input.LA(1);
+
+                         
+                        int index102_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred37_InternalPerspectiveDsl()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index102_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA102_2 = input.LA(1);
+
+                         
+                        int index102_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred37_InternalPerspectiveDsl()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index102_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 102, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA104 extends DFA {
+
+        public DFA104(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 104;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_51;
+        }
+        public String getDescription() {
+            return "6942: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 LA104_1 = input.LA(1);
+
+                         
+                        int index104_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index104_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 104, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_71s = {
+            "\5\2\5\uffff\2\2\42\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_71 = unpackEncodedStringArray(dfa_71s);
+
+    class DFA108 extends DFA {
+
+        public DFA108(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 108;
+            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 "7101: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 LA108_1 = input.LA(1);
+
+                         
+                        int index108_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred39_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index108_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 108, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA111 extends DFA {
+
+        public DFA111(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 111;
+            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 "7158: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 LA111_1 = input.LA(1);
+
+                         
+                        int index111_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index111_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 111, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA110 extends DFA {
+
+        public DFA110(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 110;
+            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 "7177: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 LA110_0 = input.LA(1);
+
+                         
+                        int index110_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA110_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA110_0==57) ) {s = 2;}
+
+                        else if ( (LA110_0==82) && (synpred41_InternalPerspectiveDsl())) {s = 3;}
+
+                        else if ( (LA110_0==97) && (synpred41_InternalPerspectiveDsl())) {s = 4;}
+
+                        else if ( ((LA110_0>=RULE_STRING && LA110_0<=RULE_DECIMAL)||LA110_0==14||(LA110_0>=50 && LA110_0<=52)||(LA110_0>=61 && LA110_0<=62)||LA110_0==69||(LA110_0>=85 && LA110_0<=86)||LA110_0==90||LA110_0==98||LA110_0==100||(LA110_0>=104 && LA110_0<=106)||(LA110_0>=109 && LA110_0<=118)||LA110_0==120) ) {s = 5;}
+
+                        else if ( (LA110_0==59) ) {s = 35;}
+
+                         
+                        input.seek(index110_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA110_1 = input.LA(1);
+
+                         
+                        int index110_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalPerspectiveDsl()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index110_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA110_2 = input.LA(1);
+
+                         
+                        int index110_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalPerspectiveDsl()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index110_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 110, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA112 extends DFA {
+
+        public DFA112(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 112;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_51;
+        }
+        public String getDescription() {
+            return "7275: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 LA112_1 = input.LA(1);
+
+                         
+                        int index112_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred42_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index112_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 112, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    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\171\40\0\55\uffff";
+    static final String dfa_75s = "\41\uffff\1\2\53\uffff\1\1";
+    static final String dfa_76s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
+    static final String[] dfa_77s = {
+            "\1\1\1\27\1\24\1\23\1\25\5\uffff\1\12\1\41\42\uffff\1\4\1\3\1\5\1\41\1\uffff\1\41\1\uffff\1\40\2\41\1\uffff\1\17\1\20\6\41\1\15\17\41\1\10\1\7\3\41\1\6\6\41\1\uffff\1\31\1\41\1\13\3\41\1\32\1\33\1\34\2\41\1\2\1\16\1\11\1\21\1\22\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[] dfa_72 = DFA.unpackEncodedString(dfa_72s);
+    static final char[] dfa_73 = DFA.unpackEncodedStringToUnsignedChars(dfa_73s);
+    static final char[] dfa_74 = DFA.unpackEncodedStringToUnsignedChars(dfa_74s);
+    static final short[] dfa_75 = DFA.unpackEncodedString(dfa_75s);
+    static final short[] dfa_76 = DFA.unpackEncodedString(dfa_76s);
+    static final short[][] dfa_77 = unpackEncodedStringArray(dfa_77s);
+
+    class DFA115 extends DFA {
+
+        public DFA115(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 115;
+            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 "7618: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 LA115_1 = input.LA(1);
+
+                         
+                        int index115_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA115_2 = input.LA(1);
+
+                         
+                        int index115_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA115_3 = input.LA(1);
+
+                         
+                        int index115_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA115_4 = input.LA(1);
+
+                         
+                        int index115_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA115_5 = input.LA(1);
+
+                         
+                        int index115_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA115_6 = input.LA(1);
+
+                         
+                        int index115_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA115_7 = input.LA(1);
+
+                         
+                        int index115_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA115_8 = input.LA(1);
+
+                         
+                        int index115_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA115_9 = input.LA(1);
+
+                         
+                        int index115_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA115_10 = input.LA(1);
+
+                         
+                        int index115_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA115_11 = input.LA(1);
+
+                         
+                        int index115_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA115_12 = input.LA(1);
+
+                         
+                        int index115_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA115_13 = input.LA(1);
+
+                         
+                        int index115_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA115_14 = input.LA(1);
+
+                         
+                        int index115_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA115_15 = input.LA(1);
+
+                         
+                        int index115_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA115_16 = input.LA(1);
+
+                         
+                        int index115_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA115_17 = input.LA(1);
+
+                         
+                        int index115_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA115_18 = input.LA(1);
+
+                         
+                        int index115_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA115_19 = input.LA(1);
+
+                         
+                        int index115_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA115_20 = input.LA(1);
+
+                         
+                        int index115_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA115_21 = input.LA(1);
+
+                         
+                        int index115_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA115_22 = input.LA(1);
+
+                         
+                        int index115_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA115_23 = input.LA(1);
+
+                         
+                        int index115_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA115_24 = input.LA(1);
+
+                         
+                        int index115_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA115_25 = input.LA(1);
+
+                         
+                        int index115_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA115_26 = input.LA(1);
+
+                         
+                        int index115_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA115_27 = input.LA(1);
+
+                         
+                        int index115_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA115_28 = input.LA(1);
+
+                         
+                        int index115_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA115_29 = input.LA(1);
+
+                         
+                        int index115_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA115_30 = input.LA(1);
+
+                         
+                        int index115_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA115_31 = input.LA(1);
+
+                         
+                        int index115_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA115_32 = input.LA(1);
+
+                         
+                        int index115_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalPerspectiveDsl()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index115_32);
+                        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;
+        }
+    }
+    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\173\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\42\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\30\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_78 = DFA.unpackEncodedString(dfa_78s);
+    static final short[] dfa_79 = DFA.unpackEncodedString(dfa_79s);
+    static final char[] dfa_80 = DFA.unpackEncodedStringToUnsignedChars(dfa_80s);
+    static final char[] dfa_81 = DFA.unpackEncodedStringToUnsignedChars(dfa_81s);
+    static final short[] dfa_82 = DFA.unpackEncodedString(dfa_82s);
+    static final short[] dfa_83 = DFA.unpackEncodedString(dfa_83s);
+    static final short[][] dfa_84 = unpackEncodedStringArray(dfa_84s);
+
+    class DFA133 extends DFA {
+
+        public DFA133(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 133;
+            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 "8276: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 LA133_1 = input.LA(1);
+
+                         
+                        int index133_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred50_InternalPerspectiveDsl()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index133_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 133, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA131 extends DFA {
+
+        public DFA131(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 131;
+            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 "8370: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 LA131_1 = input.LA(1);
+
+                         
+                        int index131_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred52_InternalPerspectiveDsl()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index131_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 131, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000002002L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000018000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000764000L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000744000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000704000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000018808000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000007204000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000000L,0x3000000000000000L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000006204000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000064300002L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x000233FF80000000L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0001800000000002L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0048000000000010L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0010000000000010L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0020000000000010L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0080000000000002L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0200000000000002L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x6B1C0000000041F0L,0x017FE71404600020L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0C00000000000000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0800000000000000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x1000000000000000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x631C0000000041F0L,0x017FE71404600020L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x4000000000000000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0xE31C0000000041F0L,0x017FE71404600020L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x8400000000000000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0400000000000002L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000002L,0x000000000000007FL});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000C0L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000002L,0x0000000000003C00L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000002L,0x00000000000040E0L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0200000000000010L,0x0000000000040000L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000002L,0x00000000001F8060L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040020L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000002L,0x0000000000600000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0020000000000002L,0x0000000003800000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000002L,0x0000000030000000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000002L,0x00000001C0000000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x001C000000000010L,0x0000200000000000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x001C000000000010L,0x0000600000000020L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0200000000000010L,0x0400000000040000L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x4200000000000002L,0x00000001C0000000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x6B1C0000000041F0L,0x017FE71604640020L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x4000000000000002L,0x00000001C0000000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x631C00000000C1F0L,0x017FE71404600020L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0400000000008000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0xE31C0000000041F0L,0x017FFF1604640020L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0400000000000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0xE31C0000000041F0L,0x017FFF1404600020L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x8000000000000000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x639C0000000041F2L,0x017FFF1404600020L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x631C0000000041F2L,0x017FFF1404600020L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0200000000000000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x631C0000000041F0L,0x017FE71404640020L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0600000000008010L,0x000000E000040000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0400000000000000L,0x000000A000000000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0400000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x639C0000000041F0L,0x017FFF1404600020L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0480000000000000L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x631C0000000041F0L,0x017FFF1404600020L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x639C0000000041F0L,0x017FE71404600020L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0080000000000000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x631C00000000C1F0L,0x017FFF1404600020L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x639C00000000C1F0L,0x017FFF1404600020L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x1000000000000002L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x4200000000000002L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x4000000000000002L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x4200000000000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x4800000000000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x631C0000000041F2L,0x017FE71404600020L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000000L,0x0280000000000000L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000002L,0x0280000000000000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000140L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0A00000000000010L,0x0000000000040000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000020L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000002L,0x0000600000000000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000000L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0020000000000000L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0004000000000002L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000012L});
+
+}
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/scoping/AbstractPerspectiveDslScopeProvider.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/scoping/AbstractPerspectiveDslScopeProvider.java
new file mode 100644
index 0000000..f741505
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/scoping/AbstractPerspectiveDslScopeProvider.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.perspective.scoping;
+
+import org.eclipse.osbp.xtext.oxtype.scoping.OXtypeScopeProvider;
+
+public abstract class AbstractPerspectiveDslScopeProvider extends OXtypeScopeProvider {
+}
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSemanticSequencer.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSemanticSequencer.java
index 65e47d6..8b807c4 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSemanticSequencer.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSemanticSequencer.java
@@ -10,20 +10,28 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.perspective.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.oxtype.oxtype.OXImportDeclaration;
+import org.eclipse.osbp.xtext.oxtype.oxtype.OXtypePackage;
+import org.eclipse.osbp.xtext.oxtype.serializer.OXtypeSemanticSequencer;
 import org.eclipse.osbp.xtext.perspective.Perspective;
 import org.eclipse.osbp.xtext.perspective.PerspectiveBPMN;
+import org.eclipse.osbp.xtext.perspective.PerspectiveBean;
 import org.eclipse.osbp.xtext.perspective.PerspectiveChart;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDialog;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
 import org.eclipse.osbp.xtext.perspective.PerspectiveGrid;
+import org.eclipse.osbp.xtext.perspective.PerspectiveKanban;
 import org.eclipse.osbp.xtext.perspective.PerspectiveModel;
 import org.eclipse.osbp.xtext.perspective.PerspectiveOrganization;
 import org.eclipse.osbp.xtext.perspective.PerspectivePackage;
@@ -31,10 +39,15 @@
 import org.eclipse.osbp.xtext.perspective.PerspectivePartStack;
 import org.eclipse.osbp.xtext.perspective.PerspectiveReport;
 import org.eclipse.osbp.xtext.perspective.PerspectiveSashContainer;
+import org.eclipse.osbp.xtext.perspective.PerspectiveSearch;
 import org.eclipse.osbp.xtext.perspective.PerspectiveSelection;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTable;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTopology;
+import org.eclipse.osbp.xtext.perspective.PerspectiveWelcome;
 import org.eclipse.osbp.xtext.perspective.services.PerspectiveDslGrammarAccess;
+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;
@@ -44,14 +57,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;
@@ -85,1557 +92,735 @@
 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 PerspectiveDslSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+public class PerspectiveDslSemanticSequencer extends OXtypeSemanticSequencer {
 
 	@Inject
 	private PerspectiveDslGrammarAccess grammarAccess;
 	
-	public void createSequence(EObject context, EObject semanticObject) {
-		if(semanticObject.eClass().getEPackage() == PerspectiveDslPackage.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 == OXtypePackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
+			case OXtypePackage.OX_IMPORT_DECLARATION:
+				sequence_XImportDeclaration(context, (OXImportDeclaration) semanticObject); 
+				return; 
+			}
+		else if (epackage == PerspectiveDslPackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
 			case PerspectiveDslPackage.PERSPECTIVE:
-				if(context == grammarAccess.getPerspectiveRule()) {
-					sequence_Perspective(context, (Perspective) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_Perspective(context, (Perspective) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_BPMN:
-				if(context == grammarAccess.getPerspectiveBPMNRule() ||
-				   context == grammarAccess.getPerspectiveViewRule()) {
-					sequence_PerspectiveBPMN(context, (PerspectiveBPMN) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveBPMN(context, (PerspectiveBPMN) semanticObject); 
+				return; 
+			case PerspectiveDslPackage.PERSPECTIVE_BEAN:
+				sequence_PerspectiveBean(context, (PerspectiveBean) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_CHART:
-				if(context == grammarAccess.getPerspectiveChartRule() ||
-				   context == grammarAccess.getPerspectiveViewRule()) {
-					sequence_PerspectiveChart(context, (PerspectiveChart) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveChart(context, (PerspectiveChart) semanticObject); 
+				return; 
+			case PerspectiveDslPackage.PERSPECTIVE_DATA_INTERCHANGE:
+				sequence_PerspectiveDataInterchange(context, (PerspectiveDataInterchange) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_DIALOG:
-				if(context == grammarAccess.getPerspectiveDialogRule() ||
-				   context == grammarAccess.getPerspectiveViewRule()) {
-					sequence_PerspectiveDialog(context, (PerspectiveDialog) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveDialog(context, (PerspectiveDialog) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_GRID:
-				if(context == grammarAccess.getPerspectiveGridRule() ||
-				   context == grammarAccess.getPerspectiveViewRule()) {
-					sequence_PerspectiveGrid(context, (PerspectiveGrid) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveGrid(context, (PerspectiveGrid) semanticObject); 
+				return; 
+			case PerspectiveDslPackage.PERSPECTIVE_KANBAN:
+				sequence_PerspectiveKanban(context, (PerspectiveKanban) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_MODEL:
-				if(context == grammarAccess.getPerspectiveModelRule()) {
-					sequence_PerspectiveModel(context, (PerspectiveModel) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveModel(context, (PerspectiveModel) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_ORGANIZATION:
-				if(context == grammarAccess.getPerspectiveOrganizationRule() ||
-				   context == grammarAccess.getPerspectiveViewRule()) {
-					sequence_PerspectiveOrganization(context, (PerspectiveOrganization) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveOrganization(context, (PerspectiveOrganization) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_PACKAGE:
-				if(context == grammarAccess.getPerspectivePackageRule()) {
-					sequence_PerspectivePackage(context, (PerspectivePackage) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectivePackage(context, (PerspectivePackage) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_PART:
-				if(context == grammarAccess.getPerspectiveElementRule() ||
-				   context == grammarAccess.getPerspectivePartRule()) {
-					sequence_PerspectivePart(context, (PerspectivePart) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectivePart(context, (PerspectivePart) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_PART_STACK:
-				if(context == grammarAccess.getPerspectiveElementRule() ||
-				   context == grammarAccess.getPerspectivePartStackRule()) {
-					sequence_PerspectivePartStack(context, (PerspectivePartStack) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectivePartStack(context, (PerspectivePartStack) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_REPORT:
-				if(context == grammarAccess.getPerspectiveReportRule() ||
-				   context == grammarAccess.getPerspectiveViewRule()) {
-					sequence_PerspectiveReport(context, (PerspectiveReport) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveReport(context, (PerspectiveReport) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_SASH_CONTAINER:
-				if(context == grammarAccess.getPerspectiveElementRule() ||
-				   context == grammarAccess.getPerspectiveSashContainerRule()) {
-					sequence_PerspectiveSashContainer(context, (PerspectiveSashContainer) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveSashContainer(context, (PerspectiveSashContainer) semanticObject); 
+				return; 
+			case PerspectiveDslPackage.PERSPECTIVE_SEARCH:
+				sequence_PerspectiveSearch(context, (PerspectiveSearch) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_SELECTION:
-				if(context == grammarAccess.getPerspectiveSelectionRule() ||
-				   context == grammarAccess.getPerspectiveViewRule()) {
-					sequence_PerspectiveSelection(context, (PerspectiveSelection) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveSelection(context, (PerspectiveSelection) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_TABLE:
-				if(context == grammarAccess.getPerspectiveTableRule() ||
-				   context == grammarAccess.getPerspectiveViewRule()) {
-					sequence_PerspectiveTable(context, (PerspectiveTable) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveTable(context, (PerspectiveTable) semanticObject); 
+				return; 
 			case PerspectiveDslPackage.PERSPECTIVE_TOPOLOGY:
-				if(context == grammarAccess.getPerspectiveTopologyRule() ||
-				   context == grammarAccess.getPerspectiveViewRule()) {
-					sequence_PerspectiveTopology(context, (PerspectiveTopology) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_PerspectiveTopology(context, (PerspectiveTopology) semanticObject); 
+				return; 
+			case PerspectiveDslPackage.PERSPECTIVE_WELCOME:
+				sequence_PerspectiveWelcome(context, (PerspectiveWelcome) semanticObject); 
+				return; 
 			}
-		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
-			case OSBPTypesPackage.LIMPORT:
-				if(context == grammarAccess.getPerspectiveImportRule()) {
-					sequence_PerspectiveImport(context, (LImport) semanticObject); 
-					return; 
-				}
-				else break;
-			}
-		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:
+	 *     PerspectiveView returns PerspectiveBPMN
+	 *     PerspectiveBPMN returns PerspectiveBPMN
+	 *
 	 * Constraint:
 	 *     {PerspectiveBPMN}
 	 */
-	protected void sequence_PerspectiveBPMN(EObject context, PerspectiveBPMN semanticObject) {
+	protected void sequence_PerspectiveBPMN(ISerializationContext context, PerspectiveBPMN semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveBean
+	 *     PerspectiveBean returns PerspectiveBean
+	 *
+	 * Constraint:
+	 *     ref=[Table|ID]
+	 */
+	protected void sequence_PerspectiveBean(ISerializationContext context, PerspectiveBean semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveBeanAccess().getRefTableIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF, false));
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveChart
+	 *     PerspectiveChart returns PerspectiveChart
+	 *
 	 * Constraint:
 	 *     ref=[Chart|ID]
 	 */
-	protected void sequence_PerspectiveChart(EObject context, PerspectiveChart semanticObject) {
-		genericSequencer.createSequence(context, semanticObject);
+	protected void sequence_PerspectiveChart(ISerializationContext context, PerspectiveChart semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_CHART__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_CHART__REF));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveChartAccess().getRefChartIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_CHART__REF, false));
+		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveDataInterchange
+	 *     PerspectiveDataInterchange returns PerspectiveDataInterchange
+	 *
+	 * Constraint:
+	 *     ref=[DataInterchangePackage|ID]
+	 */
+	protected void sequence_PerspectiveDataInterchange(ISerializationContext context, PerspectiveDataInterchange semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_DATA_INTERCHANGE__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_DATA_INTERCHANGE__REF));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangePackageIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_DATA_INTERCHANGE__REF, false));
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveDialog
+	 *     PerspectiveDialog returns PerspectiveDialog
+	 *
 	 * Constraint:
 	 *     ref=[Dialog|ID]
 	 */
-	protected void sequence_PerspectiveDialog(EObject context, PerspectiveDialog semanticObject) {
-		genericSequencer.createSequence(context, semanticObject);
-	}
-	
-	
-	/**
-	 * Constraint:
-	 *     ref=[Table|ID]
-	 */
-	protected void sequence_PerspectiveGrid(EObject context, PerspectiveGrid semanticObject) {
-		genericSequencer.createSequence(context, semanticObject);
-	}
-	
-	
-	/**
-	 * Constraint:
-	 *     importedNamespace=PerspectiveQualifiedNameWithWildCard
-	 */
-	protected void sequence_PerspectiveImport(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));
+	protected void sequence_PerspectiveDialog(ISerializationContext context, PerspectiveDialog semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_DIALOG__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_DIALOG__REF));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
-		feeder.accept(grammarAccess.getPerspectiveImportAccess().getImportedNamespacePerspectiveQualifiedNameWithWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveDialogAccess().getRefDialogIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_DIALOG__REF, false));
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveGrid
+	 *     PerspectiveGrid returns PerspectiveGrid
+	 *
 	 * Constraint:
-	 *     packages+=PerspectivePackage*
+	 *     ref=[Table|ID]
 	 */
-	protected void sequence_PerspectiveModel(EObject context, PerspectiveModel semanticObject) {
+	protected void sequence_PerspectiveGrid(ISerializationContext context, PerspectiveGrid semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_GRID__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_GRID__REF));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveGridAccess().getRefTableIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_GRID__REF, false));
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveKanban
+	 *     PerspectiveKanban returns PerspectiveKanban
+	 *
+	 * Constraint:
+	 *     (dtoRef=[LDto|ID] cardRef=[Dialog|ID] dialogRef=[Dialog|ID])
+	 */
+	protected void sequence_PerspectiveKanban(ISerializationContext context, PerspectiveKanban semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN__DTO_REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN__DTO_REF));
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN__CARD_REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN__CARD_REF));
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN__DIALOG_REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN__DIALOG_REF));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN__DTO_REF, false));
+		feeder.accept(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogIDTerminalRuleCall_5_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN__CARD_REF, false));
+		feeder.accept(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogIDTerminalRuleCall_7_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_KANBAN__DIALOG_REF, false));
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     PerspectiveModel returns PerspectiveModel
+	 *
+	 * Constraint:
+	 *     ((importSection=XImportSection packages+=PerspectivePackage+) | packages+=PerspectivePackage+)?
+	 */
+	protected void sequence_PerspectiveModel(ISerializationContext context, PerspectiveModel semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveOrganization
+	 *     PerspectiveOrganization returns PerspectiveOrganization
+	 *
 	 * Constraint:
 	 *     ref=[Organization|ID]
 	 */
-	protected void sequence_PerspectiveOrganization(EObject context, PerspectiveOrganization semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_ORGANIZATION__REF) == ValueTransient.YES)
+	protected void sequence_PerspectiveOrganization(ISerializationContext context, PerspectiveOrganization semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_ORGANIZATION__REF) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_ORGANIZATION__REF));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
-		feeder.accept(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationIDTerminalRuleCall_2_0_1(), semanticObject.getRef());
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_ORGANIZATION__REF, false));
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectivePackage returns PerspectivePackage
+	 *
 	 * Constraint:
-	 *     (name=QualifiedName (imports+=PerspectiveImport* perspectives+=Perspective*)?)
+	 *     (name=QualifiedName perspectives+=Perspective*)
 	 */
-	protected void sequence_PerspectivePackage(EObject context, PerspectivePackage semanticObject) {
+	protected void sequence_PerspectivePackage(ISerializationContext context, PerspectivePackage semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveElement returns PerspectivePartStack
+	 *     PerspectivePartStack returns PerspectivePartStack
+	 *
 	 * Constraint:
-	 *     (elementId=ID selectedElement=[PerspectivePart|ID]? containerData=STRING? accessibilityPhrase=STRING? elements+=PerspectiveElement*)
+	 *     (elementId=ID (selectedElement=[PerspectivePart|ID] | containerData=STRING | accessibilityPhrase=STRING)* elements+=PerspectiveElement*)
 	 */
-	protected void sequence_PerspectivePartStack(EObject context, PerspectivePartStack semanticObject) {
+	protected void sequence_PerspectivePartStack(ISerializationContext context, PerspectivePartStack semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveElement returns PerspectivePart
+	 *     PerspectivePart returns PerspectivePart
+	 *
 	 * Constraint:
 	 *     (
 	 *         elementId=TRANSLATABLEID 
-	 *         (description?='described by' descriptionValue=TRANSLATABLESTRING)? 
-	 *         containerData=STRING? 
-	 *         accessibilityPhrase=STRING? 
-	 *         iconURI=STRING? 
-	 *         view=PerspectiveView? 
-	 *         isClosable?='isClosable'?
+	 *         (containerData=STRING | accessibilityPhrase=STRING | iconURI=STRING | view=PerspectiveView | isClosable?='isClosable')*
 	 *     )
 	 */
-	protected void sequence_PerspectivePart(EObject context, PerspectivePart semanticObject) {
+	protected void sequence_PerspectivePart(ISerializationContext context, PerspectivePart semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveReport
+	 *     PerspectiveReport returns PerspectiveReport
+	 *
 	 * Constraint:
 	 *     ref=[Report|ID]
 	 */
-	protected void sequence_PerspectiveReport(EObject context, PerspectiveReport semanticObject) {
-		genericSequencer.createSequence(context, semanticObject);
+	protected void sequence_PerspectiveReport(ISerializationContext context, PerspectiveReport semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_REPORT__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_REPORT__REF));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveReportAccess().getRefReportIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_REPORT__REF, false));
+		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveElement returns PerspectiveSashContainer
+	 *     PerspectiveSashContainer returns PerspectiveSashContainer
+	 *
 	 * Constraint:
 	 *     (
 	 *         elementId=ID 
-	 *         orientation=SashOrientation? 
-	 *         selectedElement=[PerspectiveElement|ID]? 
-	 *         containerData=STRING? 
-	 *         accessibilityPhrase=STRING? 
+	 *         (orientation=SashOrientation | selectedElement=[PerspectiveElement|ID] | containerData=STRING | accessibilityPhrase=STRING)* 
 	 *         elements+=PerspectiveElement*
 	 *     )
 	 */
-	protected void sequence_PerspectiveSashContainer(EObject context, PerspectiveSashContainer semanticObject) {
+	protected void sequence_PerspectiveSashContainer(ISerializationContext context, PerspectiveSashContainer semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveSearch
+	 *     PerspectiveSearch returns PerspectiveSearch
+	 *
+	 * Constraint:
+	 *     (dtoRef=[LDto|ID] (depth=INT | filterCols=INT)*)
+	 */
+	protected void sequence_PerspectiveSearch(ISerializationContext context, PerspectiveSearch semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveSelection
+	 *     PerspectiveSelection returns PerspectiveSelection
+	 *
 	 * Constraint:
 	 *     ref=[Table|ID]
 	 */
-	protected void sequence_PerspectiveSelection(EObject context, PerspectiveSelection semanticObject) {
-		genericSequencer.createSequence(context, semanticObject);
+	protected void sequence_PerspectiveSelection(ISerializationContext context, PerspectiveSelection semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_SELECTION__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_SELECTION__REF));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveSelectionAccess().getRefTableIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_SELECTION__REF, false));
+		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveTable
+	 *     PerspectiveTable returns PerspectiveTable
+	 *
 	 * Constraint:
 	 *     ref=[Table|ID]
 	 */
-	protected void sequence_PerspectiveTable(EObject context, PerspectiveTable semanticObject) {
-		genericSequencer.createSequence(context, semanticObject);
+	protected void sequence_PerspectiveTable(ISerializationContext context, PerspectiveTable semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_TABLE__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_TABLE__REF));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveTableAccess().getRefTableIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_TABLE__REF, false));
+		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveTopology
+	 *     PerspectiveTopology returns PerspectiveTopology
+	 *
 	 * Constraint:
 	 *     ref=[Topology|ID]
 	 */
-	protected void sequence_PerspectiveTopology(EObject context, PerspectiveTopology semanticObject) {
+	protected void sequence_PerspectiveTopology(ISerializationContext context, PerspectiveTopology semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_TOPOLOGY__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PerspectiveDslPackage.Literals.PERSPECTIVE_TOPOLOGY__REF));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyIDTerminalRuleCall_2_0_1(), semanticObject.eGet(PerspectiveDslPackage.Literals.PERSPECTIVE_TOPOLOGY__REF, false));
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     PerspectiveView returns PerspectiveWelcome
+	 *     PerspectiveWelcome returns PerspectiveWelcome
+	 *
+	 * Constraint:
+	 *     {PerspectiveWelcome}
+	 */
+	protected void sequence_PerspectiveWelcome(ISerializationContext context, PerspectiveWelcome semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     Perspective returns Perspective
+	 *
 	 * Constraint:
 	 *     (
 	 *         name=TRANSLATABLEID 
-	 *         (description?='described by' descriptionValue=TRANSLATABLESTRING)? 
+	 *         (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? 
 	 *         (process=[Blip|ID] userTask=[BlipUserTask|ID])? 
-	 *         iconURI=STRING? 
-	 *         accessibilityPhrase=STRING? 
-	 *         toolbar=[ActionToolbar|ID]? 
+	 *         (iconURI=STRING | accessibilityPhrase=STRING | toolbar=[ActionToolbar|ID])* 
 	 *         elements+=PerspectiveElement*
 	 *     )
 	 */
-	protected void sequence_Perspective(EObject context, Perspective semanticObject) {
+	protected void sequence_Perspective(ISerializationContext context, Perspective semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
+	
+	
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSyntacticSequencer.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSyntacticSequencer.java
index ac4dc04..eeaa638 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSyntacticSequencer.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSyntacticSequencer.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.perspective.serializer;
 
 import com.google.inject.Inject;
@@ -31,33 +34,33 @@
 public class PerspectiveDslSyntacticSequencer extends AbstractSyntacticSequencer {
 
 	protected PerspectiveDslGrammarAccess grammarAccess;
-	protected AbstractElementAlias match_PerspectivePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q;
+	protected AbstractElementAlias match_PerspectivePackage___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 = (PerspectiveDslGrammarAccess) access;
-		match_PerspectivePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getPerspectivePackageAccess().getRightCurlyBracketKeyword_3_3()));
+		match_PerspectivePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getPerspectivePackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getPerspectivePackageAccess().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_PerspectivePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
-				emit_PerspectivePackage___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_PerspectivePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q.equals(syntax))
+				emit_PerspectivePackage___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_PerspectivePackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+	protected void emit_PerspectivePackage___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.perspective/src-gen/org/eclipse/osbp/xtext/perspective/services/PerspectiveDslGrammarAccess.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/services/PerspectiveDslGrammarAccess.java
index 921dc36..9bf3529 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/services/PerspectiveDslGrammarAccess.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/services/PerspectiveDslGrammarAccess.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.perspective.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 PerspectiveDslGrammarAccess extends AbstractGrammarElementFinder {
 	
-	
 	public class PerspectiveModelElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveModel");
-		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
-		private final RuleCall cPackagesPerspectivePackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveModel");
+		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 cPackagesPerspectivePackageParserRuleCall_1_0 = (RuleCall)cPackagesAssignment_1.eContents().get(0);
 		
 		//PerspectiveModel:
+		//	importSection=XImportSection?
 		//	packages+=PerspectivePackage*;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
+		//importSection=XImportSection? packages+=PerspectivePackage*
+		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+=PerspectivePackage*
-		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
-
+		public Assignment getPackagesAssignment_1() { return cPackagesAssignment_1; }
+		
 		//PerspectivePackage
-		public RuleCall getPackagesPerspectivePackageParserRuleCall_0() { return cPackagesPerspectivePackageParserRuleCall_0; }
+		public RuleCall getPackagesPerspectivePackageParserRuleCall_1_0() { return cPackagesPerspectivePackageParserRuleCall_1_0; }
 	}
-
 	public class PerspectivePackageElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectivePackage");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectivePackage");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectivePackageAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cPackageKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -55,79 +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 cImportsPerspectiveImportParserRuleCall_3_1_0 = (RuleCall)cImportsAssignment_3_1.eContents().get(0);
-		private final Assignment cPerspectivesAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
-		private final RuleCall cPerspectivesPerspectiveParserRuleCall_3_2_0 = (RuleCall)cPerspectivesAssignment_3_2.eContents().get(0);
-		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		private final Assignment cPerspectivesAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cPerspectivesPerspectiveParserRuleCall_3_1_0 = (RuleCall)cPerspectivesAssignment_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
 		
 		//PerspectivePackage:
-		//	{PerspectivePackage} "package" name=QualifiedName ("{" imports+=PerspectiveImport* perspectives+=Perspective* "}")?;
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectivePackage} "package" name=QualifiedName ("{" imports+=PerspectiveImport* perspectives+=Perspective* "}")?
+		//	{PerspectivePackage} 'package' name=QualifiedName ('{' perspectives+=Perspective* '}')?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectivePackage} 'package' name=QualifiedName ('{' perspectives+=Perspective* '}')?
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectivePackage}
 		public Action getPerspectivePackageAction_0() { return cPerspectivePackageAction_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+=PerspectiveImport* perspectives+=Perspective* "}")?
-		public Group getGroup_3() { return cGroup_3; }
-
-		//"{"
-		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
-
-		//imports+=PerspectiveImport*
-		public Assignment getImportsAssignment_3_1() { return cImportsAssignment_3_1; }
-
-		//PerspectiveImport
-		public RuleCall getImportsPerspectiveImportParserRuleCall_3_1_0() { return cImportsPerspectiveImportParserRuleCall_3_1_0; }
-
-		//perspectives+=Perspective*
-		public Assignment getPerspectivesAssignment_3_2() { return cPerspectivesAssignment_3_2; }
-
-		//Perspective
-		public RuleCall getPerspectivesPerspectiveParserRuleCall_3_2_0() { return cPerspectivesPerspectiveParserRuleCall_3_2_0; }
-
-		//"}"
-		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
-	}
-
-	public class PerspectiveImportElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveImport");
-		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 cImportedNamespacePerspectiveQualifiedNameWithWildCardParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
 		
-		//PerspectiveImport returns types::LImport:
-		//	"import" importedNamespace=PerspectiveQualifiedNameWithWildCard;
-		public ParserRule getRule() { return rule; }
-
-		//"import" importedNamespace=PerspectiveQualifiedNameWithWildCard
-		public Group getGroup() { return cGroup; }
-
-		//"import"
-		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
-
-		//importedNamespace=PerspectiveQualifiedNameWithWildCard
-		public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
-
-		//PerspectiveQualifiedNameWithWildCard
-		public RuleCall getImportedNamespacePerspectiveQualifiedNameWithWildCardParserRuleCall_1_0() { return cImportedNamespacePerspectiveQualifiedNameWithWildCardParserRuleCall_1_0; }
+		//('{' perspectives+=Perspective* '}')?
+		public Group getGroup_3() { return cGroup_3; }
+		
+		//'{'
+		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
+		
+		//perspectives+=Perspective*
+		public Assignment getPerspectivesAssignment_3_1() { return cPerspectivesAssignment_3_1; }
+		
+		//Perspective
+		public RuleCall getPerspectivesPerspectiveParserRuleCall_3_1_0() { return cPerspectivesPerspectiveParserRuleCall_3_1_0; }
+		
+		//'}'
+		public Keyword getRightCurlyBracketKeyword_3_2() { return cRightCurlyBracketKeyword_3_2; }
 	}
-
 	public class PerspectiveElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Perspective");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.Perspective");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cPerspectiveKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -167,130 +160,129 @@
 		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
 		
 		//Perspective:
-		//	{Perspective} "perspective" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)?
-		//	("process" process=[blip::Blip] "usertask" userTask=[blip::BlipUserTask])? (("iconURI" iconURI=STRING)? &
-		//	("accessibility" accessibilityPhrase=STRING)? & ("toolbar" toolbar=[action::ActionToolbar])?) "{"
-		//	elements+=PerspectiveElement* "}";
-		public ParserRule getRule() { return rule; }
-
-		//{Perspective} "perspective" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)?
-		//("process" process=[blip::Blip] "usertask" userTask=[blip::BlipUserTask])? (("iconURI" iconURI=STRING)? &
-		//("accessibility" accessibilityPhrase=STRING)? & ("toolbar" toolbar=[action::ActionToolbar])?) "{"
-		//elements+=PerspectiveElement* "}"
+		//	{Perspective} 'perspective' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
+		//	('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])? (('iconURI' iconURI=STRING)? &
+		//	('accessibility' accessibilityPhrase=STRING)? & ('toolbar' toolbar=[action::ActionToolbar])?)
+		//	'{' elements+=PerspectiveElement* '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{Perspective} 'perspective' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
+		//('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])? (('iconURI' iconURI=STRING)? &
+		//('accessibility' accessibilityPhrase=STRING)? & ('toolbar' toolbar=[action::ActionToolbar])?) '{'
+		//elements+=PerspectiveElement* '}'
 		public Group getGroup() { return cGroup; }
-
+		
 		//{Perspective}
 		public Action getPerspectiveAction_0() { return cPerspectiveAction_0; }
-
-		//"perspective"
+		
+		//'perspective'
 		public Keyword getPerspectiveKeyword_1() { return cPerspectiveKeyword_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; }
-
-		//("process" process=[blip::Blip] "usertask" userTask=[blip::BlipUserTask])?
+		
+		//('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])?
 		public Group getGroup_4() { return cGroup_4; }
-
-		//"process"
+		
+		//'process'
 		public Keyword getProcessKeyword_4_0() { return cProcessKeyword_4_0; }
-
+		
 		//process=[blip::Blip]
 		public Assignment getProcessAssignment_4_1() { return cProcessAssignment_4_1; }
-
+		
 		//[blip::Blip]
 		public CrossReference getProcessBlipCrossReference_4_1_0() { return cProcessBlipCrossReference_4_1_0; }
-
+		
 		//ID
 		public RuleCall getProcessBlipIDTerminalRuleCall_4_1_0_1() { return cProcessBlipIDTerminalRuleCall_4_1_0_1; }
-
-		//"usertask"
+		
+		//'usertask'
 		public Keyword getUsertaskKeyword_4_2() { return cUsertaskKeyword_4_2; }
-
+		
 		//userTask=[blip::BlipUserTask]
 		public Assignment getUserTaskAssignment_4_3() { return cUserTaskAssignment_4_3; }
-
+		
 		//[blip::BlipUserTask]
 		public CrossReference getUserTaskBlipUserTaskCrossReference_4_3_0() { return cUserTaskBlipUserTaskCrossReference_4_3_0; }
-
+		
 		//ID
 		public RuleCall getUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1() { return cUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1; }
-
-		//("iconURI" iconURI=STRING)? & ("accessibility" accessibilityPhrase=STRING)? & ("toolbar"
+		
+		//('iconURI' iconURI=STRING)? & ('accessibility' accessibilityPhrase=STRING)? & ('toolbar'
 		//toolbar=[action::ActionToolbar])?
 		public UnorderedGroup getUnorderedGroup_5() { return cUnorderedGroup_5; }
-
-		//("iconURI" iconURI=STRING)?
+		
+		//('iconURI' iconURI=STRING)?
 		public Group getGroup_5_0() { return cGroup_5_0; }
-
-		//"iconURI"
+		
+		//'iconURI'
 		public Keyword getIconURIKeyword_5_0_0() { return cIconURIKeyword_5_0_0; }
-
+		
 		//iconURI=STRING
 		public Assignment getIconURIAssignment_5_0_1() { return cIconURIAssignment_5_0_1; }
-
+		
 		//STRING
 		public RuleCall getIconURISTRINGTerminalRuleCall_5_0_1_0() { return cIconURISTRINGTerminalRuleCall_5_0_1_0; }
-
-		//("accessibility" accessibilityPhrase=STRING)?
+		
+		//('accessibility' accessibilityPhrase=STRING)?
 		public Group getGroup_5_1() { return cGroup_5_1; }
-
-		//"accessibility"
+		
+		//'accessibility'
 		public Keyword getAccessibilityKeyword_5_1_0() { return cAccessibilityKeyword_5_1_0; }
-
+		
 		//accessibilityPhrase=STRING
 		public Assignment getAccessibilityPhraseAssignment_5_1_1() { return cAccessibilityPhraseAssignment_5_1_1; }
-
+		
 		//STRING
 		public RuleCall getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0() { return cAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0; }
-
-		//("toolbar" toolbar=[action::ActionToolbar])?
+		
+		//('toolbar' toolbar=[action::ActionToolbar])?
 		public Group getGroup_5_2() { return cGroup_5_2; }
-
-		//"toolbar"
+		
+		//'toolbar'
 		public Keyword getToolbarKeyword_5_2_0() { return cToolbarKeyword_5_2_0; }
-
+		
 		//toolbar=[action::ActionToolbar]
 		public Assignment getToolbarAssignment_5_2_1() { return cToolbarAssignment_5_2_1; }
-
+		
 		//[action::ActionToolbar]
 		public CrossReference getToolbarActionToolbarCrossReference_5_2_1_0() { return cToolbarActionToolbarCrossReference_5_2_1_0; }
-
+		
 		//ID
 		public RuleCall getToolbarActionToolbarIDTerminalRuleCall_5_2_1_0_1() { return cToolbarActionToolbarIDTerminalRuleCall_5_2_1_0_1; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
-
+		
 		//elements+=PerspectiveElement*
 		public Assignment getElementsAssignment_7() { return cElementsAssignment_7; }
-
+		
 		//PerspectiveElement
 		public RuleCall getElementsPerspectiveElementParserRuleCall_7_0() { return cElementsPerspectiveElementParserRuleCall_7_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
 	}
-
 	public class PerspectiveElementElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveElement");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveElement");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final RuleCall cPerspectiveSashContainerParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cPerspectivePartStackParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
@@ -298,23 +290,22 @@
 		
 		//PerspectiveElement:
 		//	PerspectiveSashContainer | PerspectivePartStack | PerspectivePart;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
 		//PerspectiveSashContainer | PerspectivePartStack | PerspectivePart
 		public Alternatives getAlternatives() { return cAlternatives; }
-
+		
 		//PerspectiveSashContainer
 		public RuleCall getPerspectiveSashContainerParserRuleCall_0() { return cPerspectiveSashContainerParserRuleCall_0; }
-
+		
 		//PerspectivePartStack
 		public RuleCall getPerspectivePartStackParserRuleCall_1() { return cPerspectivePartStackParserRuleCall_1; }
-
+		
 		//PerspectivePart
 		public RuleCall getPerspectivePartParserRuleCall_2() { return cPerspectivePartParserRuleCall_2; }
 	}
-
 	public class PerspectiveSashContainerElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveSashContainer");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveSashContainer");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveSashContainerAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cSashContainerKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -344,98 +335,98 @@
 		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
 		
 		//PerspectiveSashContainer:
-		//	{PerspectiveSashContainer} "sashContainer" elementId=ID (("orientation" orientation=SashOrientation)? &
-		//	("selectedElement" selectedElement=[PerspectiveElement])? & ("spaceVolume" containerData=STRING)? & ("accessibility"
-		//	accessibilityPhrase=STRING)?) "{" elements+=PerspectiveElement* "}";
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveSashContainer} "sashContainer" elementId=ID (("orientation" orientation=SashOrientation)? &
-		//("selectedElement" selectedElement=[PerspectiveElement])? & ("spaceVolume" containerData=STRING)? & ("accessibility"
-		//accessibilityPhrase=STRING)?) "{" elements+=PerspectiveElement* "}"
+		//	{PerspectiveSashContainer} 'sashContainer' elementId=ID (('orientation' orientation=SashOrientation)? &
+		//	('selectedElement' selectedElement=[PerspectiveElement])? & ('spaceVolume' containerData=STRING)? & ('accessibility'
+		//	accessibilityPhrase=STRING)?)
+		//	'{' elements+=PerspectiveElement* '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveSashContainer} 'sashContainer' elementId=ID (('orientation' orientation=SashOrientation)? &
+		//('selectedElement' selectedElement=[PerspectiveElement])? & ('spaceVolume' containerData=STRING)? & ('accessibility'
+		//accessibilityPhrase=STRING)?) '{' elements+=PerspectiveElement* '}'
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveSashContainer}
 		public Action getPerspectiveSashContainerAction_0() { return cPerspectiveSashContainerAction_0; }
-
-		//"sashContainer"
+		
+		//'sashContainer'
 		public Keyword getSashContainerKeyword_1() { return cSashContainerKeyword_1; }
-
+		
 		//elementId=ID
 		public Assignment getElementIdAssignment_2() { return cElementIdAssignment_2; }
-
+		
 		//ID
 		public RuleCall getElementIdIDTerminalRuleCall_2_0() { return cElementIdIDTerminalRuleCall_2_0; }
-
-		//("orientation" orientation=SashOrientation)? & ("selectedElement" selectedElement=[PerspectiveElement])? &
-		//("spaceVolume" containerData=STRING)? & ("accessibility" accessibilityPhrase=STRING)?
+		
+		//('orientation' orientation=SashOrientation)? & ('selectedElement' selectedElement=[PerspectiveElement])? &
+		//('spaceVolume' containerData=STRING)? & ('accessibility' accessibilityPhrase=STRING)?
 		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
-
-		//("orientation" orientation=SashOrientation)?
+		
+		//('orientation' orientation=SashOrientation)?
 		public Group getGroup_3_0() { return cGroup_3_0; }
-
-		//"orientation"
+		
+		//'orientation'
 		public Keyword getOrientationKeyword_3_0_0() { return cOrientationKeyword_3_0_0; }
-
+		
 		//orientation=SashOrientation
 		public Assignment getOrientationAssignment_3_0_1() { return cOrientationAssignment_3_0_1; }
-
+		
 		//SashOrientation
 		public RuleCall getOrientationSashOrientationEnumRuleCall_3_0_1_0() { return cOrientationSashOrientationEnumRuleCall_3_0_1_0; }
-
-		//("selectedElement" selectedElement=[PerspectiveElement])?
+		
+		//('selectedElement' selectedElement=[PerspectiveElement])?
 		public Group getGroup_3_1() { return cGroup_3_1; }
-
-		//"selectedElement"
+		
+		//'selectedElement'
 		public Keyword getSelectedElementKeyword_3_1_0() { return cSelectedElementKeyword_3_1_0; }
-
+		
 		//selectedElement=[PerspectiveElement]
 		public Assignment getSelectedElementAssignment_3_1_1() { return cSelectedElementAssignment_3_1_1; }
-
+		
 		//[PerspectiveElement]
 		public CrossReference getSelectedElementPerspectiveElementCrossReference_3_1_1_0() { return cSelectedElementPerspectiveElementCrossReference_3_1_1_0; }
-
+		
 		//ID
 		public RuleCall getSelectedElementPerspectiveElementIDTerminalRuleCall_3_1_1_0_1() { return cSelectedElementPerspectiveElementIDTerminalRuleCall_3_1_1_0_1; }
-
-		//("spaceVolume" containerData=STRING)?
+		
+		//('spaceVolume' containerData=STRING)?
 		public Group getGroup_3_2() { return cGroup_3_2; }
-
-		//"spaceVolume"
+		
+		//'spaceVolume'
 		public Keyword getSpaceVolumeKeyword_3_2_0() { return cSpaceVolumeKeyword_3_2_0; }
-
+		
 		//containerData=STRING
 		public Assignment getContainerDataAssignment_3_2_1() { return cContainerDataAssignment_3_2_1; }
-
+		
 		//STRING
 		public RuleCall getContainerDataSTRINGTerminalRuleCall_3_2_1_0() { return cContainerDataSTRINGTerminalRuleCall_3_2_1_0; }
-
-		//("accessibility" accessibilityPhrase=STRING)?
+		
+		//('accessibility' accessibilityPhrase=STRING)?
 		public Group getGroup_3_3() { return cGroup_3_3; }
-
-		//"accessibility"
+		
+		//'accessibility'
 		public Keyword getAccessibilityKeyword_3_3_0() { return cAccessibilityKeyword_3_3_0; }
-
+		
 		//accessibilityPhrase=STRING
 		public Assignment getAccessibilityPhraseAssignment_3_3_1() { return cAccessibilityPhraseAssignment_3_3_1; }
-
+		
 		//STRING
 		public RuleCall getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0() { return cAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
-
+		
 		//elements+=PerspectiveElement*
 		public Assignment getElementsAssignment_5() { return cElementsAssignment_5; }
-
+		
 		//PerspectiveElement
 		public RuleCall getElementsPerspectiveElementParserRuleCall_5_0() { return cElementsPerspectiveElementParserRuleCall_5_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
 	}
-
 	public class PerspectivePartStackElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectivePartStack");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectivePartStack");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectivePartStackAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cPartStackKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -461,85 +452,84 @@
 		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
 		
 		//PerspectivePartStack:
-		//	{PerspectivePartStack} "partStack" elementId=ID (("selectedElement" selectedElement=[PerspectivePart])? &
-		//	("spaceVolume" containerData=STRING)? & ("accessibility" accessibilityPhrase=STRING)?) "{"
-		//	elements+=PerspectiveElement* "}";
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectivePartStack} "partStack" elementId=ID (("selectedElement" selectedElement=[PerspectivePart])? & ("spaceVolume"
-		//containerData=STRING)? & ("accessibility" accessibilityPhrase=STRING)?) "{" elements+=PerspectiveElement* "}"
+		//	{PerspectivePartStack} 'partStack' elementId=ID (('selectedElement' selectedElement=[PerspectivePart])? &
+		//	('spaceVolume' containerData=STRING)? & ('accessibility' accessibilityPhrase=STRING)?)
+		//	'{' elements+=PerspectiveElement* '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectivePartStack} 'partStack' elementId=ID (('selectedElement' selectedElement=[PerspectivePart])? & ('spaceVolume'
+		//containerData=STRING)? & ('accessibility' accessibilityPhrase=STRING)?) '{' elements+=PerspectiveElement* '}'
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectivePartStack}
 		public Action getPerspectivePartStackAction_0() { return cPerspectivePartStackAction_0; }
-
-		//"partStack"
+		
+		//'partStack'
 		public Keyword getPartStackKeyword_1() { return cPartStackKeyword_1; }
-
+		
 		//elementId=ID
 		public Assignment getElementIdAssignment_2() { return cElementIdAssignment_2; }
-
+		
 		//ID
 		public RuleCall getElementIdIDTerminalRuleCall_2_0() { return cElementIdIDTerminalRuleCall_2_0; }
-
-		//("selectedElement" selectedElement=[PerspectivePart])? & ("spaceVolume" containerData=STRING)? & ("accessibility"
+		
+		//('selectedElement' selectedElement=[PerspectivePart])? & ('spaceVolume' containerData=STRING)? & ('accessibility'
 		//accessibilityPhrase=STRING)?
 		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
-
-		//("selectedElement" selectedElement=[PerspectivePart])?
+		
+		//('selectedElement' selectedElement=[PerspectivePart])?
 		public Group getGroup_3_0() { return cGroup_3_0; }
-
-		//"selectedElement"
+		
+		//'selectedElement'
 		public Keyword getSelectedElementKeyword_3_0_0() { return cSelectedElementKeyword_3_0_0; }
-
+		
 		//selectedElement=[PerspectivePart]
 		public Assignment getSelectedElementAssignment_3_0_1() { return cSelectedElementAssignment_3_0_1; }
-
+		
 		//[PerspectivePart]
 		public CrossReference getSelectedElementPerspectivePartCrossReference_3_0_1_0() { return cSelectedElementPerspectivePartCrossReference_3_0_1_0; }
-
+		
 		//ID
 		public RuleCall getSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1() { return cSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1; }
-
-		//("spaceVolume" containerData=STRING)?
+		
+		//('spaceVolume' containerData=STRING)?
 		public Group getGroup_3_1() { return cGroup_3_1; }
-
-		//"spaceVolume"
+		
+		//'spaceVolume'
 		public Keyword getSpaceVolumeKeyword_3_1_0() { return cSpaceVolumeKeyword_3_1_0; }
-
+		
 		//containerData=STRING
 		public Assignment getContainerDataAssignment_3_1_1() { return cContainerDataAssignment_3_1_1; }
-
+		
 		//STRING
 		public RuleCall getContainerDataSTRINGTerminalRuleCall_3_1_1_0() { return cContainerDataSTRINGTerminalRuleCall_3_1_1_0; }
-
-		//("accessibility" accessibilityPhrase=STRING)?
+		
+		//('accessibility' accessibilityPhrase=STRING)?
 		public Group getGroup_3_2() { return cGroup_3_2; }
-
-		//"accessibility"
+		
+		//'accessibility'
 		public Keyword getAccessibilityKeyword_3_2_0() { return cAccessibilityKeyword_3_2_0; }
-
+		
 		//accessibilityPhrase=STRING
 		public Assignment getAccessibilityPhraseAssignment_3_2_1() { return cAccessibilityPhraseAssignment_3_2_1; }
-
+		
 		//STRING
 		public RuleCall getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0() { return cAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
-
+		
 		//elements+=PerspectiveElement*
 		public Assignment getElementsAssignment_5() { return cElementsAssignment_5; }
-
+		
 		//PerspectiveElement
 		public RuleCall getElementsPerspectiveElementParserRuleCall_5_0() { return cElementsPerspectiveElementParserRuleCall_5_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
 	}
-
 	public class PerspectivePartElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectivePart");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectivePart");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectivePartAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cPartKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -547,179 +537,178 @@
 		private final RuleCall cElementIdTRANSLATABLEIDParserRuleCall_2_0 = (RuleCall)cElementIdAssignment_2.eContents().get(0);
 		private final UnorderedGroup cUnorderedGroup_3 = (UnorderedGroup)cGroup.eContents().get(3);
 		private final Group cGroup_3_0 = (Group)cUnorderedGroup_3.eContents().get(0);
-		private final Assignment cDescriptionAssignment_3_0_0 = (Assignment)cGroup_3_0.eContents().get(0);
-		private final Keyword cDescriptionDescribedByKeyword_3_0_0_0 = (Keyword)cDescriptionAssignment_3_0_0.eContents().get(0);
-		private final Assignment cDescriptionValueAssignment_3_0_1 = (Assignment)cGroup_3_0.eContents().get(1);
-		private final RuleCall cDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_0_1_0 = (RuleCall)cDescriptionValueAssignment_3_0_1.eContents().get(0);
+		private final Keyword cSpaceVolumeKeyword_3_0_0 = (Keyword)cGroup_3_0.eContents().get(0);
+		private final Assignment cContainerDataAssignment_3_0_1 = (Assignment)cGroup_3_0.eContents().get(1);
+		private final RuleCall cContainerDataSTRINGTerminalRuleCall_3_0_1_0 = (RuleCall)cContainerDataAssignment_3_0_1.eContents().get(0);
 		private final Group cGroup_3_1 = (Group)cUnorderedGroup_3.eContents().get(1);
-		private final Keyword cSpaceVolumeKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
-		private final Assignment cContainerDataAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
-		private final RuleCall cContainerDataSTRINGTerminalRuleCall_3_1_1_0 = (RuleCall)cContainerDataAssignment_3_1_1.eContents().get(0);
+		private final Keyword cAccessibilityKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cAccessibilityPhraseAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final RuleCall cAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0 = (RuleCall)cAccessibilityPhraseAssignment_3_1_1.eContents().get(0);
 		private final Group cGroup_3_2 = (Group)cUnorderedGroup_3.eContents().get(2);
-		private final Keyword cAccessibilityKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
-		private final Assignment cAccessibilityPhraseAssignment_3_2_1 = (Assignment)cGroup_3_2.eContents().get(1);
-		private final RuleCall cAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0 = (RuleCall)cAccessibilityPhraseAssignment_3_2_1.eContents().get(0);
+		private final Keyword cIconURIKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
+		private final Assignment cIconURIAssignment_3_2_1 = (Assignment)cGroup_3_2.eContents().get(1);
+		private final RuleCall cIconURISTRINGTerminalRuleCall_3_2_1_0 = (RuleCall)cIconURIAssignment_3_2_1.eContents().get(0);
 		private final Group cGroup_3_3 = (Group)cUnorderedGroup_3.eContents().get(3);
-		private final Keyword cIconURIKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
-		private final Assignment cIconURIAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
-		private final RuleCall cIconURISTRINGTerminalRuleCall_3_3_1_0 = (RuleCall)cIconURIAssignment_3_3_1.eContents().get(0);
-		private final Group cGroup_3_4 = (Group)cUnorderedGroup_3.eContents().get(4);
-		private final Keyword cViewKeyword_3_4_0 = (Keyword)cGroup_3_4.eContents().get(0);
-		private final Assignment cViewAssignment_3_4_1 = (Assignment)cGroup_3_4.eContents().get(1);
-		private final RuleCall cViewPerspectiveViewParserRuleCall_3_4_1_0 = (RuleCall)cViewAssignment_3_4_1.eContents().get(0);
-		private final Assignment cIsClosableAssignment_3_5 = (Assignment)cUnorderedGroup_3.eContents().get(5);
-		private final Keyword cIsClosableIsClosableKeyword_3_5_0 = (Keyword)cIsClosableAssignment_3_5.eContents().get(0);
+		private final Keyword cViewKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
+		private final Assignment cViewAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
+		private final RuleCall cViewPerspectiveViewParserRuleCall_3_3_1_0 = (RuleCall)cViewAssignment_3_3_1.eContents().get(0);
+		private final Assignment cIsClosableAssignment_3_4 = (Assignment)cUnorderedGroup_3.eContents().get(4);
+		private final Keyword cIsClosableIsClosableKeyword_3_4_0 = (Keyword)cIsClosableAssignment_3_4.eContents().get(0);
 		
 		//PerspectivePart:
-		//	{PerspectivePart} "part" elementId=TRANSLATABLEID ((description?="described by" descriptionValue=TRANSLATABLESTRING)?
-		//	& ("spaceVolume" containerData=STRING)? & ("accessibility" accessibilityPhrase=STRING)? & ("iconURI" iconURI=STRING)?
-		//	& ("view" view=PerspectiveView)? & isClosable?="isClosable"?);
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectivePart} "part" elementId=TRANSLATABLEID ((description?="described by" descriptionValue=TRANSLATABLESTRING)? &
-		//("spaceVolume" containerData=STRING)? & ("accessibility" accessibilityPhrase=STRING)? & ("iconURI" iconURI=STRING)? &
-		//("view" view=PerspectiveView)? & isClosable?="isClosable"?)
+		//	{PerspectivePart} 'part' elementId=TRANSLATABLEID (('spaceVolume' containerData=STRING)? & ('accessibility'
+		//	accessibilityPhrase=STRING)? & ('iconURI' iconURI=STRING)? & ('view' view=PerspectiveView)? &
+		//	isClosable?='isClosable'?);
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectivePart} 'part' elementId=TRANSLATABLEID (('spaceVolume' containerData=STRING)? & ('accessibility'
+		//accessibilityPhrase=STRING)? & ('iconURI' iconURI=STRING)? & ('view' view=PerspectiveView)? &
+		//isClosable?='isClosable'?)
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectivePart}
 		public Action getPerspectivePartAction_0() { return cPerspectivePartAction_0; }
-
-		//"part"
+		
+		//'part'
 		public Keyword getPartKeyword_1() { return cPartKeyword_1; }
-
+		
 		//elementId=TRANSLATABLEID
 		public Assignment getElementIdAssignment_2() { return cElementIdAssignment_2; }
-
+		
 		//TRANSLATABLEID
 		public RuleCall getElementIdTRANSLATABLEIDParserRuleCall_2_0() { return cElementIdTRANSLATABLEIDParserRuleCall_2_0; }
-
-		//(description?="described by" descriptionValue=TRANSLATABLESTRING)? & ("spaceVolume" containerData=STRING)? &
-		//("accessibility" accessibilityPhrase=STRING)? & ("iconURI" iconURI=STRING)? & ("view" view=PerspectiveView)? &
-		//isClosable?="isClosable"?
+		
+		//('spaceVolume' containerData=STRING)? & ('accessibility' accessibilityPhrase=STRING)? & ('iconURI' iconURI=STRING)? &
+		//('view' view=PerspectiveView)? & isClosable?='isClosable'?
 		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
-
-		//(description?="described by" descriptionValue=TRANSLATABLESTRING)?
+		
+		//('spaceVolume' containerData=STRING)?
 		public Group getGroup_3_0() { return cGroup_3_0; }
-
-		//description?="described by"
-		public Assignment getDescriptionAssignment_3_0_0() { return cDescriptionAssignment_3_0_0; }
-
-		//"described by"
-		public Keyword getDescriptionDescribedByKeyword_3_0_0_0() { return cDescriptionDescribedByKeyword_3_0_0_0; }
-
-		//descriptionValue=TRANSLATABLESTRING
-		public Assignment getDescriptionValueAssignment_3_0_1() { return cDescriptionValueAssignment_3_0_1; }
-
-		//TRANSLATABLESTRING
-		public RuleCall getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_0_1_0() { return cDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_0_1_0; }
-
-		//("spaceVolume" containerData=STRING)?
-		public Group getGroup_3_1() { return cGroup_3_1; }
-
-		//"spaceVolume"
-		public Keyword getSpaceVolumeKeyword_3_1_0() { return cSpaceVolumeKeyword_3_1_0; }
-
+		
+		//'spaceVolume'
+		public Keyword getSpaceVolumeKeyword_3_0_0() { return cSpaceVolumeKeyword_3_0_0; }
+		
 		//containerData=STRING
-		public Assignment getContainerDataAssignment_3_1_1() { return cContainerDataAssignment_3_1_1; }
-
+		public Assignment getContainerDataAssignment_3_0_1() { return cContainerDataAssignment_3_0_1; }
+		
 		//STRING
-		public RuleCall getContainerDataSTRINGTerminalRuleCall_3_1_1_0() { return cContainerDataSTRINGTerminalRuleCall_3_1_1_0; }
-
-		//("accessibility" accessibilityPhrase=STRING)?
-		public Group getGroup_3_2() { return cGroup_3_2; }
-
-		//"accessibility"
-		public Keyword getAccessibilityKeyword_3_2_0() { return cAccessibilityKeyword_3_2_0; }
-
+		public RuleCall getContainerDataSTRINGTerminalRuleCall_3_0_1_0() { return cContainerDataSTRINGTerminalRuleCall_3_0_1_0; }
+		
+		//('accessibility' accessibilityPhrase=STRING)?
+		public Group getGroup_3_1() { return cGroup_3_1; }
+		
+		//'accessibility'
+		public Keyword getAccessibilityKeyword_3_1_0() { return cAccessibilityKeyword_3_1_0; }
+		
 		//accessibilityPhrase=STRING
-		public Assignment getAccessibilityPhraseAssignment_3_2_1() { return cAccessibilityPhraseAssignment_3_2_1; }
-
+		public Assignment getAccessibilityPhraseAssignment_3_1_1() { return cAccessibilityPhraseAssignment_3_1_1; }
+		
 		//STRING
-		public RuleCall getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0() { return cAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0; }
-
-		//("iconURI" iconURI=STRING)?
-		public Group getGroup_3_3() { return cGroup_3_3; }
-
-		//"iconURI"
-		public Keyword getIconURIKeyword_3_3_0() { return cIconURIKeyword_3_3_0; }
-
+		public RuleCall getAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0() { return cAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0; }
+		
+		//('iconURI' iconURI=STRING)?
+		public Group getGroup_3_2() { return cGroup_3_2; }
+		
+		//'iconURI'
+		public Keyword getIconURIKeyword_3_2_0() { return cIconURIKeyword_3_2_0; }
+		
 		//iconURI=STRING
-		public Assignment getIconURIAssignment_3_3_1() { return cIconURIAssignment_3_3_1; }
-
+		public Assignment getIconURIAssignment_3_2_1() { return cIconURIAssignment_3_2_1; }
+		
 		//STRING
-		public RuleCall getIconURISTRINGTerminalRuleCall_3_3_1_0() { return cIconURISTRINGTerminalRuleCall_3_3_1_0; }
-
-		//("view" view=PerspectiveView)?
-		public Group getGroup_3_4() { return cGroup_3_4; }
-
-		//"view"
-		public Keyword getViewKeyword_3_4_0() { return cViewKeyword_3_4_0; }
-
+		public RuleCall getIconURISTRINGTerminalRuleCall_3_2_1_0() { return cIconURISTRINGTerminalRuleCall_3_2_1_0; }
+		
+		//('view' view=PerspectiveView)?
+		public Group getGroup_3_3() { return cGroup_3_3; }
+		
+		//'view'
+		public Keyword getViewKeyword_3_3_0() { return cViewKeyword_3_3_0; }
+		
 		//view=PerspectiveView
-		public Assignment getViewAssignment_3_4_1() { return cViewAssignment_3_4_1; }
-
+		public Assignment getViewAssignment_3_3_1() { return cViewAssignment_3_3_1; }
+		
 		//PerspectiveView
-		public RuleCall getViewPerspectiveViewParserRuleCall_3_4_1_0() { return cViewPerspectiveViewParserRuleCall_3_4_1_0; }
-
-		//isClosable?="isClosable"?
-		public Assignment getIsClosableAssignment_3_5() { return cIsClosableAssignment_3_5; }
-
-		//"isClosable"
-		public Keyword getIsClosableIsClosableKeyword_3_5_0() { return cIsClosableIsClosableKeyword_3_5_0; }
+		public RuleCall getViewPerspectiveViewParserRuleCall_3_3_1_0() { return cViewPerspectiveViewParserRuleCall_3_3_1_0; }
+		
+		//isClosable?='isClosable'?
+		public Assignment getIsClosableAssignment_3_4() { return cIsClosableAssignment_3_4; }
+		
+		//'isClosable'
+		public Keyword getIsClosableIsClosableKeyword_3_4_0() { return cIsClosableIsClosableKeyword_3_4_0; }
 	}
-
 	public class PerspectiveViewElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveView");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveView");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final RuleCall cPerspectiveSelectionParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cPerspectiveTableParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		private final RuleCall cPerspectiveChartParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
-		private final RuleCall cPerspectiveReportParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
-		private final RuleCall cPerspectiveOrganizationParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
-		private final RuleCall cPerspectiveTopologyParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
-		private final RuleCall cPerspectiveDialogParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
-		private final RuleCall cPerspectiveBPMNParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
-		private final RuleCall cPerspectiveGridParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cPerspectiveBeanParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cPerspectiveReportParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cPerspectiveOrganizationParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cPerspectiveTopologyParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cPerspectiveDialogParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cPerspectiveBPMNParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cPerspectiveGridParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cPerspectiveWelcomeParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cPerspectiveSearchParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cPerspectiveDataInterchangeParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cPerspectiveKanbanParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
 		
 		//PerspectiveView:
-		//	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveReport | PerspectiveOrganization |
-		//	PerspectiveTopology | PerspectiveDialog | PerspectiveBPMN | PerspectiveGrid;
-		public ParserRule getRule() { return rule; }
-
-		//PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveReport | PerspectiveOrganization |
-		//PerspectiveTopology | PerspectiveDialog | PerspectiveBPMN | PerspectiveGrid
+		//	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveBean | PerspectiveReport |
+		//	PerspectiveOrganization | PerspectiveTopology | PerspectiveDialog | PerspectiveBPMN | PerspectiveGrid |
+		//	PerspectiveWelcome | PerspectiveSearch | PerspectiveDataInterchange | PerspectiveKanban;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveBean | PerspectiveReport |
+		//PerspectiveOrganization | PerspectiveTopology | PerspectiveDialog | PerspectiveBPMN | PerspectiveGrid |
+		//PerspectiveWelcome | PerspectiveSearch | PerspectiveDataInterchange | PerspectiveKanban
 		public Alternatives getAlternatives() { return cAlternatives; }
-
+		
 		//PerspectiveSelection
 		public RuleCall getPerspectiveSelectionParserRuleCall_0() { return cPerspectiveSelectionParserRuleCall_0; }
-
+		
 		//PerspectiveTable
 		public RuleCall getPerspectiveTableParserRuleCall_1() { return cPerspectiveTableParserRuleCall_1; }
-
+		
 		//PerspectiveChart
 		public RuleCall getPerspectiveChartParserRuleCall_2() { return cPerspectiveChartParserRuleCall_2; }
-
+		
+		//PerspectiveBean
+		public RuleCall getPerspectiveBeanParserRuleCall_3() { return cPerspectiveBeanParserRuleCall_3; }
+		
 		//PerspectiveReport
-		public RuleCall getPerspectiveReportParserRuleCall_3() { return cPerspectiveReportParserRuleCall_3; }
-
+		public RuleCall getPerspectiveReportParserRuleCall_4() { return cPerspectiveReportParserRuleCall_4; }
+		
 		//PerspectiveOrganization
-		public RuleCall getPerspectiveOrganizationParserRuleCall_4() { return cPerspectiveOrganizationParserRuleCall_4; }
-
+		public RuleCall getPerspectiveOrganizationParserRuleCall_5() { return cPerspectiveOrganizationParserRuleCall_5; }
+		
 		//PerspectiveTopology
-		public RuleCall getPerspectiveTopologyParserRuleCall_5() { return cPerspectiveTopologyParserRuleCall_5; }
-
+		public RuleCall getPerspectiveTopologyParserRuleCall_6() { return cPerspectiveTopologyParserRuleCall_6; }
+		
 		//PerspectiveDialog
-		public RuleCall getPerspectiveDialogParserRuleCall_6() { return cPerspectiveDialogParserRuleCall_6; }
-
+		public RuleCall getPerspectiveDialogParserRuleCall_7() { return cPerspectiveDialogParserRuleCall_7; }
+		
 		//PerspectiveBPMN
-		public RuleCall getPerspectiveBPMNParserRuleCall_7() { return cPerspectiveBPMNParserRuleCall_7; }
-
+		public RuleCall getPerspectiveBPMNParserRuleCall_8() { return cPerspectiveBPMNParserRuleCall_8; }
+		
 		//PerspectiveGrid
-		public RuleCall getPerspectiveGridParserRuleCall_8() { return cPerspectiveGridParserRuleCall_8; }
+		public RuleCall getPerspectiveGridParserRuleCall_9() { return cPerspectiveGridParserRuleCall_9; }
+		
+		//PerspectiveWelcome
+		public RuleCall getPerspectiveWelcomeParserRuleCall_10() { return cPerspectiveWelcomeParserRuleCall_10; }
+		
+		//PerspectiveSearch
+		public RuleCall getPerspectiveSearchParserRuleCall_11() { return cPerspectiveSearchParserRuleCall_11; }
+		
+		//PerspectiveDataInterchange
+		public RuleCall getPerspectiveDataInterchangeParserRuleCall_12() { return cPerspectiveDataInterchangeParserRuleCall_12; }
+		
+		//PerspectiveKanban
+		public RuleCall getPerspectiveKanbanParserRuleCall_13() { return cPerspectiveKanbanParserRuleCall_13; }
 	}
-
 	public class PerspectiveSelectionElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveSelection");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveSelection");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveSelectionAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cSelectKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -728,30 +717,29 @@
 		private final RuleCall cRefTableIDTerminalRuleCall_2_0_1 = (RuleCall)cRefTableCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveSelection:
-		//	{PerspectiveSelection} "select" ref=[table::Table];
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveSelection} "select" ref=[table::Table]
+		//	{PerspectiveSelection} 'select' ref=[table::Table];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveSelection} 'select' ref=[table::Table]
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveSelection}
 		public Action getPerspectiveSelectionAction_0() { return cPerspectiveSelectionAction_0; }
-
-		//"select"
+		
+		//'select'
 		public Keyword getSelectKeyword_1() { return cSelectKeyword_1; }
-
+		
 		//ref=[table::Table]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
-
+		
 		//[table::Table]
 		public CrossReference getRefTableCrossReference_2_0() { return cRefTableCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getRefTableIDTerminalRuleCall_2_0_1() { return cRefTableIDTerminalRuleCall_2_0_1; }
 	}
-
 	public class PerspectiveTableElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveTable");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveTable");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveTableAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cTableKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -760,30 +748,29 @@
 		private final RuleCall cRefTableIDTerminalRuleCall_2_0_1 = (RuleCall)cRefTableCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveTable:
-		//	{PerspectiveTable} "table" ref=[table::Table];
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveTable} "table" ref=[table::Table]
+		//	{PerspectiveTable} 'table' ref=[table::Table];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveTable} 'table' ref=[table::Table]
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveTable}
 		public Action getPerspectiveTableAction_0() { return cPerspectiveTableAction_0; }
-
-		//"table"
+		
+		//'table'
 		public Keyword getTableKeyword_1() { return cTableKeyword_1; }
-
+		
 		//ref=[table::Table]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
-
+		
 		//[table::Table]
 		public CrossReference getRefTableCrossReference_2_0() { return cRefTableCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getRefTableIDTerminalRuleCall_2_0_1() { return cRefTableIDTerminalRuleCall_2_0_1; }
 	}
-
 	public class PerspectiveGridElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveGrid");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveGrid");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveGridAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cGridKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -792,30 +779,60 @@
 		private final RuleCall cRefTableIDTerminalRuleCall_2_0_1 = (RuleCall)cRefTableCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveGrid:
-		//	{PerspectiveGrid} "grid" ref=[table::Table];
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveGrid} "grid" ref=[table::Table]
+		//	{PerspectiveGrid} 'grid' ref=[table::Table];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveGrid} 'grid' ref=[table::Table]
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveGrid}
 		public Action getPerspectiveGridAction_0() { return cPerspectiveGridAction_0; }
-
-		//"grid"
+		
+		//'grid'
 		public Keyword getGridKeyword_1() { return cGridKeyword_1; }
-
+		
 		//ref=[table::Table]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
-
+		
 		//[table::Table]
 		public CrossReference getRefTableCrossReference_2_0() { return cRefTableCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getRefTableIDTerminalRuleCall_2_0_1() { return cRefTableIDTerminalRuleCall_2_0_1; }
 	}
-
+	public class PerspectiveBeanElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveBean");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPerspectiveBeanAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cBeanKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cRefAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cRefTableCrossReference_2_0 = (CrossReference)cRefAssignment_2.eContents().get(0);
+		private final RuleCall cRefTableIDTerminalRuleCall_2_0_1 = (RuleCall)cRefTableCrossReference_2_0.eContents().get(1);
+		
+		//PerspectiveBean:
+		//	{PerspectiveBean} 'bean' ref=[table::Table];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveBean} 'bean' ref=[table::Table]
+		public Group getGroup() { return cGroup; }
+		
+		//{PerspectiveBean}
+		public Action getPerspectiveBeanAction_0() { return cPerspectiveBeanAction_0; }
+		
+		//'bean'
+		public Keyword getBeanKeyword_1() { return cBeanKeyword_1; }
+		
+		//ref=[table::Table]
+		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
+		
+		//[table::Table]
+		public CrossReference getRefTableCrossReference_2_0() { return cRefTableCrossReference_2_0; }
+		
+		//ID
+		public RuleCall getRefTableIDTerminalRuleCall_2_0_1() { return cRefTableIDTerminalRuleCall_2_0_1; }
+	}
 	public class PerspectiveChartElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveChart");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveChart");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveChartAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cChartKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -824,30 +841,29 @@
 		private final RuleCall cRefChartIDTerminalRuleCall_2_0_1 = (RuleCall)cRefChartCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveChart:
-		//	{PerspectiveChart} "chart" ref=[chart::Chart];
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveChart} "chart" ref=[chart::Chart]
+		//	{PerspectiveChart} 'chart' ref=[chart::Chart];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveChart} 'chart' ref=[chart::Chart]
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveChart}
 		public Action getPerspectiveChartAction_0() { return cPerspectiveChartAction_0; }
-
-		//"chart"
+		
+		//'chart'
 		public Keyword getChartKeyword_1() { return cChartKeyword_1; }
-
+		
 		//ref=[chart::Chart]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
-
+		
 		//[chart::Chart]
 		public CrossReference getRefChartCrossReference_2_0() { return cRefChartCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getRefChartIDTerminalRuleCall_2_0_1() { return cRefChartIDTerminalRuleCall_2_0_1; }
 	}
-
 	public class PerspectiveReportElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveReport");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveReport");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveReportAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cReportKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -856,30 +872,29 @@
 		private final RuleCall cRefReportIDTerminalRuleCall_2_0_1 = (RuleCall)cRefReportCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveReport:
-		//	{PerspectiveReport} "report" ref=[report::Report];
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveReport} "report" ref=[report::Report]
+		//	{PerspectiveReport} 'report' ref=[report::Report];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveReport} 'report' ref=[report::Report]
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveReport}
 		public Action getPerspectiveReportAction_0() { return cPerspectiveReportAction_0; }
-
-		//"report"
+		
+		//'report'
 		public Keyword getReportKeyword_1() { return cReportKeyword_1; }
-
+		
 		//ref=[report::Report]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
-
+		
 		//[report::Report]
 		public CrossReference getRefReportCrossReference_2_0() { return cRefReportCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getRefReportIDTerminalRuleCall_2_0_1() { return cRefReportIDTerminalRuleCall_2_0_1; }
 	}
-
 	public class PerspectiveOrganizationElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveOrganization");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveOrganization");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveOrganizationAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cOrganigramKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -888,30 +903,29 @@
 		private final RuleCall cRefOrganizationIDTerminalRuleCall_2_0_1 = (RuleCall)cRefOrganizationCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveOrganization:
-		//	{PerspectiveOrganization} "organigram" ref=[organization::Organization];
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveOrganization} "organigram" ref=[organization::Organization]
+		//	{PerspectiveOrganization} 'organigram' ref=[organization::Organization];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveOrganization} 'organigram' ref=[organization::Organization]
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveOrganization}
 		public Action getPerspectiveOrganizationAction_0() { return cPerspectiveOrganizationAction_0; }
-
-		//"organigram"
+		
+		//'organigram'
 		public Keyword getOrganigramKeyword_1() { return cOrganigramKeyword_1; }
-
+		
 		//ref=[organization::Organization]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
-
+		
 		//[organization::Organization]
 		public CrossReference getRefOrganizationCrossReference_2_0() { return cRefOrganizationCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getRefOrganizationIDTerminalRuleCall_2_0_1() { return cRefOrganizationIDTerminalRuleCall_2_0_1; }
 	}
-
 	public class PerspectiveTopologyElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveTopology");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveTopology");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveTopologyAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cTopologyKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -920,30 +934,29 @@
 		private final RuleCall cRefTopologyIDTerminalRuleCall_2_0_1 = (RuleCall)cRefTopologyCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveTopology:
-		//	{PerspectiveTopology} "topology" ref=[topology::Topology];
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveTopology} "topology" ref=[topology::Topology]
+		//	{PerspectiveTopology} 'topology' ref=[topology::Topology];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveTopology} 'topology' ref=[topology::Topology]
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveTopology}
 		public Action getPerspectiveTopologyAction_0() { return cPerspectiveTopologyAction_0; }
-
-		//"topology"
+		
+		//'topology'
 		public Keyword getTopologyKeyword_1() { return cTopologyKeyword_1; }
-
+		
 		//ref=[topology::Topology]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
-
+		
 		//[topology::Topology]
 		public CrossReference getRefTopologyCrossReference_2_0() { return cRefTopologyCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getRefTopologyIDTerminalRuleCall_2_0_1() { return cRefTopologyIDTerminalRuleCall_2_0_1; }
 	}
-
 	public class PerspectiveDialogElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveDialog");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveDialog");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveDialogAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cDialogKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -952,143 +965,260 @@
 		private final RuleCall cRefDialogIDTerminalRuleCall_2_0_1 = (RuleCall)cRefDialogCrossReference_2_0.eContents().get(1);
 		
 		//PerspectiveDialog:
-		//	{PerspectiveDialog} "dialog" ref=[dialog::Dialog];
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveDialog} "dialog" ref=[dialog::Dialog]
+		//	{PerspectiveDialog} 'dialog' ref=[dialog::Dialog];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveDialog} 'dialog' ref=[dialog::Dialog]
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveDialog}
 		public Action getPerspectiveDialogAction_0() { return cPerspectiveDialogAction_0; }
-
-		//"dialog"
+		
+		//'dialog'
 		public Keyword getDialogKeyword_1() { return cDialogKeyword_1; }
-
+		
 		//ref=[dialog::Dialog]
 		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
-
+		
 		//[dialog::Dialog]
 		public CrossReference getRefDialogCrossReference_2_0() { return cRefDialogCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getRefDialogIDTerminalRuleCall_2_0_1() { return cRefDialogIDTerminalRuleCall_2_0_1; }
 	}
-
 	public class PerspectiveBPMNElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveBPMN");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveBPMN");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cPerspectiveBPMNAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cBpmnKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
 		//PerspectiveBPMN:
-		//	{PerspectiveBPMN} "bpmn";
-		public ParserRule getRule() { return rule; }
-
-		//{PerspectiveBPMN} "bpmn"
+		//	{PerspectiveBPMN} 'bpmn';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveBPMN} 'bpmn'
 		public Group getGroup() { return cGroup; }
-
+		
 		//{PerspectiveBPMN}
 		public Action getPerspectiveBPMNAction_0() { return cPerspectiveBPMNAction_0; }
-
-		//"bpmn"
+		
+		//'bpmn'
 		public Keyword getBpmnKeyword_1() { return cBpmnKeyword_1; }
 	}
-
-	public class PerspectiveQualifiedNameWithWildCardElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PerspectiveQualifiedNameWithWildCard");
+	public class PerspectiveKanbanElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveKanban");
 		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);
+		private final Action cPerspectiveKanbanAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cKanbanKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cOfKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDtoRefAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDtoRefLDtoCrossReference_3_0 = (CrossReference)cDtoRefAssignment_3.eContents().get(0);
+		private final RuleCall cDtoRefLDtoIDTerminalRuleCall_3_0_1 = (RuleCall)cDtoRefLDtoCrossReference_3_0.eContents().get(1);
+		private final Keyword cCardKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cCardRefAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cCardRefDialogCrossReference_5_0 = (CrossReference)cCardRefAssignment_5.eContents().get(0);
+		private final RuleCall cCardRefDialogIDTerminalRuleCall_5_0_1 = (RuleCall)cCardRefDialogCrossReference_5_0.eContents().get(1);
+		private final Keyword cDialogKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cDialogRefAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final CrossReference cDialogRefDialogCrossReference_7_0 = (CrossReference)cDialogRefAssignment_7.eContents().get(0);
+		private final RuleCall cDialogRefDialogIDTerminalRuleCall_7_0_1 = (RuleCall)cDialogRefDialogCrossReference_7_0.eContents().get(1);
 		
-		//PerspectiveQualifiedNameWithWildCard:
-		//	QualifiedName ("." "*")?;
-		public ParserRule getRule() { return rule; }
-
-		//QualifiedName ("." "*")?
+		//PerspectiveKanban:
+		//	{PerspectiveKanban} 'kanban' 'of' dtoRef=[dto::LDto] 'card' cardRef=[dialog::Dialog] 'dialog'
+		//	dialogRef=[dialog::Dialog];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveKanban} 'kanban' 'of' dtoRef=[dto::LDto] 'card' cardRef=[dialog::Dialog] 'dialog' dialogRef=[dialog::Dialog]
 		public Group getGroup() { return cGroup; }
-
-		//QualifiedName
-		public RuleCall getQualifiedNameParserRuleCall_0() { return cQualifiedNameParserRuleCall_0; }
-
-		//("." "*")?
-		public Group getGroup_1() { return cGroup_1; }
-
-		//"."
-		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
-
-		//"*"
-		public Keyword getAsteriskKeyword_1_1() { return cAsteriskKeyword_1_1; }
-	}
-
-	public class QualifiedNameElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QualifiedName");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final RuleCall cValidIDParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
-		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
-		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
-		private final RuleCall cValidIDParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
 		
-		//QualifiedName:
-		//	ValidID ("." ValidID)*;
-		public ParserRule getRule() { return rule; }
-
-		//ValidID ("." ValidID)*
-		public Group getGroup() { return cGroup; }
-
-		//ValidID
-		public RuleCall getValidIDParserRuleCall_0() { return cValidIDParserRuleCall_0; }
-
-		//(=> "." ValidID)*
-		public Group getGroup_1() { return cGroup_1; }
-
-		//=> "."
-		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
-
-		//ValidID
-		public RuleCall getValidIDParserRuleCall_1_1() { return cValidIDParserRuleCall_1_1; }
-	}
-
-	public class ValidIDElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidID");
-		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
+		//{PerspectiveKanban}
+		public Action getPerspectiveKanbanAction_0() { return cPerspectiveKanbanAction_0; }
 		
-		//ValidID:
-		//	ID;
-		public ParserRule getRule() { return rule; }
-
+		//'kanban'
+		public Keyword getKanbanKeyword_1() { return cKanbanKeyword_1; }
+		
+		//'of'
+		public Keyword getOfKeyword_2() { return cOfKeyword_2; }
+		
+		//dtoRef=[dto::LDto]
+		public Assignment getDtoRefAssignment_3() { return cDtoRefAssignment_3; }
+		
+		//[dto::LDto]
+		public CrossReference getDtoRefLDtoCrossReference_3_0() { return cDtoRefLDtoCrossReference_3_0; }
+		
 		//ID
-		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
+		public RuleCall getDtoRefLDtoIDTerminalRuleCall_3_0_1() { return cDtoRefLDtoIDTerminalRuleCall_3_0_1; }
+		
+		//'card'
+		public Keyword getCardKeyword_4() { return cCardKeyword_4; }
+		
+		//cardRef=[dialog::Dialog]
+		public Assignment getCardRefAssignment_5() { return cCardRefAssignment_5; }
+		
+		//[dialog::Dialog]
+		public CrossReference getCardRefDialogCrossReference_5_0() { return cCardRefDialogCrossReference_5_0; }
+		
+		//ID
+		public RuleCall getCardRefDialogIDTerminalRuleCall_5_0_1() { return cCardRefDialogIDTerminalRuleCall_5_0_1; }
+		
+		//'dialog'
+		public Keyword getDialogKeyword_6() { return cDialogKeyword_6; }
+		
+		//dialogRef=[dialog::Dialog]
+		public Assignment getDialogRefAssignment_7() { return cDialogRefAssignment_7; }
+		
+		//[dialog::Dialog]
+		public CrossReference getDialogRefDialogCrossReference_7_0() { return cDialogRefDialogCrossReference_7_0; }
+		
+		//ID
+		public RuleCall getDialogRefDialogIDTerminalRuleCall_7_0_1() { return cDialogRefDialogIDTerminalRuleCall_7_0_1; }
 	}
-
+	public class PerspectiveWelcomeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveWelcome");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPerspectiveWelcomeAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cWelcomeKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//PerspectiveWelcome:
+		//	{PerspectiveWelcome} 'welcome';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveWelcome} 'welcome'
+		public Group getGroup() { return cGroup; }
+		
+		//{PerspectiveWelcome}
+		public Action getPerspectiveWelcomeAction_0() { return cPerspectiveWelcomeAction_0; }
+		
+		//'welcome'
+		public Keyword getWelcomeKeyword_1() { return cWelcomeKeyword_1; }
+	}
+	public class PerspectiveSearchElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveSearch");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPerspectiveSearchAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cSearchKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cInKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDtoRefAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cDtoRefLDtoCrossReference_3_0 = (CrossReference)cDtoRefAssignment_3.eContents().get(0);
+		private final RuleCall cDtoRefLDtoIDTerminalRuleCall_3_0_1 = (RuleCall)cDtoRefLDtoCrossReference_3_0.eContents().get(1);
+		private final UnorderedGroup cUnorderedGroup_4 = (UnorderedGroup)cGroup.eContents().get(4);
+		private final Group cGroup_4_0 = (Group)cUnorderedGroup_4.eContents().get(0);
+		private final Keyword cDepthKeyword_4_0_0 = (Keyword)cGroup_4_0.eContents().get(0);
+		private final Assignment cDepthAssignment_4_0_1 = (Assignment)cGroup_4_0.eContents().get(1);
+		private final RuleCall cDepthINTTerminalRuleCall_4_0_1_0 = (RuleCall)cDepthAssignment_4_0_1.eContents().get(0);
+		private final Group cGroup_4_1 = (Group)cUnorderedGroup_4.eContents().get(1);
+		private final Keyword cFilterColumnsKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
+		private final Assignment cFilterColsAssignment_4_1_1 = (Assignment)cGroup_4_1.eContents().get(1);
+		private final RuleCall cFilterColsINTTerminalRuleCall_4_1_1_0 = (RuleCall)cFilterColsAssignment_4_1_1.eContents().get(0);
+		
+		//PerspectiveSearch:
+		//	{PerspectiveSearch} 'search' 'in' dtoRef=[dto::LDto] (('depth' depth=INT)? & ('filterColumns' filterCols=INT)?);
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveSearch} 'search' 'in' dtoRef=[dto::LDto] (('depth' depth=INT)? & ('filterColumns' filterCols=INT)?)
+		public Group getGroup() { return cGroup; }
+		
+		//{PerspectiveSearch}
+		public Action getPerspectiveSearchAction_0() { return cPerspectiveSearchAction_0; }
+		
+		//'search'
+		public Keyword getSearchKeyword_1() { return cSearchKeyword_1; }
+		
+		//'in'
+		public Keyword getInKeyword_2() { return cInKeyword_2; }
+		
+		//dtoRef=[dto::LDto]
+		public Assignment getDtoRefAssignment_3() { return cDtoRefAssignment_3; }
+		
+		//[dto::LDto]
+		public CrossReference getDtoRefLDtoCrossReference_3_0() { return cDtoRefLDtoCrossReference_3_0; }
+		
+		//ID
+		public RuleCall getDtoRefLDtoIDTerminalRuleCall_3_0_1() { return cDtoRefLDtoIDTerminalRuleCall_3_0_1; }
+		
+		//('depth' depth=INT)? & ('filterColumns' filterCols=INT)?
+		public UnorderedGroup getUnorderedGroup_4() { return cUnorderedGroup_4; }
+		
+		//('depth' depth=INT)?
+		public Group getGroup_4_0() { return cGroup_4_0; }
+		
+		//'depth'
+		public Keyword getDepthKeyword_4_0_0() { return cDepthKeyword_4_0_0; }
+		
+		//depth=INT
+		public Assignment getDepthAssignment_4_0_1() { return cDepthAssignment_4_0_1; }
+		
+		//INT
+		public RuleCall getDepthINTTerminalRuleCall_4_0_1_0() { return cDepthINTTerminalRuleCall_4_0_1_0; }
+		
+		//('filterColumns' filterCols=INT)?
+		public Group getGroup_4_1() { return cGroup_4_1; }
+		
+		//'filterColumns'
+		public Keyword getFilterColumnsKeyword_4_1_0() { return cFilterColumnsKeyword_4_1_0; }
+		
+		//filterCols=INT
+		public Assignment getFilterColsAssignment_4_1_1() { return cFilterColsAssignment_4_1_1; }
+		
+		//INT
+		public RuleCall getFilterColsINTTerminalRuleCall_4_1_1_0() { return cFilterColsINTTerminalRuleCall_4_1_1_0; }
+	}
+	public class PerspectiveDataInterchangeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveDataInterchange");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPerspectiveDataInterchangeAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cDataInterchangeKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cRefAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cRefDataInterchangePackageCrossReference_2_0 = (CrossReference)cRefAssignment_2.eContents().get(0);
+		private final RuleCall cRefDataInterchangePackageIDTerminalRuleCall_2_0_1 = (RuleCall)cRefDataInterchangePackageCrossReference_2_0.eContents().get(1);
+		
+		//PerspectiveDataInterchange:
+		//	{PerspectiveDataInterchange} 'dataInterchange' ref=[data::DataInterchangePackage];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{PerspectiveDataInterchange} 'dataInterchange' ref=[data::DataInterchangePackage]
+		public Group getGroup() { return cGroup; }
+		
+		//{PerspectiveDataInterchange}
+		public Action getPerspectiveDataInterchangeAction_0() { return cPerspectiveDataInterchangeAction_0; }
+		
+		//'dataInterchange'
+		public Keyword getDataInterchangeKeyword_1() { return cDataInterchangeKeyword_1; }
+		
+		//ref=[data::DataInterchangePackage]
+		public Assignment getRefAssignment_2() { return cRefAssignment_2; }
+		
+		//[data::DataInterchangePackage]
+		public CrossReference getRefDataInterchangePackageCrossReference_2_0() { return cRefDataInterchangePackageCrossReference_2_0; }
+		
+		//ID
+		public RuleCall getRefDataInterchangePackageIDTerminalRuleCall_2_0_1() { return cRefDataInterchangePackageIDTerminalRuleCall_2_0_1; }
+	}
 	public class TRANSLATABLEIDElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLEID");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.TRANSLATABLEID");
 		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
 		//TRANSLATABLEID:
 		//	ID;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
 		//ID
 		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
 	}
-
 	public class TRANSLATABLESTRINGElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLESTRING");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.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 SashOrientationElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "SashOrientation");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.perspective.PerspectiveDsl.SashOrientation");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cHORIZONTALEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cHORIZONTALHorizontalKeyword_0_0 = (Keyword)cHORIZONTALEnumLiteralDeclaration_0.eContents().get(0);
@@ -1096,28 +1226,27 @@
 		private final Keyword cVERTICALVerticalKeyword_1_0 = (Keyword)cVERTICALEnumLiteralDeclaration_1.eContents().get(0);
 		
 		//enum SashOrientation:
-		//	HORIZONTAL="horizontal" | VERTICAL="vertical";
+		//	HORIZONTAL='horizontal' | VERTICAL='vertical';
 		public EnumRule getRule() { return rule; }
-
-		//HORIZONTAL="horizontal" | VERTICAL="vertical"
+		
+		//HORIZONTAL='horizontal' | VERTICAL='vertical'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//HORIZONTAL="horizontal"
+		
+		//HORIZONTAL='horizontal'
 		public EnumLiteralDeclaration getHORIZONTALEnumLiteralDeclaration_0() { return cHORIZONTALEnumLiteralDeclaration_0; }
-
-		//"horizontal"
+		
+		//'horizontal'
 		public Keyword getHORIZONTALHorizontalKeyword_0_0() { return cHORIZONTALHorizontalKeyword_0_0; }
-
-		//VERTICAL="vertical"
+		
+		//VERTICAL='vertical'
 		public EnumLiteralDeclaration getVERTICALEnumLiteralDeclaration_1() { return cVERTICALEnumLiteralDeclaration_1; }
-
-		//"vertical"
+		
+		//'vertical'
 		public Keyword getVERTICALVerticalKeyword_1_0() { return cVERTICALVerticalKeyword_1_0; }
 	}
 	
 	private final PerspectiveModelElements pPerspectiveModel;
 	private final PerspectivePackageElements pPerspectivePackage;
-	private final PerspectiveImportElements pPerspectiveImport;
 	private final PerspectiveElements pPerspective;
 	private final PerspectiveElementElements pPerspectiveElement;
 	private final PerspectiveSashContainerElements pPerspectiveSashContainer;
@@ -1127,31 +1256,44 @@
 	private final PerspectiveSelectionElements pPerspectiveSelection;
 	private final PerspectiveTableElements pPerspectiveTable;
 	private final PerspectiveGridElements pPerspectiveGrid;
+	private final PerspectiveBeanElements pPerspectiveBean;
 	private final PerspectiveChartElements pPerspectiveChart;
 	private final PerspectiveReportElements pPerspectiveReport;
 	private final PerspectiveOrganizationElements pPerspectiveOrganization;
 	private final PerspectiveTopologyElements pPerspectiveTopology;
 	private final PerspectiveDialogElements pPerspectiveDialog;
 	private final PerspectiveBPMNElements pPerspectiveBPMN;
-	private final PerspectiveQualifiedNameWithWildCardElements pPerspectiveQualifiedNameWithWildCard;
-	private final QualifiedNameElements pQualifiedName;
-	private final ValidIDElements pValidID;
+	private final PerspectiveKanbanElements pPerspectiveKanban;
+	private final PerspectiveWelcomeElements pPerspectiveWelcome;
+	private final PerspectiveSearchElements pPerspectiveSearch;
+	private final PerspectiveDataInterchangeElements pPerspectiveDataInterchange;
 	private final TRANSLATABLEIDElements pTRANSLATABLEID;
 	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
-	private final SashOrientationElements unknownRuleSashOrientation;
+	private final SashOrientationElements eSashOrientation;
 	
 	private final Grammar grammar;
-
+	
+	private final OXtypeGrammarAccess gaOXtype;
+	
 	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+	
+	private final XbaseGrammarAccess gaXbase;
+	
+	private final XtypeGrammarAccess gaXtype;
 
 	@Inject
 	public PerspectiveDslGrammarAccess(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.pPerspectiveModel = new PerspectiveModelElements();
 		this.pPerspectivePackage = new PerspectivePackageElements();
-		this.pPerspectiveImport = new PerspectiveImportElements();
 		this.pPerspective = new PerspectiveElements();
 		this.pPerspectiveElement = new PerspectiveElementElements();
 		this.pPerspectiveSashContainer = new PerspectiveSashContainerElements();
@@ -1161,18 +1303,20 @@
 		this.pPerspectiveSelection = new PerspectiveSelectionElements();
 		this.pPerspectiveTable = new PerspectiveTableElements();
 		this.pPerspectiveGrid = new PerspectiveGridElements();
+		this.pPerspectiveBean = new PerspectiveBeanElements();
 		this.pPerspectiveChart = new PerspectiveChartElements();
 		this.pPerspectiveReport = new PerspectiveReportElements();
 		this.pPerspectiveOrganization = new PerspectiveOrganizationElements();
 		this.pPerspectiveTopology = new PerspectiveTopologyElements();
 		this.pPerspectiveDialog = new PerspectiveDialogElements();
 		this.pPerspectiveBPMN = new PerspectiveBPMNElements();
-		this.pPerspectiveQualifiedNameWithWildCard = new PerspectiveQualifiedNameWithWildCardElements();
-		this.pQualifiedName = new QualifiedNameElements();
-		this.pValidID = new ValidIDElements();
+		this.pPerspectiveKanban = new PerspectiveKanbanElements();
+		this.pPerspectiveWelcome = new PerspectiveWelcomeElements();
+		this.pPerspectiveSearch = new PerspectiveSearchElements();
+		this.pPerspectiveDataInterchange = new PerspectiveDataInterchangeElements();
 		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
 		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
-		this.unknownRuleSashOrientation = new SashOrientationElements();
+		this.eSashOrientation = new SashOrientationElements();
 	}
 	
 	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
@@ -1191,18 +1335,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;
+	}
 
 	
 	//PerspectiveModel:
+	//	importSection=XImportSection?
 	//	packages+=PerspectivePackage*;
 	public PerspectiveModelElements getPerspectiveModelAccess() {
 		return pPerspectiveModel;
@@ -1211,9 +1368,9 @@
 	public ParserRule getPerspectiveModelRule() {
 		return getPerspectiveModelAccess().getRule();
 	}
-
+	
 	//PerspectivePackage:
-	//	{PerspectivePackage} "package" name=QualifiedName ("{" imports+=PerspectiveImport* perspectives+=Perspective* "}")?;
+	//	{PerspectivePackage} 'package' name=QualifiedName ('{' perspectives+=Perspective* '}')?;
 	public PerspectivePackageElements getPerspectivePackageAccess() {
 		return pPerspectivePackage;
 	}
@@ -1221,22 +1378,12 @@
 	public ParserRule getPerspectivePackageRule() {
 		return getPerspectivePackageAccess().getRule();
 	}
-
-	//PerspectiveImport returns types::LImport:
-	//	"import" importedNamespace=PerspectiveQualifiedNameWithWildCard;
-	public PerspectiveImportElements getPerspectiveImportAccess() {
-		return pPerspectiveImport;
-	}
 	
-	public ParserRule getPerspectiveImportRule() {
-		return getPerspectiveImportAccess().getRule();
-	}
-
 	//Perspective:
-	//	{Perspective} "perspective" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)?
-	//	("process" process=[blip::Blip] "usertask" userTask=[blip::BlipUserTask])? (("iconURI" iconURI=STRING)? &
-	//	("accessibility" accessibilityPhrase=STRING)? & ("toolbar" toolbar=[action::ActionToolbar])?) "{"
-	//	elements+=PerspectiveElement* "}";
+	//	{Perspective} 'perspective' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
+	//	('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])? (('iconURI' iconURI=STRING)? &
+	//	('accessibility' accessibilityPhrase=STRING)? & ('toolbar' toolbar=[action::ActionToolbar])?)
+	//	'{' elements+=PerspectiveElement* '}';
 	public PerspectiveElements getPerspectiveAccess() {
 		return pPerspective;
 	}
@@ -1244,7 +1391,7 @@
 	public ParserRule getPerspectiveRule() {
 		return getPerspectiveAccess().getRule();
 	}
-
+	
 	//PerspectiveElement:
 	//	PerspectiveSashContainer | PerspectivePartStack | PerspectivePart;
 	public PerspectiveElementElements getPerspectiveElementAccess() {
@@ -1254,11 +1401,12 @@
 	public ParserRule getPerspectiveElementRule() {
 		return getPerspectiveElementAccess().getRule();
 	}
-
+	
 	//PerspectiveSashContainer:
-	//	{PerspectiveSashContainer} "sashContainer" elementId=ID (("orientation" orientation=SashOrientation)? &
-	//	("selectedElement" selectedElement=[PerspectiveElement])? & ("spaceVolume" containerData=STRING)? & ("accessibility"
-	//	accessibilityPhrase=STRING)?) "{" elements+=PerspectiveElement* "}";
+	//	{PerspectiveSashContainer} 'sashContainer' elementId=ID (('orientation' orientation=SashOrientation)? &
+	//	('selectedElement' selectedElement=[PerspectiveElement])? & ('spaceVolume' containerData=STRING)? & ('accessibility'
+	//	accessibilityPhrase=STRING)?)
+	//	'{' elements+=PerspectiveElement* '}';
 	public PerspectiveSashContainerElements getPerspectiveSashContainerAccess() {
 		return pPerspectiveSashContainer;
 	}
@@ -1266,11 +1414,11 @@
 	public ParserRule getPerspectiveSashContainerRule() {
 		return getPerspectiveSashContainerAccess().getRule();
 	}
-
+	
 	//PerspectivePartStack:
-	//	{PerspectivePartStack} "partStack" elementId=ID (("selectedElement" selectedElement=[PerspectivePart])? &
-	//	("spaceVolume" containerData=STRING)? & ("accessibility" accessibilityPhrase=STRING)?) "{"
-	//	elements+=PerspectiveElement* "}";
+	//	{PerspectivePartStack} 'partStack' elementId=ID (('selectedElement' selectedElement=[PerspectivePart])? &
+	//	('spaceVolume' containerData=STRING)? & ('accessibility' accessibilityPhrase=STRING)?)
+	//	'{' elements+=PerspectiveElement* '}';
 	public PerspectivePartStackElements getPerspectivePartStackAccess() {
 		return pPerspectivePartStack;
 	}
@@ -1278,11 +1426,11 @@
 	public ParserRule getPerspectivePartStackRule() {
 		return getPerspectivePartStackAccess().getRule();
 	}
-
+	
 	//PerspectivePart:
-	//	{PerspectivePart} "part" elementId=TRANSLATABLEID ((description?="described by" descriptionValue=TRANSLATABLESTRING)?
-	//	& ("spaceVolume" containerData=STRING)? & ("accessibility" accessibilityPhrase=STRING)? & ("iconURI" iconURI=STRING)?
-	//	& ("view" view=PerspectiveView)? & isClosable?="isClosable"?);
+	//	{PerspectivePart} 'part' elementId=TRANSLATABLEID (('spaceVolume' containerData=STRING)? & ('accessibility'
+	//	accessibilityPhrase=STRING)? & ('iconURI' iconURI=STRING)? & ('view' view=PerspectiveView)? &
+	//	isClosable?='isClosable'?);
 	public PerspectivePartElements getPerspectivePartAccess() {
 		return pPerspectivePart;
 	}
@@ -1290,10 +1438,11 @@
 	public ParserRule getPerspectivePartRule() {
 		return getPerspectivePartAccess().getRule();
 	}
-
+	
 	//PerspectiveView:
-	//	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveReport | PerspectiveOrganization |
-	//	PerspectiveTopology | PerspectiveDialog | PerspectiveBPMN | PerspectiveGrid;
+	//	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveBean | PerspectiveReport |
+	//	PerspectiveOrganization | PerspectiveTopology | PerspectiveDialog | PerspectiveBPMN | PerspectiveGrid |
+	//	PerspectiveWelcome | PerspectiveSearch | PerspectiveDataInterchange | PerspectiveKanban;
 	public PerspectiveViewElements getPerspectiveViewAccess() {
 		return pPerspectiveView;
 	}
@@ -1301,9 +1450,9 @@
 	public ParserRule getPerspectiveViewRule() {
 		return getPerspectiveViewAccess().getRule();
 	}
-
+	
 	//PerspectiveSelection:
-	//	{PerspectiveSelection} "select" ref=[table::Table];
+	//	{PerspectiveSelection} 'select' ref=[table::Table];
 	public PerspectiveSelectionElements getPerspectiveSelectionAccess() {
 		return pPerspectiveSelection;
 	}
@@ -1311,9 +1460,9 @@
 	public ParserRule getPerspectiveSelectionRule() {
 		return getPerspectiveSelectionAccess().getRule();
 	}
-
+	
 	//PerspectiveTable:
-	//	{PerspectiveTable} "table" ref=[table::Table];
+	//	{PerspectiveTable} 'table' ref=[table::Table];
 	public PerspectiveTableElements getPerspectiveTableAccess() {
 		return pPerspectiveTable;
 	}
@@ -1321,9 +1470,9 @@
 	public ParserRule getPerspectiveTableRule() {
 		return getPerspectiveTableAccess().getRule();
 	}
-
+	
 	//PerspectiveGrid:
-	//	{PerspectiveGrid} "grid" ref=[table::Table];
+	//	{PerspectiveGrid} 'grid' ref=[table::Table];
 	public PerspectiveGridElements getPerspectiveGridAccess() {
 		return pPerspectiveGrid;
 	}
@@ -1331,9 +1480,19 @@
 	public ParserRule getPerspectiveGridRule() {
 		return getPerspectiveGridAccess().getRule();
 	}
-
+	
+	//PerspectiveBean:
+	//	{PerspectiveBean} 'bean' ref=[table::Table];
+	public PerspectiveBeanElements getPerspectiveBeanAccess() {
+		return pPerspectiveBean;
+	}
+	
+	public ParserRule getPerspectiveBeanRule() {
+		return getPerspectiveBeanAccess().getRule();
+	}
+	
 	//PerspectiveChart:
-	//	{PerspectiveChart} "chart" ref=[chart::Chart];
+	//	{PerspectiveChart} 'chart' ref=[chart::Chart];
 	public PerspectiveChartElements getPerspectiveChartAccess() {
 		return pPerspectiveChart;
 	}
@@ -1341,9 +1500,9 @@
 	public ParserRule getPerspectiveChartRule() {
 		return getPerspectiveChartAccess().getRule();
 	}
-
+	
 	//PerspectiveReport:
-	//	{PerspectiveReport} "report" ref=[report::Report];
+	//	{PerspectiveReport} 'report' ref=[report::Report];
 	public PerspectiveReportElements getPerspectiveReportAccess() {
 		return pPerspectiveReport;
 	}
@@ -1351,9 +1510,9 @@
 	public ParserRule getPerspectiveReportRule() {
 		return getPerspectiveReportAccess().getRule();
 	}
-
+	
 	//PerspectiveOrganization:
-	//	{PerspectiveOrganization} "organigram" ref=[organization::Organization];
+	//	{PerspectiveOrganization} 'organigram' ref=[organization::Organization];
 	public PerspectiveOrganizationElements getPerspectiveOrganizationAccess() {
 		return pPerspectiveOrganization;
 	}
@@ -1361,9 +1520,9 @@
 	public ParserRule getPerspectiveOrganizationRule() {
 		return getPerspectiveOrganizationAccess().getRule();
 	}
-
+	
 	//PerspectiveTopology:
-	//	{PerspectiveTopology} "topology" ref=[topology::Topology];
+	//	{PerspectiveTopology} 'topology' ref=[topology::Topology];
 	public PerspectiveTopologyElements getPerspectiveTopologyAccess() {
 		return pPerspectiveTopology;
 	}
@@ -1371,9 +1530,9 @@
 	public ParserRule getPerspectiveTopologyRule() {
 		return getPerspectiveTopologyAccess().getRule();
 	}
-
+	
 	//PerspectiveDialog:
-	//	{PerspectiveDialog} "dialog" ref=[dialog::Dialog];
+	//	{PerspectiveDialog} 'dialog' ref=[dialog::Dialog];
 	public PerspectiveDialogElements getPerspectiveDialogAccess() {
 		return pPerspectiveDialog;
 	}
@@ -1381,9 +1540,9 @@
 	public ParserRule getPerspectiveDialogRule() {
 		return getPerspectiveDialogAccess().getRule();
 	}
-
+	
 	//PerspectiveBPMN:
-	//	{PerspectiveBPMN} "bpmn";
+	//	{PerspectiveBPMN} 'bpmn';
 	public PerspectiveBPMNElements getPerspectiveBPMNAccess() {
 		return pPerspectiveBPMN;
 	}
@@ -1391,37 +1550,48 @@
 	public ParserRule getPerspectiveBPMNRule() {
 		return getPerspectiveBPMNAccess().getRule();
 	}
-
-	//PerspectiveQualifiedNameWithWildCard:
-	//	QualifiedName ("." "*")?;
-	public PerspectiveQualifiedNameWithWildCardElements getPerspectiveQualifiedNameWithWildCardAccess() {
-		return pPerspectiveQualifiedNameWithWildCard;
+	
+	//PerspectiveKanban:
+	//	{PerspectiveKanban} 'kanban' 'of' dtoRef=[dto::LDto] 'card' cardRef=[dialog::Dialog] 'dialog'
+	//	dialogRef=[dialog::Dialog];
+	public PerspectiveKanbanElements getPerspectiveKanbanAccess() {
+		return pPerspectiveKanban;
 	}
 	
-	public ParserRule getPerspectiveQualifiedNameWithWildCardRule() {
-		return getPerspectiveQualifiedNameWithWildCardAccess().getRule();
-	}
-
-	//QualifiedName:
-	//	ValidID ("." ValidID)*;
-	public QualifiedNameElements getQualifiedNameAccess() {
-		return pQualifiedName;
+	public ParserRule getPerspectiveKanbanRule() {
+		return getPerspectiveKanbanAccess().getRule();
 	}
 	
-	public ParserRule getQualifiedNameRule() {
-		return getQualifiedNameAccess().getRule();
-	}
-
-	//ValidID:
-	//	ID;
-	public ValidIDElements getValidIDAccess() {
-		return pValidID;
+	//PerspectiveWelcome:
+	//	{PerspectiveWelcome} 'welcome';
+	public PerspectiveWelcomeElements getPerspectiveWelcomeAccess() {
+		return pPerspectiveWelcome;
 	}
 	
-	public ParserRule getValidIDRule() {
-		return getValidIDAccess().getRule();
+	public ParserRule getPerspectiveWelcomeRule() {
+		return getPerspectiveWelcomeAccess().getRule();
 	}
-
+	
+	//PerspectiveSearch:
+	//	{PerspectiveSearch} 'search' 'in' dtoRef=[dto::LDto] (('depth' depth=INT)? & ('filterColumns' filterCols=INT)?);
+	public PerspectiveSearchElements getPerspectiveSearchAccess() {
+		return pPerspectiveSearch;
+	}
+	
+	public ParserRule getPerspectiveSearchRule() {
+		return getPerspectiveSearchAccess().getRule();
+	}
+	
+	//PerspectiveDataInterchange:
+	//	{PerspectiveDataInterchange} 'dataInterchange' ref=[data::DataInterchangePackage];
+	public PerspectiveDataInterchangeElements getPerspectiveDataInterchangeAccess() {
+		return pPerspectiveDataInterchange;
+	}
+	
+	public ParserRule getPerspectiveDataInterchangeRule() {
+		return getPerspectiveDataInterchangeAccess().getRule();
+	}
+	
 	//TRANSLATABLEID:
 	//	ID;
 	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
@@ -1431,7 +1601,7 @@
 	public ParserRule getTRANSLATABLEIDRule() {
 		return getTRANSLATABLEIDAccess().getRule();
 	}
-
+	
 	//TRANSLATABLESTRING:
 	//	STRING;
 	public TRANSLATABLESTRINGElements getTRANSLATABLESTRINGAccess() {
@@ -1441,21 +1611,37 @@
 	public ParserRule getTRANSLATABLESTRINGRule() {
 		return getTRANSLATABLESTRINGAccess().getRule();
 	}
-
+	
 	//enum SashOrientation:
-	//	HORIZONTAL="horizontal" | VERTICAL="vertical";
+	//	HORIZONTAL='horizontal' | VERTICAL='vertical';
 	public SashOrientationElements getSashOrientationAccess() {
-		return unknownRuleSashOrientation;
+		return eSashOrientation;
 	}
 	
 	public EnumRule getSashOrientationRule() {
 		return getSashOrientationAccess().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();
 	}
@@ -1463,9 +1649,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();
 	}
@@ -1473,10 +1659,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();
 	}
@@ -1484,9 +1670,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();
@@ -1495,8 +1681,8 @@
 	public ParserRule getXAnnotationElementValueRule() {
 		return getXAnnotationElementValueAccess().getRule();
 	}
-
-	//XAnnotationOrExpression returns xbase::XExpression:
+	
+	//XAnnotationOrExpression xbase::XExpression:
 	//	XAnnotation | XExpression;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationOrExpressionAccess();
@@ -1505,860 +1691,902 @@
 	public ParserRule getXAnnotationOrExpressionRule() {
 		return getXAnnotationOrExpressionAccess().getRule();
 	}
-
+	
 	//XExpression:
 	//	XAssignment;
 	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
-		return gaXbaseWithAnnotations.getXExpressionAccess();
+		return gaXbase.getXExpressionAccess();
 	}
 	
 	public ParserRule getXExpressionRule() {
 		return getXExpressionAccess().getRule();
 	}
-
-	//XAssignment returns XExpression:
+	
+	//XAssignment XExpression:
 	//	{XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign value=XAssignment | XOrExpression
 	//	(=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
 	//	rightOperand=XAssignment)?;
 	public XbaseGrammarAccess.XAssignmentElements getXAssignmentAccess() {
-		return gaXbaseWithAnnotations.getXAssignmentAccess();
+		return gaXbase.getXAssignmentAccess();
 	}
 	
 	public ParserRule getXAssignmentRule() {
 		return getXAssignmentAccess().getRule();
 	}
-
+	
 	//OpSingleAssign:
-	//	"=";
+	//	'=';
 	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
-		return gaXbaseWithAnnotations.getOpSingleAssignAccess();
+		return gaXbase.getOpSingleAssignAccess();
 	}
 	
 	public ParserRule getOpSingleAssignRule() {
 		return getOpSingleAssignAccess().getRule();
 	}
-
+	
 	//OpMultiAssign:
-	//	"+=" | "-=" | "*=" | "/=" | "%=" | "<" "<" "=" | ">" ">"? ">=";
+	//	'+=' | '-=' | '*=' | '/=' | '%=' |
+	//	'<' '<' '=' |
+	//	'>' '>'? '>=';
 	public XbaseGrammarAccess.OpMultiAssignElements getOpMultiAssignAccess() {
-		return gaXbaseWithAnnotations.getOpMultiAssignAccess();
+		return gaXbase.getOpMultiAssignAccess();
 	}
 	
 	public ParserRule getOpMultiAssignRule() {
 		return getOpMultiAssignAccess().getRule();
 	}
-
-	//XOrExpression returns XExpression:
+	
+	//XOrExpression XExpression:
 	//	XAndExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOr])
 	//	rightOperand=XAndExpression)*;
 	public XbaseGrammarAccess.XOrExpressionElements getXOrExpressionAccess() {
-		return gaXbaseWithAnnotations.getXOrExpressionAccess();
+		return gaXbase.getXOrExpressionAccess();
 	}
 	
 	public ParserRule getXOrExpressionRule() {
 		return getXOrExpressionAccess().getRule();
 	}
-
+	
 	//OpOr:
-	//	"||";
+	//	'||';
 	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
-		return gaXbaseWithAnnotations.getOpOrAccess();
+		return gaXbase.getOpOrAccess();
 	}
 	
 	public ParserRule getOpOrRule() {
 		return getOpOrAccess().getRule();
 	}
-
-	//XAndExpression returns XExpression:
+	
+	//XAndExpression XExpression:
 	//	XEqualityExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAnd])
 	//	rightOperand=XEqualityExpression)*;
 	public XbaseGrammarAccess.XAndExpressionElements getXAndExpressionAccess() {
-		return gaXbaseWithAnnotations.getXAndExpressionAccess();
+		return gaXbase.getXAndExpressionAccess();
 	}
 	
 	public ParserRule getXAndExpressionRule() {
 		return getXAndExpressionAccess().getRule();
 	}
-
+	
 	//OpAnd:
-	//	"&&";
+	//	'&&';
 	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
-		return gaXbaseWithAnnotations.getOpAndAccess();
+		return gaXbase.getOpAndAccess();
 	}
 	
 	public ParserRule getOpAndRule() {
 		return getOpAndAccess().getRule();
 	}
-
-	//XEqualityExpression returns XExpression:
+	
+	//XEqualityExpression XExpression:
 	//	XRelationalExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpEquality])
 	//	rightOperand=XRelationalExpression)*;
 	public XbaseGrammarAccess.XEqualityExpressionElements getXEqualityExpressionAccess() {
-		return gaXbaseWithAnnotations.getXEqualityExpressionAccess();
+		return gaXbase.getXEqualityExpressionAccess();
 	}
 	
 	public ParserRule getXEqualityExpressionRule() {
 		return getXEqualityExpressionAccess().getRule();
 	}
-
+	
 	//OpEquality:
-	//	"==" | "!=" | "===" | "!==";
+	//	'==' | '!=' | '===' | '!==';
 	public XbaseGrammarAccess.OpEqualityElements getOpEqualityAccess() {
-		return gaXbaseWithAnnotations.getOpEqualityAccess();
+		return gaXbase.getOpEqualityAccess();
 	}
 	
 	public ParserRule getOpEqualityRule() {
 		return getOpEqualityAccess().getRule();
 	}
-
-	//XRelationalExpression returns XExpression:
-	//	XOtherOperatorExpression (=> ({XInstanceOfExpression.expression=current} "instanceof") type=JvmTypeReference | =>
-	//	({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
+	
+	//XRelationalExpression XExpression:
+	//	XOtherOperatorExpression (=> ({XInstanceOfExpression.expression=current} 'instanceof') type=JvmTypeReference |
+	//	=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
 	//	rightOperand=XOtherOperatorExpression)*;
 	public XbaseGrammarAccess.XRelationalExpressionElements getXRelationalExpressionAccess() {
-		return gaXbaseWithAnnotations.getXRelationalExpressionAccess();
+		return gaXbase.getXRelationalExpressionAccess();
 	}
 	
 	public ParserRule getXRelationalExpressionRule() {
 		return getXRelationalExpressionAccess().getRule();
 	}
-
+	
 	//OpCompare:
-	//	">=" | "<" "=" | ">" | "<";
+	//	'>=' | '<' '=' | '>' | '<';
 	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
-		return gaXbaseWithAnnotations.getOpCompareAccess();
+		return gaXbase.getOpCompareAccess();
 	}
 	
 	public ParserRule getOpCompareRule() {
 		return getOpCompareAccess().getRule();
 	}
-
-	//XOtherOperatorExpression returns XExpression:
+	
+	//XOtherOperatorExpression XExpression:
 	//	XAdditiveExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOther])
 	//	rightOperand=XAdditiveExpression)*;
 	public XbaseGrammarAccess.XOtherOperatorExpressionElements getXOtherOperatorExpressionAccess() {
-		return gaXbaseWithAnnotations.getXOtherOperatorExpressionAccess();
+		return gaXbase.getXOtherOperatorExpressionAccess();
 	}
 	
 	public ParserRule getXOtherOperatorExpressionRule() {
 		return getXOtherOperatorExpressionAccess().getRule();
 	}
-
+	
 	//OpOther:
-	//	"->" | "..<" | ">" ".." | ".." | "=>" | ">" (=> (">" ">") | ">") | "<" (=> ("<" "<") | "<" | "=>") | "<>" | "?:";
+	//	'->'
+	//	| '..<'
+	//	| '>' '..'
+	//	| '..'
+	//	| '=>'
+	//	| '>' (=> ('>' '>') | '>') | '<' (=> ('<' '<') | '<' | '=>') | '<>'
+	//	| '?:';
 	public XbaseGrammarAccess.OpOtherElements getOpOtherAccess() {
-		return gaXbaseWithAnnotations.getOpOtherAccess();
+		return gaXbase.getOpOtherAccess();
 	}
 	
 	public ParserRule getOpOtherRule() {
 		return getOpOtherAccess().getRule();
 	}
-
-	//XAdditiveExpression returns XExpression:
+	
+	//XAdditiveExpression XExpression:
 	//	XMultiplicativeExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAdd])
 	//	rightOperand=XMultiplicativeExpression)*;
 	public XbaseGrammarAccess.XAdditiveExpressionElements getXAdditiveExpressionAccess() {
-		return gaXbaseWithAnnotations.getXAdditiveExpressionAccess();
+		return gaXbase.getXAdditiveExpressionAccess();
 	}
 	
 	public ParserRule getXAdditiveExpressionRule() {
 		return getXAdditiveExpressionAccess().getRule();
 	}
-
+	
 	//OpAdd:
-	//	"+" | "-";
+	//	'+' | '-';
 	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
-		return gaXbaseWithAnnotations.getOpAddAccess();
+		return gaXbase.getOpAddAccess();
 	}
 	
 	public ParserRule getOpAddRule() {
 		return getOpAddAccess().getRule();
 	}
-
-	//XMultiplicativeExpression returns XExpression:
+	
+	//XMultiplicativeExpression XExpression:
 	//	XUnaryOperation (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMulti])
 	//	rightOperand=XUnaryOperation)*;
 	public XbaseGrammarAccess.XMultiplicativeExpressionElements getXMultiplicativeExpressionAccess() {
-		return gaXbaseWithAnnotations.getXMultiplicativeExpressionAccess();
+		return gaXbase.getXMultiplicativeExpressionAccess();
 	}
 	
 	public ParserRule getXMultiplicativeExpressionRule() {
 		return getXMultiplicativeExpressionAccess().getRule();
 	}
-
+	
 	//OpMulti:
-	//	"*" | "**" | "/" | "%";
+	//	'*' | '**' | '/' | '%';
 	public XbaseGrammarAccess.OpMultiElements getOpMultiAccess() {
-		return gaXbaseWithAnnotations.getOpMultiAccess();
+		return gaXbase.getOpMultiAccess();
 	}
 	
 	public ParserRule getOpMultiRule() {
 		return getOpMultiAccess().getRule();
 	}
-
-	//XUnaryOperation returns XExpression:
-	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation | XCastedExpression;
+	
+	//XUnaryOperation XExpression:
+	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation
+	//	| XCastedExpression;
 	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
-		return gaXbaseWithAnnotations.getXUnaryOperationAccess();
+		return gaXbase.getXUnaryOperationAccess();
 	}
 	
 	public ParserRule getXUnaryOperationRule() {
 		return getXUnaryOperationAccess().getRule();
 	}
-
+	
 	//OpUnary:
 	//	"!" | "-" | "+";
 	public XbaseGrammarAccess.OpUnaryElements getOpUnaryAccess() {
-		return gaXbaseWithAnnotations.getOpUnaryAccess();
+		return gaXbase.getOpUnaryAccess();
 	}
 	
 	public ParserRule getOpUnaryRule() {
 		return getOpUnaryAccess().getRule();
 	}
-
-	//XCastedExpression returns XExpression:
-	//	XPostfixOperation (=> ({XCastedExpression.target=current} "as") type=JvmTypeReference)*;
+	
+	//XCastedExpression XExpression:
+	//	XPostfixOperation (=> ({XCastedExpression.target=current} 'as') type=JvmTypeReference)*;
 	public XbaseGrammarAccess.XCastedExpressionElements getXCastedExpressionAccess() {
-		return gaXbaseWithAnnotations.getXCastedExpressionAccess();
+		return gaXbase.getXCastedExpressionAccess();
 	}
 	
 	public ParserRule getXCastedExpressionRule() {
 		return getXCastedExpressionAccess().getRule();
 	}
-
-	//XPostfixOperation returns XExpression:
+	
+	//XPostfixOperation XExpression:
 	//	XMemberFeatureCall => ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])?;
 	public XbaseGrammarAccess.XPostfixOperationElements getXPostfixOperationAccess() {
-		return gaXbaseWithAnnotations.getXPostfixOperationAccess();
+		return gaXbase.getXPostfixOperationAccess();
 	}
 	
 	public ParserRule getXPostfixOperationRule() {
 		return getXPostfixOperationAccess().getRule();
 	}
-
+	
 	//OpPostfix:
 	//	"++" | "--";
 	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
-		return gaXbaseWithAnnotations.getOpPostfixAccess();
+		return gaXbase.getOpPostfixAccess();
 	}
 	
 	public ParserRule getOpPostfixRule() {
 		return getOpPostfixAccess().getRule();
 	}
-
-	//XMemberFeatureCall returns XExpression:
-	//	XPrimaryExpression (=> ({XAssignment.assignable=current} ("." | explicitStatic?="::")
-	//	feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment | =>
-	//	({XMemberFeatureCall.memberCallTarget=current} ("." | nullSafe?="?." | explicitStatic?="::")) ("<"
-	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
-	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (memberCallArguments+=XShortClosure
-	//	| memberCallArguments+=XExpression ("," memberCallArguments+=XExpression)*)? ")")? memberCallArguments+=XClosure?)*;
+	
+	//XMemberFeatureCall XExpression:
+	//	XPrimaryExpression (=> ({XAssignment.assignable=current} ('.' | explicitStatic?="::")
+	//	feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment
+	//	| => ({XMemberFeatureCall.memberCallTarget=current} ("." | nullSafe?="?." | explicitStatic?="::")) ('<'
+	//	typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)* '>')?
+	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?='(' (memberCallArguments+=XShortClosure
+	//	| memberCallArguments+=XExpression (',' memberCallArguments+=XExpression)*)?
+	//	')')?
+	//	memberCallArguments+=XClosure?)*;
 	public XbaseGrammarAccess.XMemberFeatureCallElements getXMemberFeatureCallAccess() {
-		return gaXbaseWithAnnotations.getXMemberFeatureCallAccess();
+		return gaXbase.getXMemberFeatureCallAccess();
 	}
 	
 	public ParserRule getXMemberFeatureCallRule() {
 		return getXMemberFeatureCallAccess().getRule();
 	}
-
-	//XPrimaryExpression returns XExpression:
+	
+	//XPrimaryExpression XExpression:
 	//	XConstructorCall | XBlockExpression | XSwitchExpression | XSynchronizedExpression | XFeatureCall | XLiteral |
 	//	XIfExpression | XForLoopExpression | XBasicForLoopExpression | XWhileExpression | XDoWhileExpression |
 	//	XThrowExpression | XReturnExpression | XTryCatchFinallyExpression | XParenthesizedExpression;
 	public XbaseGrammarAccess.XPrimaryExpressionElements getXPrimaryExpressionAccess() {
-		return gaXbaseWithAnnotations.getXPrimaryExpressionAccess();
+		return gaXbase.getXPrimaryExpressionAccess();
 	}
 	
 	public ParserRule getXPrimaryExpressionRule() {
 		return getXPrimaryExpressionAccess().getRule();
 	}
-
-	//XLiteral returns XExpression:
+	
+	//XLiteral XExpression:
 	//	XCollectionLiteral | XClosure | XBooleanLiteral | XNumberLiteral | XNullLiteral | XStringLiteral | XTypeLiteral;
 	public XbaseGrammarAccess.XLiteralElements getXLiteralAccess() {
-		return gaXbaseWithAnnotations.getXLiteralAccess();
+		return gaXbase.getXLiteralAccess();
 	}
 	
 	public ParserRule getXLiteralRule() {
 		return getXLiteralAccess().getRule();
 	}
-
+	
 	//XCollectionLiteral:
 	//	XSetLiteral | XListLiteral;
 	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
-		return gaXbaseWithAnnotations.getXCollectionLiteralAccess();
+		return gaXbase.getXCollectionLiteralAccess();
 	}
 	
 	public ParserRule getXCollectionLiteralRule() {
 		return getXCollectionLiteralAccess().getRule();
 	}
-
+	
 	//XSetLiteral:
-	//	{XSetLiteral} "#" "{" (elements+=XExpression ("," elements+=XExpression)*)? "}";
+	//	{XSetLiteral} '#' '{' (elements+=XExpression (',' elements+=XExpression)*)? '}';
 	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
-		return gaXbaseWithAnnotations.getXSetLiteralAccess();
+		return gaXbase.getXSetLiteralAccess();
 	}
 	
 	public ParserRule getXSetLiteralRule() {
 		return getXSetLiteralAccess().getRule();
 	}
-
+	
 	//XListLiteral:
-	//	{XListLiteral} "#" "[" (elements+=XExpression ("," elements+=XExpression)*)? "]";
+	//	{XListLiteral} '#' '[' (elements+=XExpression (',' elements+=XExpression)*)? ']';
 	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
-		return gaXbaseWithAnnotations.getXListLiteralAccess();
+		return gaXbase.getXListLiteralAccess();
 	}
 	
 	public ParserRule getXListLiteralRule() {
 		return getXListLiteralAccess().getRule();
 	}
-
-	//XClosure returns XExpression:
-	//	=> ({XClosure} "[") => ((declaredFormalParameters+=JvmFormalParameter (","
-	//	declaredFormalParameters+=JvmFormalParameter)*)? explicitSyntax?="|")? expression=XExpressionInClosure "]";
+	
+	//XClosure XExpression:
+	//	=> ({XClosure}
+	//	'[')
+	//	=> ((declaredFormalParameters+=JvmFormalParameter (',' declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?='|')?
+	//	expression=XExpressionInClosure
+	//	']';
 	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
-		return gaXbaseWithAnnotations.getXClosureAccess();
+		return gaXbase.getXClosureAccess();
 	}
 	
 	public ParserRule getXClosureRule() {
 		return getXClosureAccess().getRule();
 	}
-
-	//XExpressionInClosure returns XExpression:
-	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ";"?)*;
+	
+	//XExpressionInClosure XExpression:
+	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ';'?)*;
 	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
-		return gaXbaseWithAnnotations.getXExpressionInClosureAccess();
+		return gaXbase.getXExpressionInClosureAccess();
 	}
 	
 	public ParserRule getXExpressionInClosureRule() {
 		return getXExpressionInClosureAccess().getRule();
 	}
-
-	//XShortClosure returns XExpression:
-	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter ("," declaredFormalParameters+=JvmFormalParameter)*)?
-	//	explicitSyntax?="|") expression=XExpression;
+	
+	//XShortClosure XExpression:
+	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter (',' declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?='|') expression=XExpression;
 	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
-		return gaXbaseWithAnnotations.getXShortClosureAccess();
+		return gaXbase.getXShortClosureAccess();
 	}
 	
 	public ParserRule getXShortClosureRule() {
 		return getXShortClosureAccess().getRule();
 	}
-
-	//XParenthesizedExpression returns XExpression:
-	//	"(" XExpression ")";
+	
+	//XParenthesizedExpression XExpression:
+	//	'(' XExpression ')';
 	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
-		return gaXbaseWithAnnotations.getXParenthesizedExpressionAccess();
+		return gaXbase.getXParenthesizedExpressionAccess();
 	}
 	
 	public ParserRule getXParenthesizedExpressionRule() {
 		return getXParenthesizedExpressionAccess().getRule();
 	}
-
-	//XIfExpression returns XExpression:
-	//	{XIfExpression} "if" "(" if=XExpression ")" then=XExpression ("else" else=XExpression)?;
+	
+	//XIfExpression XExpression:
+	//	{XIfExpression}
+	//	'if' '(' if=XExpression ')'
+	//	then=XExpression (=> 'else' else=XExpression)?;
 	public XbaseGrammarAccess.XIfExpressionElements getXIfExpressionAccess() {
-		return gaXbaseWithAnnotations.getXIfExpressionAccess();
+		return gaXbase.getXIfExpressionAccess();
 	}
 	
 	public ParserRule getXIfExpressionRule() {
 		return getXIfExpressionAccess().getRule();
 	}
-
-	//XSwitchExpression returns XExpression:
-	//	{XSwitchExpression} "switch" (=> ("(" declaredParam=JvmFormalParameter ":") switch=XExpression ")" | =>
-	//	(declaredParam=JvmFormalParameter ":")? switch=XExpression) "{" cases+=XCasePart* ("default" ":"
-	//	default=XExpression)? "}";
+	
+	//XSwitchExpression XExpression:
+	//	{XSwitchExpression}
+	//	'switch' (=> ('(' declaredParam=JvmFormalParameter ':') switch=XExpression ')'
+	//	| => (declaredParam=JvmFormalParameter ':')? switch=XExpression) '{'
+	//	cases+=XCasePart* ('default' ':' default=XExpression)?
+	//	'}';
 	public XbaseGrammarAccess.XSwitchExpressionElements getXSwitchExpressionAccess() {
-		return gaXbaseWithAnnotations.getXSwitchExpressionAccess();
+		return gaXbase.getXSwitchExpressionAccess();
 	}
 	
 	public ParserRule getXSwitchExpressionRule() {
 		return getXSwitchExpressionAccess().getRule();
 	}
-
+	
 	//XCasePart:
-	//	{XCasePart} typeGuard=JvmTypeReference? ("case" case=XExpression)? (":" then=XExpression | fallThrough?=",");
+	//	{XCasePart} typeGuard=JvmTypeReference? ('case' case=XExpression)? (':' then=XExpression | fallThrough?=',');
 	public XbaseGrammarAccess.XCasePartElements getXCasePartAccess() {
-		return gaXbaseWithAnnotations.getXCasePartAccess();
+		return gaXbase.getXCasePartAccess();
 	}
 	
 	public ParserRule getXCasePartRule() {
 		return getXCasePartAccess().getRule();
 	}
-
-	//XForLoopExpression returns XExpression:
-	//	=> ({XForLoopExpression} "for" "(" declaredParam=JvmFormalParameter ":") forExpression=XExpression ")"
+	
+	//XForLoopExpression XExpression:
+	//	=> ({XForLoopExpression}
+	//	'for' '(' declaredParam=JvmFormalParameter ':') forExpression=XExpression ')'
 	//	eachExpression=XExpression;
 	public XbaseGrammarAccess.XForLoopExpressionElements getXForLoopExpressionAccess() {
-		return gaXbaseWithAnnotations.getXForLoopExpressionAccess();
+		return gaXbase.getXForLoopExpressionAccess();
 	}
 	
 	public ParserRule getXForLoopExpressionRule() {
 		return getXForLoopExpressionAccess().getRule();
 	}
-
-	//XBasicForLoopExpression returns XExpression:
-	//	{XBasicForLoopExpression} "for" "(" (initExpressions+=XExpressionOrVarDeclaration (","
-	//	initExpressions+=XExpressionOrVarDeclaration)*)? ";" expression=XExpression? ";" (updateExpressions+=XExpression (","
-	//	updateExpressions+=XExpression)*)? ")" eachExpression=XExpression;
+	
+	//XBasicForLoopExpression XExpression:
+	//	{XBasicForLoopExpression}
+	//	'for' '(' (initExpressions+=XExpressionOrVarDeclaration (',' initExpressions+=XExpressionOrVarDeclaration)*)? ';'
+	//	expression=XExpression? ';' (updateExpressions+=XExpression (',' updateExpressions+=XExpression)*)? ')'
+	//	eachExpression=XExpression;
 	public XbaseGrammarAccess.XBasicForLoopExpressionElements getXBasicForLoopExpressionAccess() {
-		return gaXbaseWithAnnotations.getXBasicForLoopExpressionAccess();
+		return gaXbase.getXBasicForLoopExpressionAccess();
 	}
 	
 	public ParserRule getXBasicForLoopExpressionRule() {
 		return getXBasicForLoopExpressionAccess().getRule();
 	}
-
-	//XWhileExpression returns XExpression:
-	//	{XWhileExpression} "while" "(" predicate=XExpression ")" body=XExpression;
+	
+	//XWhileExpression XExpression:
+	//	{XWhileExpression}
+	//	'while' '(' predicate=XExpression ')'
+	//	body=XExpression;
 	public XbaseGrammarAccess.XWhileExpressionElements getXWhileExpressionAccess() {
-		return gaXbaseWithAnnotations.getXWhileExpressionAccess();
+		return gaXbase.getXWhileExpressionAccess();
 	}
 	
 	public ParserRule getXWhileExpressionRule() {
 		return getXWhileExpressionAccess().getRule();
 	}
-
-	//XDoWhileExpression returns XExpression:
-	//	{XDoWhileExpression} "do" body=XExpression "while" "(" predicate=XExpression ")";
+	
+	//XDoWhileExpression XExpression:
+	//	{XDoWhileExpression}
+	//	'do'
+	//	body=XExpression
+	//	'while' '(' predicate=XExpression ')';
 	public XbaseGrammarAccess.XDoWhileExpressionElements getXDoWhileExpressionAccess() {
-		return gaXbaseWithAnnotations.getXDoWhileExpressionAccess();
+		return gaXbase.getXDoWhileExpressionAccess();
 	}
 	
 	public ParserRule getXDoWhileExpressionRule() {
 		return getXDoWhileExpressionAccess().getRule();
 	}
-
-	//XBlockExpression returns XExpression:
-	//	{XBlockExpression} "{" (expressions+=XExpressionOrVarDeclaration ";"?)* "}";
+	
+	//XBlockExpression XExpression:
+	//	{XBlockExpression}
+	//	'{' (expressions+=XExpressionOrVarDeclaration ';'?)*
+	//	'}';
 	public XbaseGrammarAccess.XBlockExpressionElements getXBlockExpressionAccess() {
-		return gaXbaseWithAnnotations.getXBlockExpressionAccess();
+		return gaXbase.getXBlockExpressionAccess();
 	}
 	
 	public ParserRule getXBlockExpressionRule() {
 		return getXBlockExpressionAccess().getRule();
 	}
-
-	//XExpressionOrVarDeclaration returns XExpression:
+	
+	//XExpressionOrVarDeclaration XExpression:
 	//	XVariableDeclaration | XExpression;
 	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
-		return gaXbaseWithAnnotations.getXExpressionOrVarDeclarationAccess();
+		return gaXbase.getXExpressionOrVarDeclarationAccess();
 	}
 	
 	public ParserRule getXExpressionOrVarDeclarationRule() {
 		return getXExpressionOrVarDeclarationAccess().getRule();
 	}
-
-	//XVariableDeclaration returns XExpression:
-	//	{XVariableDeclaration} (writeable?="var" | "val") (=> (type=JvmTypeReference name=ValidID) | name=ValidID) ("="
+	
+	//XVariableDeclaration XExpression:
+	//	{XVariableDeclaration} (writeable?='var' | 'val') (=> (type=JvmTypeReference name=ValidID) | name=ValidID) ('='
 	//	right=XExpression)?;
 	public XbaseGrammarAccess.XVariableDeclarationElements getXVariableDeclarationAccess() {
-		return gaXbaseWithAnnotations.getXVariableDeclarationAccess();
+		return gaXbase.getXVariableDeclarationAccess();
 	}
 	
 	public ParserRule getXVariableDeclarationRule() {
 		return getXVariableDeclarationAccess().getRule();
 	}
-
-	//JvmFormalParameter returns types::JvmFormalParameter:
+	
+	//JvmFormalParameter types::JvmFormalParameter:
 	//	parameterType=JvmTypeReference? name=ValidID;
 	public XbaseGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
-		return gaXbaseWithAnnotations.getJvmFormalParameterAccess();
+		return gaXbase.getJvmFormalParameterAccess();
 	}
 	
 	public ParserRule getJvmFormalParameterRule() {
 		return getJvmFormalParameterAccess().getRule();
 	}
-
-	//FullJvmFormalParameter returns types::JvmFormalParameter:
+	
+	//FullJvmFormalParameter types::JvmFormalParameter:
 	//	parameterType=JvmTypeReference name=ValidID;
 	public XbaseGrammarAccess.FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
-		return gaXbaseWithAnnotations.getFullJvmFormalParameterAccess();
+		return gaXbase.getFullJvmFormalParameterAccess();
 	}
 	
 	public ParserRule getFullJvmFormalParameterRule() {
 		return getFullJvmFormalParameterAccess().getRule();
 	}
-
-	//XFeatureCall returns XExpression:
-	//	{XFeatureCall} ("<" typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
-	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (featureCallArguments+=XShortClosure
-	//	| featureCallArguments+=XExpression ("," featureCallArguments+=XExpression)*)? ")")? featureCallArguments+=XClosure?;
+	
+	//XFeatureCall XExpression:
+	//	{XFeatureCall} ('<' typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)* '>')?
+	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?='(' (featureCallArguments+=XShortClosure
+	//	| featureCallArguments+=XExpression (',' featureCallArguments+=XExpression)*)?
+	//	')')?
+	//	featureCallArguments+=XClosure?;
 	public XbaseGrammarAccess.XFeatureCallElements getXFeatureCallAccess() {
-		return gaXbaseWithAnnotations.getXFeatureCallAccess();
+		return gaXbase.getXFeatureCallAccess();
 	}
 	
 	public ParserRule getXFeatureCallRule() {
 		return getXFeatureCallAccess().getRule();
 	}
-
+	
 	//FeatureCallID:
-	//	ValidID | "extends" | "static" | "import" | "extension";
+	//	ValidID | 'extends' | 'static' | 'import' | 'extension';
 	public XbaseGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
-		return gaXbaseWithAnnotations.getFeatureCallIDAccess();
+		return gaXbase.getFeatureCallIDAccess();
 	}
 	
 	public ParserRule getFeatureCallIDRule() {
 		return getFeatureCallIDAccess().getRule();
 	}
-
+	
 	//IdOrSuper:
-	//	FeatureCallID | "super";
+	//	FeatureCallID | 'super';
 	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
-		return gaXbaseWithAnnotations.getIdOrSuperAccess();
+		return gaXbase.getIdOrSuperAccess();
 	}
 	
 	public ParserRule getIdOrSuperRule() {
 		return getIdOrSuperAccess().getRule();
 	}
-
-	//XConstructorCall returns XExpression:
-	//	{XConstructorCall} "new" constructor=[types::JvmConstructor|QualifiedName] ("<"
-	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")? (=>
-	//	explicitConstructorCall?="(" (arguments+=XShortClosure | arguments+=XExpression ("," arguments+=XExpression)*)? ")")?
+	
+	//XConstructorCall XExpression:
+	//	{XConstructorCall}
+	//	'new' constructor=[types::JvmConstructor|QualifiedName] (=> '<' typeArguments+=JvmArgumentTypeReference (','
+	//	typeArguments+=JvmArgumentTypeReference)* '>')? (=> explicitConstructorCall?='(' (arguments+=XShortClosure
+	//	| arguments+=XExpression (',' arguments+=XExpression)*)?
+	//	')')?
 	//	arguments+=XClosure?;
 	public XbaseGrammarAccess.XConstructorCallElements getXConstructorCallAccess() {
-		return gaXbaseWithAnnotations.getXConstructorCallAccess();
+		return gaXbase.getXConstructorCallAccess();
 	}
 	
 	public ParserRule getXConstructorCallRule() {
 		return getXConstructorCallAccess().getRule();
 	}
-
-	//XBooleanLiteral returns XExpression:
-	//	{XBooleanLiteral} ("false" | isTrue?="true");
+	
+	//XBooleanLiteral XExpression:
+	//	{XBooleanLiteral} ('false' | isTrue?='true');
 	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
-		return gaXbaseWithAnnotations.getXBooleanLiteralAccess();
+		return gaXbase.getXBooleanLiteralAccess();
 	}
 	
 	public ParserRule getXBooleanLiteralRule() {
 		return getXBooleanLiteralAccess().getRule();
 	}
-
-	//XNullLiteral returns XExpression:
-	//	{XNullLiteral} "null";
+	
+	//XNullLiteral XExpression:
+	//	{XNullLiteral} 'null';
 	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
-		return gaXbaseWithAnnotations.getXNullLiteralAccess();
+		return gaXbase.getXNullLiteralAccess();
 	}
 	
 	public ParserRule getXNullLiteralRule() {
 		return getXNullLiteralAccess().getRule();
 	}
-
-	//XNumberLiteral returns XExpression:
+	
+	//XNumberLiteral XExpression:
 	//	{XNumberLiteral} value=Number;
 	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
-		return gaXbaseWithAnnotations.getXNumberLiteralAccess();
+		return gaXbase.getXNumberLiteralAccess();
 	}
 	
 	public ParserRule getXNumberLiteralRule() {
 		return getXNumberLiteralAccess().getRule();
 	}
-
-	//XStringLiteral returns XExpression:
+	
+	//XStringLiteral XExpression:
 	//	{XStringLiteral} value=STRING;
 	public XbaseGrammarAccess.XStringLiteralElements getXStringLiteralAccess() {
-		return gaXbaseWithAnnotations.getXStringLiteralAccess();
+		return gaXbase.getXStringLiteralAccess();
 	}
 	
 	public ParserRule getXStringLiteralRule() {
 		return getXStringLiteralAccess().getRule();
 	}
-
-	//XTypeLiteral returns XExpression:
-	//	{XTypeLiteral} "typeof" "(" type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ")";
+	
+	//XTypeLiteral XExpression:
+	//	{XTypeLiteral} 'typeof' '(' type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ')';
 	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
-		return gaXbaseWithAnnotations.getXTypeLiteralAccess();
+		return gaXbase.getXTypeLiteralAccess();
 	}
 	
 	public ParserRule getXTypeLiteralRule() {
 		return getXTypeLiteralAccess().getRule();
 	}
-
-	//XThrowExpression returns XExpression:
-	//	{XThrowExpression} "throw" expression=XExpression;
+	
+	//XThrowExpression XExpression:
+	//	{XThrowExpression} 'throw' expression=XExpression;
 	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
-		return gaXbaseWithAnnotations.getXThrowExpressionAccess();
+		return gaXbase.getXThrowExpressionAccess();
 	}
 	
 	public ParserRule getXThrowExpressionRule() {
 		return getXThrowExpressionAccess().getRule();
 	}
-
-	//XReturnExpression returns XExpression:
-	//	{XReturnExpression} "return" -> expression=XExpression?;
+	
+	//XReturnExpression XExpression:
+	//	{XReturnExpression} 'return' -> expression=XExpression?;
 	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
-		return gaXbaseWithAnnotations.getXReturnExpressionAccess();
+		return gaXbase.getXReturnExpressionAccess();
 	}
 	
 	public ParserRule getXReturnExpressionRule() {
 		return getXReturnExpressionAccess().getRule();
 	}
-
-	//XTryCatchFinallyExpression returns XExpression:
-	//	{XTryCatchFinallyExpression} "try" expression=XExpression (catchClauses+=XCatchClause+ ("finally"
-	//	finallyExpression=XExpression)? | "finally" finallyExpression=XExpression);
+	
+	//XTryCatchFinallyExpression XExpression:
+	//	{XTryCatchFinallyExpression}
+	//	'try'
+	//	expression=XExpression (catchClauses+=XCatchClause+ (=> 'finally' finallyExpression=XExpression)?
+	//	| 'finally' finallyExpression=XExpression);
 	public XbaseGrammarAccess.XTryCatchFinallyExpressionElements getXTryCatchFinallyExpressionAccess() {
-		return gaXbaseWithAnnotations.getXTryCatchFinallyExpressionAccess();
+		return gaXbase.getXTryCatchFinallyExpressionAccess();
 	}
 	
 	public ParserRule getXTryCatchFinallyExpressionRule() {
 		return getXTryCatchFinallyExpressionAccess().getRule();
 	}
-
-	//XSynchronizedExpression returns XExpression:
-	//	=> ({XSynchronizedExpression} "synchronized" "(") param=XExpression ")" expression=XExpression;
+	
+	//XSynchronizedExpression XExpression:
+	//	=> ({XSynchronizedExpression}
+	//	'synchronized' '(') param=XExpression ')' expression=XExpression;
 	public XbaseGrammarAccess.XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
-		return gaXbaseWithAnnotations.getXSynchronizedExpressionAccess();
+		return gaXbase.getXSynchronizedExpressionAccess();
 	}
 	
 	public ParserRule getXSynchronizedExpressionRule() {
 		return getXSynchronizedExpressionAccess().getRule();
 	}
-
+	
 	//XCatchClause:
-	//	"catch" "(" declaredParam=FullJvmFormalParameter ")" expression=XExpression;
+	//	=> 'catch' '(' declaredParam=FullJvmFormalParameter ')' expression=XExpression;
 	public XbaseGrammarAccess.XCatchClauseElements getXCatchClauseAccess() {
-		return gaXbaseWithAnnotations.getXCatchClauseAccess();
+		return gaXbase.getXCatchClauseAccess();
 	}
 	
 	public ParserRule getXCatchClauseRule() {
 		return getXCatchClauseAccess().getRule();
 	}
-
+	
+	//QualifiedName:
+	//	ValidID (=> '.' ValidID)*;
+	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
+		return gaXbase.getQualifiedNameAccess();
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().getRule();
+	}
+	
 	//Number hidden():
-	//	HEX | (INT | DECIMAL) ("." (INT | DECIMAL))?;
+	//	HEX | (INT | DECIMAL) ('.' (INT | DECIMAL))?;
 	public XbaseGrammarAccess.NumberElements getNumberAccess() {
-		return gaXbaseWithAnnotations.getNumberAccess();
+		return gaXbase.getNumberAccess();
 	}
 	
 	public ParserRule getNumberRule() {
 		return getNumberAccess().getRule();
 	}
-
-	/// **
+	
+	///**
 	// * Dummy rule, for "better" downwards compatibility, since GrammarAccess generates non-static inner classes, 
 	// * which makes downstream grammars break on classloading, when a rule is removed.
-	// * /
-	//StaticQualifier:
-	//	(ValidID "::")+;
+	// */ StaticQualifier:
+	//	(ValidID '::')+;
 	public XbaseGrammarAccess.StaticQualifierElements getStaticQualifierAccess() {
-		return gaXbaseWithAnnotations.getStaticQualifierAccess();
+		return gaXbase.getStaticQualifierAccess();
 	}
 	
 	public ParserRule getStaticQualifierRule() {
 		return getStaticQualifierAccess().getRule();
 	}
-
+	
 	//terminal HEX:
-	//	("0x" | "0X") ("0".."9" | "a".."f" | "A".."F" | "_")+ ("#" (("b" | "B") ("i" | "I") | ("l" | "L")))?;
+	//	('0x' | '0X') ('0'..'9' | 'a'..'f' | 'A'..'F' | '_')+ ('#' (('b' | 'B') ('i' | 'I') | ('l' | 'L')))?;
 	public TerminalRule getHEXRule() {
-		return gaXbaseWithAnnotations.getHEXRule();
-	} 
-
+		return gaXbase.getHEXRule();
+	}
+	
 	//terminal INT returns ecore::EInt:
-	//	"0".."9" ("0".."9" | "_")*;
+	//	'0'..'9' ('0'..'9' | '_')*;
 	public TerminalRule getINTRule() {
-		return gaXbaseWithAnnotations.getINTRule();
-	} 
-
+		return gaXbase.getINTRule();
+	}
+	
 	//terminal DECIMAL:
-	//	INT (("e" | "E") ("+" | "-")? INT)? (("b" | "B") ("i" | "I" | "d" | "D") | ("l" | "L" | "d" | "D" | "f" | "F"))?;
+	//	INT (('e' | 'E') ('+' | '-')? INT)? (('b' | 'B') ('i' | 'I' | 'd' | 'D') | ('l' | 'L' | 'd' | 'D' | 'f' | 'F'))?;
 	public TerminalRule getDECIMALRule() {
-		return gaXbaseWithAnnotations.getDECIMALRule();
-	} 
-
+		return gaXbase.getDECIMALRule();
+	}
+	
 	//JvmTypeReference:
-	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)* |
-	//	XFunctionTypeRef;
+	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)*
+	//	| XFunctionTypeRef;
 	public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
-		return gaXbaseWithAnnotations.getJvmTypeReferenceAccess();
+		return gaXtype.getJvmTypeReferenceAccess();
 	}
 	
 	public ParserRule getJvmTypeReferenceRule() {
 		return getJvmTypeReferenceAccess().getRule();
 	}
-
+	
 	//ArrayBrackets:
-	//	"[" "]";
+	//	'[' ']';
 	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
-		return gaXbaseWithAnnotations.getArrayBracketsAccess();
+		return gaXtype.getArrayBracketsAccess();
 	}
 	
 	public ParserRule getArrayBracketsRule() {
 		return getArrayBracketsAccess().getRule();
 	}
-
+	
 	//XFunctionTypeRef:
-	//	("(" (paramTypes+=JvmTypeReference ("," paramTypes+=JvmTypeReference)*)? ")")? "=>" returnType=JvmTypeReference;
+	//	('(' (paramTypes+=JvmTypeReference (',' paramTypes+=JvmTypeReference)*)? ')')? '=>' returnType=JvmTypeReference;
 	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
-		return gaXbaseWithAnnotations.getXFunctionTypeRefAccess();
+		return gaXtype.getXFunctionTypeRefAccess();
 	}
 	
 	public ParserRule getXFunctionTypeRefRule() {
 		return getXFunctionTypeRefAccess().getRule();
 	}
-
+	
 	//JvmParameterizedTypeReference:
-	//	type=[JvmType|QualifiedName] ("<" arguments+=JvmArgumentTypeReference ("," arguments+=JvmArgumentTypeReference)* ">"
-	//	(=> ({JvmInnerTypeReference.outer=current} ".") type=[JvmType|ValidID] ("<" arguments+=JvmArgumentTypeReference (","
-	//	arguments+=JvmArgumentTypeReference)* ">")?)*)?;
+	//	type=[JvmType|super::QualifiedName] (=> '<' arguments+=JvmArgumentTypeReference (','
+	//	arguments+=JvmArgumentTypeReference)* '>' (=> ({JvmInnerTypeReference.outer=current} '.') type=[JvmType|ValidID] (=>
+	//	'<' arguments+=JvmArgumentTypeReference (',' arguments+=JvmArgumentTypeReference)* '>')?)*)?;
 	public XtypeGrammarAccess.JvmParameterizedTypeReferenceElements getJvmParameterizedTypeReferenceAccess() {
-		return gaXbaseWithAnnotations.getJvmParameterizedTypeReferenceAccess();
+		return gaXtype.getJvmParameterizedTypeReferenceAccess();
 	}
 	
 	public ParserRule getJvmParameterizedTypeReferenceRule() {
 		return getJvmParameterizedTypeReferenceAccess().getRule();
 	}
-
-	//JvmArgumentTypeReference returns JvmTypeReference:
+	
+	//JvmArgumentTypeReference JvmTypeReference:
 	//	JvmTypeReference | JvmWildcardTypeReference;
 	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
-		return gaXbaseWithAnnotations.getJvmArgumentTypeReferenceAccess();
+		return gaXtype.getJvmArgumentTypeReferenceAccess();
 	}
 	
 	public ParserRule getJvmArgumentTypeReferenceRule() {
 		return getJvmArgumentTypeReferenceAccess().getRule();
 	}
-
+	
 	//JvmWildcardTypeReference:
-	//	{JvmWildcardTypeReference} "?" (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded* |
-	//	constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
+	//	{JvmWildcardTypeReference} '?' (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*
+	//	| constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
 	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
-		return gaXbaseWithAnnotations.getJvmWildcardTypeReferenceAccess();
+		return gaXtype.getJvmWildcardTypeReferenceAccess();
 	}
 	
 	public ParserRule getJvmWildcardTypeReferenceRule() {
 		return getJvmWildcardTypeReferenceAccess().getRule();
 	}
-
+	
 	//JvmUpperBound:
-	//	"extends" typeReference=JvmTypeReference;
+	//	'extends' typeReference=JvmTypeReference;
 	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
-		return gaXbaseWithAnnotations.getJvmUpperBoundAccess();
+		return gaXtype.getJvmUpperBoundAccess();
 	}
 	
 	public ParserRule getJvmUpperBoundRule() {
 		return getJvmUpperBoundAccess().getRule();
 	}
-
-	//JvmUpperBoundAnded returns JvmUpperBound:
-	//	"&" typeReference=JvmTypeReference;
+	
+	//JvmUpperBoundAnded JvmUpperBound:
+	//	'&' typeReference=JvmTypeReference;
 	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
-		return gaXbaseWithAnnotations.getJvmUpperBoundAndedAccess();
+		return gaXtype.getJvmUpperBoundAndedAccess();
 	}
 	
 	public ParserRule getJvmUpperBoundAndedRule() {
 		return getJvmUpperBoundAndedAccess().getRule();
 	}
-
+	
 	//JvmLowerBound:
-	//	"super" typeReference=JvmTypeReference;
+	//	'super' typeReference=JvmTypeReference;
 	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
-		return gaXbaseWithAnnotations.getJvmLowerBoundAccess();
+		return gaXtype.getJvmLowerBoundAccess();
 	}
 	
 	public ParserRule getJvmLowerBoundRule() {
 		return getJvmLowerBoundAccess().getRule();
 	}
-
-	//JvmLowerBoundAnded returns JvmLowerBound:
-	//	"&" typeReference=JvmTypeReference;
+	
+	//JvmLowerBoundAnded JvmLowerBound:
+	//	'&' typeReference=JvmTypeReference;
 	public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
-		return gaXbaseWithAnnotations.getJvmLowerBoundAndedAccess();
+		return gaXtype.getJvmLowerBoundAndedAccess();
 	}
 	
 	public ParserRule getJvmLowerBoundAndedRule() {
 		return getJvmLowerBoundAndedAccess().getRule();
 	}
-
+	
 	//JvmTypeParameter:
 	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
 	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
-		return gaXbaseWithAnnotations.getJvmTypeParameterAccess();
+		return gaXtype.getJvmTypeParameterAccess();
 	}
 	
 	public ParserRule getJvmTypeParameterRule() {
 		return getJvmTypeParameterAccess().getRule();
 	}
-
+	
 	//QualifiedNameWithWildcard:
-	//	QualifiedName "." "*";
+	//	super::QualifiedName '.' '*';
 	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
-		return gaXbaseWithAnnotations.getQualifiedNameWithWildcardAccess();
+		return gaXtype.getQualifiedNameWithWildcardAccess();
 	}
 	
 	public ParserRule getQualifiedNameWithWildcardRule() {
 		return getQualifiedNameWithWildcardAccess().getRule();
 	}
-
+	
+	//ValidID:
+	//	ID;
+	public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
+		return gaXtype.getValidIDAccess();
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().getRule();
+	}
+	
 	//XImportSection:
-	//	importDeclarations+=XImportDeclaration+;
+	//	importDeclarations+=super::XImportDeclaration+;
 	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
-		return gaXbaseWithAnnotations.getXImportSectionAccess();
+		return gaXtype.getXImportSectionAccess();
 	}
 	
 	public ParserRule getXImportSectionRule() {
 		return getXImportSectionAccess().getRule();
 	}
-
-	//XImportDeclaration:
-	//	"import" (static?="static" extension?="extension"? importedType=[JvmDeclaredType|QualifiedNameInStaticImport]
-	//	(wildcard?="*" | memberName=ValidID) | importedType=[JvmDeclaredType|QualifiedName] |
-	//	importedNamespace=QualifiedNameWithWildcard) ";"?;
-	public XtypeGrammarAccess.XImportDeclarationElements getXImportDeclarationAccess() {
-		return gaXbaseWithAnnotations.getXImportDeclarationAccess();
-	}
 	
-	public ParserRule getXImportDeclarationRule() {
-		return getXImportDeclarationAccess().getRule();
-	}
-
 	//QualifiedNameInStaticImport:
-	//	(ValidID ".")+;
+	//	(ValidID '.')+;
 	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
-		return gaXbaseWithAnnotations.getQualifiedNameInStaticImportAccess();
+		return gaXtype.getQualifiedNameInStaticImportAccess();
 	}
 	
 	public ParserRule getQualifiedNameInStaticImportRule() {
 		return getQualifiedNameInStaticImportAccess().getRule();
 	}
-
+	
 	//terminal ID:
-	//	"^"? ("a".."z" | "A".."Z" | "$" | "_") ("a".."z" | "A".."Z" | "$" | "_" | "0".."9")*;
+	//	'^'? ('a'..'z' | 'A'..'Z' | '$' | '_') ('a'..'z' | 'A'..'Z' | '$' | '_' | '0'..'9')*;
 	public TerminalRule getIDRule() {
-		return gaXbaseWithAnnotations.getIDRule();
-	} 
-
+		return gaXtype.getIDRule();
+	}
+	
 	//terminal STRING:
-	//	"\"" ("\\" . / * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\""))* "\""? | "\'" ("\\" .
-	//	/ * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\'"))* "\'"?;
+	//	'"' ('\\' . | !('\\' | '"'))* '"'? |
+	//	"'" ('\\' . | !('\\' | "'"))* "'"?;
 	public TerminalRule getSTRINGRule() {
-		return gaXbaseWithAnnotations.getSTRINGRule();
-	} 
-
+		return gaXtype.getSTRINGRule();
+	}
+	
 	//terminal ML_COMMENT:
-	//	"/ *"->"* /";
+	//	'/*'->'*/';
 	public TerminalRule getML_COMMENTRule() {
-		return gaXbaseWithAnnotations.getML_COMMENTRule();
-	} 
-
+		return gaXtype.getML_COMMENTRule();
+	}
+	
 	//terminal SL_COMMENT:
-	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	//	'//' !('\n' | '\r')* ('\r'? '\n')?;
 	public TerminalRule getSL_COMMENTRule() {
-		return gaXbaseWithAnnotations.getSL_COMMENTRule();
-	} 
-
+		return gaXtype.getSL_COMMENTRule();
+	}
+	
 	//terminal WS:
-	//	(" " | "\t" | "\r" | "\n")+;
+	//	' ' | '\t' | '\r' | '\n'+;
 	public TerminalRule getWSRule() {
-		return gaXbaseWithAnnotations.getWSRule();
-	} 
-
+		return gaXtype.getWSRule();
+	}
+	
 	//terminal ANY_OTHER:
 	//	.;
 	public TerminalRule getANY_OTHERRule() {
-		return gaXbaseWithAnnotations.getANY_OTHERRule();
-	} 
+		return gaXtype.getANY_OTHERRule();
+	}
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/validation/AbstractPerspectiveDslValidator.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/validation/AbstractPerspectiveDslValidator.java
index c93bb8a..a0517eb 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/validation/AbstractPerspectiveDslValidator.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/validation/AbstractPerspectiveDslValidator.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.perspective.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 AbstractPerspectiveDslValidator extends org.eclipse.xtext.xbase.annotations.validation.XbaseWithAnnotationsValidator {
-
+public abstract class AbstractPerspectiveDslValidator 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/perspective/PerspectiveDsl"));
-	    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/perspective/PerspectiveDsl"));
+		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.perspective/src/org/eclipse/osbp/xtext/perspective/GeneratePerspectiveDsl.mwe2 b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/GeneratePerspectiveDsl.mwe2
index 29c33aa..2f88fe0 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/GeneratePerspectiveDsl.mwe2
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/GeneratePerspectiveDsl.mwe2
@@ -14,176 +14,102 @@
 module org.eclipse.osbp.xtext.perspective.GeneratePerspectiveDsl
 
 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.perspective"
-var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtext"
-var fileExtensions = "perspective"
-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.perspective"
+				rootPath = rootPath
+				genericIde = {
+					enabled = true
+					name = "org.eclipse.osbp.xtext.perspective.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.perspective.PerspectiveDsl"
+			fileExtensions = "perspective"
+			
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.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.dsl.dto.xtext/model/dto.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.authorizationdsl/model/AuthorizationDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.blip/model/BlipDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.table/model/TableDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.dialogdsl/model/DialogDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.organizationdsl/model/OrganizationDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.reportdsl/model/ReportDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.topologydsl/model/TopologyDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.action/model/ActionDSL.xcore"	
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.datainterchange/model/DataDSL.xcore"	
+				
+			generateXtendStubs = false
+			
+			serializer = {
+				generateStub = false
+			}
+			
+			validator = {
+			}
+			formatter =  auto-inject {
+			}
+			generator = {
+				generateStub = false
+				generateJavaMain = false
+				generateXtendStub = false
+			}
+			generator = {
+				generateStub = false
+				generateJavaMain = false
+				generateXtendStub = false
+			}
+		}
 	}
-    bean = MavenStandaloneSetup {
-    	scanClassPath = true
-    	platformUri = "${runtimeProject}/.."
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore"
-//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore"
-		registerGeneratedEPackage="org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage"
-
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.table/model/TableDSL.xcore"
-//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.table/model/TableDSL.xcore"
-		registerGeneratedEPackage = "org.eclipse.osbp.xtext.table.TableDSLPackage"
-		
-		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.dialogdsl/model/DialogDSL.xcore"
-//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.dialogdsl/model/DialogDSL.xcore"
-		registerGeneratedEPackage = "org.eclipse.osbp.xtext.dialogdsl.DialogDSLPackage"
-		
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.organizationdsl/model/OrganizationDSL.xcore"
-//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.organizationdsl/model/OrganizationDSL.xcore"
-		registerGeneratedEPackage = "org.eclipse.osbp.xtext.organizationdsl.OrganizationDSLPackage"
-		
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.reportdsl/model/ReportDSL.xcore"
-//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.reportdsl/model/ReportDSL.xcore"
-		registerGeneratedEPackage = "org.eclipse.osbp.xtext.reportdsl.ReportDSLPackage"
-		
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.topologydsl/model/TopologyDSL.xcore"
-//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.topologydsl/model/TopologyDSL.xcore"
-		registerGeneratedEPackage = "org.eclipse.osbp.xtext.topologydsl.TopologyDSLPackage"
-
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.action/model/ActionDSL.xcore"
-		registerGeneratedEPackage = "org.eclipse.osbp.xtext.action.ActionDSLPackage"
-
-		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"
-    }
-    
-    component = DirectoryCleaner {
-    	directory = "${runtimeProject}.ui/src-gen"
-    }
-    
-    component = DirectoryCleaner {
-    	directory = "${runtimeProject}.tests/src-gen"
-    }
-    
-    component = Generator {
-    	pathRtProject = runtimeProject
-    	pathUiProject = "${runtimeProject}.ui"
-    	pathTestProject = "${runtimeProject}.tests"
-    	projectNameRt = projectName
-    	projectNameUi = "${projectName}.ui"
-    	encoding = encoding
-    	language = auto-inject {
-    		uri = grammarURI
-    
-    		// Java API to access grammar elements (required by several other fragments)
-    		fragment = grammarAccess.GrammarAccessFragment auto-inject {}
-    
-    		// generates Java API for the generated EPackages
-    		fragment = ecore.EMFGeneratorFragment auto-inject {}
-    
-    		// the old serialization component
-    		// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}    
-    
-    		// serializer 2.0
-    		fragment = serializer.SerializerFragment auto-inject {
-    			generateStub = false
-    		}
-    
-    		// a custom ResourceFactory for use with EMF
-    		fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
-    
-    		// The antlr parser generator fragment.
-    		fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
-    		//  options = {
-    		//      backtrack = true
-    		//  }
-    		}
-    
-    		// Xtend-based API for validation
-    		fragment = validation.ValidatorFragment auto-inject {
-    		//    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
-    		//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
-    		}
-    
-    		// old scoping and exporting API
-    		// fragment = scoping.ImportURIScopingFragment auto-inject {}
-    		// fragment = exporting.SimpleNamesFragment auto-inject {}
-    
-    		// scoping and exporting API
-    		fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
-    		fragment = exporting.QualifiedNamesFragment auto-inject {}
-    		fragment = builder.BuilderIntegrationFragment auto-inject {}
-    
-    		// generator API
-    		fragment = generator.GeneratorFragment auto-inject {}
-    
-    		// formatter API
-    		fragment = formatting.FormatterFragment auto-inject {}
-    
-    		// labeling API
-    		fragment = labeling.LabelProviderFragment auto-inject {
-    			generateXtendStub=true
-    			generateStub=false
-    		}
-    
-    		// outline API
-    		fragment = outline.OutlineTreeProviderFragment auto-inject {}
-    		fragment = outline.QuickOutlineFragment auto-inject {}
-    
-    		// quickfix API
-    		fragment = quickfix.QuickfixProviderFragment auto-inject {}
-    
-    		// content assist API
-    		fragment = contentAssist.ContentAssistFragment auto-inject {}
-    
-    		// generates a more lightweight Antlr parser and lexer tailored for content assist
-    		fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {}
-    
-    		// generates junit test support classes into Generator#pathTestProject
-    		fragment = junit.Junit4Fragment auto-inject {}
-    
-    		// rename refactoring
-    		fragment = refactoring.RefactorElementNameFragment auto-inject {}
-    
-    		// provides the necessary bindings for java types integration
-    		fragment = types.TypesGeneratorFragment auto-inject {}
-    
-    		// generates the required bindings only if the grammar inherits from Xbase
-    		fragment = xbase.XbaseGeneratorFragment auto-inject {}
-    		
-    		// generates the required bindings only if the grammar inherits from Xtype
-    		fragment = xbase.XtypeGeneratorFragment auto-inject {}
-    
-    		// provides a preference page for template proposals
-    		fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
-    
-    		// provides a compare view
-    		fragment = compare.CompareFragment auto-inject {}
-
-            // parse grammar and generate i18n grammar
-            fragment = org.eclipse.osbp.xtext.basic.generator.BasicDslGrammarI18nGenerator auto-inject {}
-    	}
-    }
 }
 
+
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtext b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtext
index 728cda7..26ca441 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtext
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtext
@@ -11,33 +11,34 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
-grammar org.eclipse.osbp.xtext.perspective.PerspectiveDsl with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+grammar org.eclipse.osbp.xtext.perspective.PerspectiveDsl with org.eclipse.osbp.xtext.oxtype.OXtype
 
 import "http://osbp.eclipse.org/xtext/perspective/PerspectiveDsl"
+import "http://www.eclipse.org/xtext/common/JavaVMTypes" as jvmTypes
 import "http://osbp.eclipse.org/xtext/table/TableDSL" as table
 import "http://osbp.eclipse.org/xtext/chart/ChartDSL" as chart
+import "http://osbp.eclipse.org/xtext/datainterchange/DataDSL" as data
 import "http://osbp.eclipse.org/xtext/dialogdsl/DialogDSL" as dialog
 import "http://osbp.eclipse.org/xtext/reportdsl/ReportDSL" as report
 import "http://osbp.eclipse.org/xtext/organizationdsl/OrganizationDsl" as organization
 import "http://osbp.eclipse.org/xtext/topologydsl/TopologyDSL" as topology
 import "http://osbp.eclipse.org/xtext/action/ActionDSL" as action
 import "http://osbp.eclipse.org/xtext/blip/BlipDSL" as blip
+import "http://osbp.eclipse.org/dsl/dto/v1" as dto
 import "http://osbp.eclipse.org/dsl/common/types/v1" as types
 import "http://www.eclipse.org/emf/2002/Ecore" as ecore
 
 PerspectiveModel:
+	importSection=XImportSection?
 	packages+=PerspectivePackage*;
 
 PerspectivePackage:
 	{PerspectivePackage} 'package' name=QualifiedName
-	('{' (imports+=PerspectiveImport)* (perspectives+=Perspective)* '}')?;
-
-PerspectiveImport returns types::LImport:
-	'import' importedNamespace=PerspectiveQualifiedNameWithWildCard;
+	('{'  (perspectives+=Perspective)* '}')?;
 
 Perspective:
 	{Perspective} 'perspective' name=TRANSLATABLEID
-	(description?='described by' descriptionValue=TRANSLATABLESTRING)?
+	(description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
 	('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])?
 	(('iconURI' iconURI=STRING)? &
 	('accessibility' accessibilityPhrase=STRING)? &
@@ -64,16 +65,15 @@
 
 PerspectivePart:
 	{PerspectivePart} 'part' elementId=TRANSLATABLEID
-	((description?='described by' descriptionValue=TRANSLATABLESTRING)? &
-	('spaceVolume' containerData=STRING)? &
+	(('spaceVolume' containerData=STRING)? &
 	('accessibility' accessibilityPhrase=STRING)? &
 	('iconURI' iconURI=STRING)? &
 	('view' view=PerspectiveView)? &
 	(isClosable?='isClosable')?);
 
 PerspectiveView:
-	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveReport | PerspectiveOrganization | PerspectiveTopology |
-	PerspectiveDialog | PerspectiveBPMN | PerspectiveGrid;
+	PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveBean | PerspectiveReport | PerspectiveOrganization | PerspectiveTopology |
+	PerspectiveDialog | PerspectiveBPMN | PerspectiveGrid | PerspectiveWelcome | PerspectiveSearch | PerspectiveDataInterchange | PerspectiveKanban;
 
 PerspectiveSelection:
 	{PerspectiveSelection} 'select' ref=[table::Table];
@@ -84,6 +84,9 @@
 PerspectiveGrid:
 	{PerspectiveGrid} 'grid' ref=[table::Table];
 
+PerspectiveBean:
+	{PerspectiveBean} 'bean' ref=[table::Table];
+
 PerspectiveChart:
 	{PerspectiveChart} 'chart' ref=[chart::Chart];
 
@@ -102,14 +105,17 @@
 PerspectiveBPMN:
 	{PerspectiveBPMN} 'bpmn';
 
-PerspectiveQualifiedNameWithWildCard:
-	QualifiedName ('.' '*')?;
+PerspectiveKanban:
+	{PerspectiveKanban} 'kanban' 'of' dtoRef=[dto::LDto] 'card' cardRef=[dialog::Dialog] 'dialog' dialogRef=[dialog::Dialog];
 
-QualifiedName:
-	ValidID (=> '.' ValidID)*;
+PerspectiveWelcome:
+	{PerspectiveWelcome} 'welcome';
 
-ValidID:
-	ID;
+PerspectiveSearch:
+	{PerspectiveSearch} 'search' 'in' dtoRef=[dto::LDto] (('depth' depth=INT)? & ('filterColumns' filterCols=INT)?);
+
+PerspectiveDataInterchange:
+	{PerspectiveDataInterchange} 'dataInterchange' ref=[data::DataInterchangePackage];
 
 TRANSLATABLEID:
 	ID;
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslRuntimeModule.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslRuntimeModule.java
index 583d0ac..9424f95 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDslRuntimeModule.java
@@ -11,27 +11,41 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.perspective;
+package org.eclipse.osbp.xtext.perspective;
 
 import javax.inject.Singleton;
 
-import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinker;
-import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
-import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
-import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.FastLinkingService;
-import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.LazyJvmTypeTransientValueService;
+import org.eclipse.osbp.dsl.common.xtext.scoping.ScopingInfoProvider;
 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.JvmTypeAwareLinkingHelper;
+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.osbp.xtext.perspective.formatting.PerspectiveDslFormatter;
+import org.eclipse.osbp.xtext.perspective.imports.ShouldImportProvider;
 import org.eclipse.osbp.xtext.perspective.jvmmodel.PerspectiveModelGenerator;
 import org.eclipse.osbp.xtext.perspective.linking.PerspectiveJvmLinkingHelper;
-import org.eclipse.osbp.xtext.perspective.scoping.PerspectiveScopeProvider;
+import org.eclipse.osbp.xtext.perspective.scoping.PerspectiveDslScopeProvider;
 import org.eclipse.osbp.xtext.perspective.valueconverter.PerspectiveValueConverterService;
 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;
 
 /**
  * Use this class to register components to be used at runtime / without the
@@ -39,37 +53,33 @@
  */
 public class PerspectiveDslRuntimeModule extends
 		org.eclipse.osbp.xtext.perspective.AbstractPerspectiveDslRuntimeModule {
+	
+	public Class<? extends IResourceStorageFacade> bindResourceStorageFacade() {
+		return BatchLinkableResourceStorageFacade.class;
+	}
+	
+	public Class<? extends TargetURICollector> bindTargetURICollector() {
+		return JvmModelTargetURICollector.class;
+	}
+	
+	
 	@Override
 	public Class<? extends IGenerator> bindIGenerator() {
 		return PerspectiveModelGenerator.class;
 	}
 
 	public Class<? extends IScopeProvider> bindIScopeProvider() {
-		return PerspectiveScopeProvider.class;
+		return PerspectiveDslScopeProvider.class;
 	}
 
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return PerspectiveDslFormatter.class;
+	}
+	
 	public Class<? extends org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
-		return PerspectiveScopeProvider.class;
+		return PerspectiveDslScopeProvider.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(PerspectiveScopeProvider.class);
-	}
-
-	// /**
-	// * Only required, if fqn can not be created by appending the names of the
-	// * semantic elements up the hierarchy.
-	// */
-	// public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider>
-	// bindIQualifiedNameProvider() {
-	// return PerspectiveQualifiedNameProvider.class;
-	// }
-
 	@Override
 	public Class<? extends IValueConverterService> bindIValueConverterService() {
 		return PerspectiveValueConverterService.class;
@@ -82,20 +92,12 @@
 				.to(DSLOutputConfigurationProvider.class).in(Singleton.class);
 	}
 
-	public Class<? extends ILinkingService> bindILinkingService() {
-		return FastLinkingService.class;
-	}
-
 	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
 		return SemanticLoadingResource.class;
 	}
 
-	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
-		return LazyJvmTypeLinker.class;
-	}
-
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ITransientValueService> bindSerializerITransientValueService() {
-		return LazyJvmTypeTransientValueService.class;
+	public void configureITransientValueService(Binder binder) {
+		binder.bind(ITransientValueService.class).to(JvmTypeAwareTransientValueService.class);
 	}
 
 	// @Override
@@ -104,8 +106,40 @@
 	// return PerspectiveModelDerivedStateComputerx.class;
 	// }
 	//
-	public Class<? extends LazyJvmTypeLinkingHelper> bindJvmLinkingHelper() {
+	public Class<? extends JvmTypeAwareLinkingHelper> bindJvmTypeAwareLinkingHelper() {
 		return PerspectiveJvmLinkingHelper.class;
 	}
 
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return JvmTypeAwareLinker.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;
+	}
+
+//	public Class<? extends TypeUsageCollector> bindTypeUsageCollector() {
+//		return TransientTypesCollector.class;
+//	}
+
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.xtend b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.xtend
index f05b7cb..50106e4 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.xtend
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.xtend
@@ -14,15 +14,13 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.perspective.formatting
 
-import com.google.inject.Inject;
+import com.google.inject.Inject
+import org.eclipse.osbp.xtext.oxtype.formatting.GenericFormatter
+import org.eclipse.osbp.xtext.oxtype.services.OXtypeGrammarAccess
 import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
 import org.eclipse.xtext.formatting.impl.FormattingConfig
-//import org.eclipse.osbp.xtext.perspective.services.PerspectiveDslGrammarAccess
-import org.eclipse.osbp.utils.xtext.GenericFormatter
-import org.eclipse.xtext.xbase.services.XtypeGrammarAccess
 
 /**
  * This class contains custom formatting description.
@@ -34,14 +32,14 @@
  */
 class PerspectiveDslFormatter extends AbstractDeclarativeFormatter {
 
-//	@Inject extension PerspectiveDslGrammarAccess
-	@Inject XtypeGrammarAccess grammarAccess
+	//	@Inject extension PerspectiveDslGrammarAccess
+	@Inject OXtypeGrammarAccess grammarAccess
 
 	override protected void configureFormatting(FormattingConfig c) {
 		val genericFormatter = new GenericFormatter()
 
 		//	common formatting:
-		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "Perspective", "PerspectiveImport" )
+		genericFormatter.formatFirstLevelBlocks(c, grammar.grammar, "Perspective")
 		genericFormatter.genericFormatting(c, grammar, grammarAccess)
 	}
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/imports/ShouldImportProvider.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/imports/ShouldImportProvider.java
new file mode 100644
index 0000000..0849e37
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/imports/ShouldImportProvider.java
@@ -0,0 +1,52 @@
+package org.eclipse.osbp.xtext.perspective.imports;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+import org.eclipse.osbp.xtext.action.ActionDSLPackage;
+import org.eclipse.osbp.xtext.action.ActionToolbar;
+import org.eclipse.osbp.xtext.blip.Blip;
+import org.eclipse.osbp.xtext.blip.BlipDSLPackage;
+import org.eclipse.osbp.xtext.chart.Chart;
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.datainterchange.DataDSLPackage;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchange;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage;
+import org.eclipse.osbp.xtext.dialogdsl.Dialog;
+import org.eclipse.osbp.xtext.dialogdsl.DialogDSLPackage;
+import org.eclipse.osbp.xtext.organizationdsl.Organization;
+import org.eclipse.osbp.xtext.organizationdsl.OrganizationDSLPackage;
+import org.eclipse.osbp.xtext.oxtype.imports.DefaultShouldImportProvider;
+import org.eclipse.osbp.xtext.reportdsl.Report;
+import org.eclipse.osbp.xtext.reportdsl.ReportDSLPackage;
+import org.eclipse.osbp.xtext.table.Table;
+import org.eclipse.osbp.xtext.table.TableDSLPackage;
+import org.eclipse.osbp.xtext.topologydsl.Topology;
+import org.eclipse.osbp.xtext.topologydsl.TopologyDSLPackage;
+
+public class ShouldImportProvider extends DefaultShouldImportProvider {
+
+	protected boolean doShouldImport(EObject toImport, EReference eRef, EObject context) {
+		return toImport instanceof Table || toImport instanceof Report || toImport instanceof Blip
+				|| toImport instanceof Chart || toImport instanceof Organization || toImport instanceof Topology
+				|| toImport instanceof Dialog || toImport instanceof ActionToolbar || toImport instanceof LDto ||
+				toImport instanceof DataInterchangePackage;
+	}
+
+	protected boolean doShouldProposeAllElements(EObject object, EReference reference) {
+		EClass type = reference.getEReferenceType();
+		return TableDSLPackage.Literals.TABLE.isSuperTypeOf(type)
+				|| ReportDSLPackage.Literals.REPORT.isSuperTypeOf(type)
+				|| BlipDSLPackage.Literals.BLIP.isSuperTypeOf(type)
+				|| ChartDSLPackage.Literals.CHART.isSuperTypeOf(type)
+				|| OrganizationDSLPackage.Literals.ORGANIZATION.isSuperTypeOf(type)
+				|| TopologyDSLPackage.Literals.TOPOLOGY.isSuperTypeOf(type)
+				|| DialogDSLPackage.Literals.DIALOG.isSuperTypeOf(type)
+				|| ActionDSLPackage.Literals.ACTION_TOOLBAR.isSuperTypeOf(type)
+				|| OSBPDtoPackage.Literals.LDTO.isSuperTypeOf(type)
+				|| DataDSLPackage.Literals.DATA_INTERCHANGE_PACKAGE.isSuperTypeOf(type);
+		
+	}
+}
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/linking/PerspectiveJvmLinkingHelper.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/linking/PerspectiveJvmLinkingHelper.java
index daa652e..1fb4063 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/linking/PerspectiveJvmLinkingHelper.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/linking/PerspectiveJvmLinkingHelper.java
@@ -11,17 +11,19 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.perspective.linking;
+package org.eclipse.osbp.xtext.perspective.linking;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
+import org.eclipse.osbp.xtext.oxtype.linking.JvmTypeAwareLinkingHelper;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
 
-public class PerspectiveJvmLinkingHelper extends LazyJvmTypeLinkingHelper {
+public class PerspectiveJvmLinkingHelper extends JvmTypeAwareLinkingHelper {
 
 	public PerspectiveJvmLinkingHelper() {
-		register(PerspectiveDslPackage.Literals.PERSPECTIVE_SELECTION__REF,
+		register(
+				PerspectiveDslPackage.Literals.PERSPECTIVE_SELECTION__REF,
 				PerspectiveDslPackage.Literals.PERSPECTIVE_SELECTION__REF_TYPE_JVM,
 				new IJvmLinkCrossRefStringEnhancer() {
 					@Override
@@ -48,6 +50,15 @@
 						return crossRefString + "Grid";
 					}
 				}, null);
+		register(PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF,
+				PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF_TYPE_JVM,
+				new IJvmLinkCrossRefStringEnhancer() {
+			@Override
+			public String enhance(EObject context,
+					EStructuralFeature feature, String crossRefString) {
+				return crossRefString + "Bean";
+			}
+		}, null);
 		register(PerspectiveDslPackage.Literals.PERSPECTIVE_CHART__REF,
 				PerspectiveDslPackage.Literals.PERSPECTIVE_CHART__REF_TYPE_JVM,
 				new IJvmLinkCrossRefStringEnhancer() {
@@ -67,16 +78,6 @@
 						return crossRefString + "Report";
 					}
 				}, null);
-//		register(
-//				PerspectiveDslPackage.Literals.PERSPECTIVE_ORGANIZATION__REF,
-//				PerspectiveDslPackage.Literals.PERSPECTIVE_ORGANIZATION__REF_TYPE_JVM,
-//				new IJvmLinkCrossRefStringEnhancer() {
-//					@Override
-//					public String enhance(EObject context,
-//							EStructuralFeature feature, String crossRefString) {
-//						return crossRefString + "MxGraphOrganization";
-//					}
-//				}, null);
 		register(
 				PerspectiveDslPackage.Literals.PERSPECTIVE_TOPOLOGY__REF,
 				PerspectiveDslPackage.Literals.PERSPECTIVE_TOPOLOGY__REF_TYPE_JVM,
@@ -103,7 +104,18 @@
 					@Override
 					public String enhance(EObject context,
 							EStructuralFeature feature, String crossRefString) {
-						return crossRefString + "Action";
+						return crossRefString + "Toolbar";
+					}
+				}, null);
+		register(
+				PerspectiveDslPackage.Literals.PERSPECTIVE_DATA_INTERCHANGE__REF,
+				PerspectiveDslPackage.Literals.PERSPECTIVE_DATA_INTERCHANGE__REF_TYPE_JVM,
+				new IJvmLinkCrossRefStringEnhancer() {
+					@Override
+					public String enhance(EObject context,
+							EStructuralFeature feature, String crossRefString) {
+						// as the class is created by the package, we supply extra segment so the package calculation can discard the last segment 
+						return crossRefString + "." + StringExtensions.toFirstUpper(crossRefString) + "TriggerView";
 					}
 				}, null);
 	}
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/scoping/PerspectiveDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/scoping/PerspectiveDSLScopeProvider.xtend
index be16543..fdef783 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/scoping/PerspectiveDSLScopeProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/scoping/PerspectiveDSLScopeProvider.xtend
@@ -1,30 +1,16 @@
-/**
- *                                                                            
- *  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.perspective.scoping
 
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.emf.ecore.EReference
-import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
 import org.eclipse.osbp.ecview.semantic.uimodel.UiIDEView
 import org.eclipse.osbp.xtext.blip.Blip
 import org.eclipse.osbp.xtext.blip.BlipUserTask
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage
 import org.eclipse.osbp.xtext.dialogdsl.Dialog
+import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3
 import org.eclipse.osbp.xtext.perspective.Perspective
+import org.eclipse.osbp.xtext.perspective.PerspectiveBean
+import org.eclipse.osbp.xtext.perspective.PerspectiveDataInterchange
 import org.eclipse.osbp.xtext.perspective.PerspectiveDialog
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage
 import org.eclipse.osbp.xtext.perspective.PerspectiveGrid
@@ -33,195 +19,200 @@
 import org.eclipse.osbp.xtext.perspective.PerspectiveSelection
 import org.eclipse.osbp.xtext.perspective.PerspectiveTable
 import org.eclipse.osbp.xtext.table.Table
+import org.eclipse.osbp.xtext.table.TableBean
 import org.eclipse.osbp.xtext.table.TableGrid
 import org.eclipse.osbp.xtext.table.TableSelection
 import org.eclipse.osbp.xtext.table.TableTable
 import org.eclipse.xtext.resource.EObjectDescription
 import org.eclipse.xtext.resource.IEObjectDescription
 import org.eclipse.xtext.scoping.IScope
+import org.eclipse.xtext.scoping.impl.FilteringScope
 import org.eclipse.xtext.scoping.impl.MapBasedScope
-import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider
 
-class PerspectiveScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+/**
+ * This class contains custom scoping description.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping
+ * on how and when to use it.
+ */
+class PerspectiveDslScopeProvider extends AbstractPerspectiveDslScopeProvider {
 
 	@Override
 	override IScope getScope(EObject context, EReference reference) {
 		if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_SASH_CONTAINER__SELECTED_ELEMENT) {
-			return getScope_CCPerspectiveSashContainer_selected_element(context)
+			return getSashContainerSelectedElement(context)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_PART_STACK__SELECTED_ELEMENT) {
-			return getScope_CCPerspectivePartStack_selected_element(context)
+			return getPartStackSelectedElement(context)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE__USER_TASK) {
-			return getScope_CCPerspectivePartStack_USER_TASK(context as Perspective)
+			return getUserTask(context as Perspective)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_DIALOG__REF) {
-			return getScope_CCPerspectivePartStack_PERSPECTIVE_DIALOG__REF(context as PerspectiveDialog, reference)
+			return getDialogRef(context as PerspectiveDialog, reference)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_SELECTION__REF) {
-			return getScope_CCPerspectivePartStack_PERSPECTIVE_SELECTION__REF(context as PerspectiveSelection, reference)
+			return getSelectionRef(context as PerspectiveSelection,	reference)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_TABLE__REF) {
-			return getScope_CCPerspectivePartStack_PERSPECTIVE_TABLE__REF(context as PerspectiveTable, reference)
+			return getTableRef(context as PerspectiveTable, reference)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_GRID__REF) {
-			return getScope_CCPerspectivePartStack_PERSPECTIVE_GRID__REF(context as PerspectiveGrid, reference)
+			return getGridRef(context as PerspectiveGrid, reference)
+		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_BEAN__REF) {
+			return getBeanRef(context as PerspectiveBean, reference)
+		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_DATA_INTERCHANGE__REF) {
+			return getDataRef(context as PerspectiveDataInterchange, reference)
 		}
 		return super.getScope(context, reference)
 	}
-
-	def getScope_CCPerspectivePartStack_PERSPECTIVE_DIALOG__REF(PerspectiveDialog dialogView, EReference reference) {
+	
+	def getDialogRef(PerspectiveDialog dialogView, EReference reference) {
 		val superScope = super.getScope(dialogView, reference)
-		var result = <IEObjectDescription>newArrayList
 		var perspective = dialogView.eContainer
-		while ((perspective != null) && !(perspective instanceof Perspective)) {
+		while ((perspective !== null) && !(perspective instanceof Perspective)) {
 			perspective = perspective.eContainer
 		}
-		if ((perspective as Perspective)?.userTask == null) {
+		if ((perspective as Perspective)?.userTask === null) {
 			return superScope
 		} else {
-			val humanTask = EcoreUtil3.resolve((perspective as Perspective)?.userTask, dialogView.eResource.resourceSet) as BlipUserTask
+			val humanTask = EcoreUtil3.resolve((perspective as Perspective)?.userTask,
+				dialogView.eResource.resourceSet) as BlipUserTask 
 			val operativeDto = humanTask.operativeLDto
-			if (operativeDto?.name == null) {
+			if (operativeDto?.name === null) {
 				return superScope
 			} else {
-				for (element : superScope.allElements) {
-					if (element.EObjectOrProxy instanceof Dialog) {
-						var dialog = element.EObjectOrProxy as Dialog
+				return new FilteringScope(superScope, [
+					if (it.EObjectOrProxy instanceof Dialog) {
+						var dialog = it.EObjectOrProxy as Dialog
 						dialog = EcoreUtil3.resolve(dialog, dialogView.eResource.resourceSet) as Dialog
-						if(dialog.uiView != null) {
-							val uiViewObj = EcoreUtil3.resolve(dialog.uiView as EObject, dialogView.eResource.resourceSet)
+						if (dialog.uiView !== null) {
+							val uiViewObj = EcoreUtil3.resolve(dialog.uiView as EObject,
+								dialogView.eResource.resourceSet)
 							if (uiViewObj instanceof UiIDEView) {
 								val uiView = uiViewObj as UiIDEView
 								for (beanSlot : uiView.beanSlots) {
 									if (operativeDto.name.equals(beanSlot?.jvmType?.type?.simpleName)) {
-										result.add(element)
+										return true
 									}
 								}
 							}
-						} else if(dialog.dto != null) {
+						} else if (dialog.dto !== null) {
 							if (operativeDto.name.equals(dialog.dto.name)) {
-								result.add(element)
+								return true
 							}
 						}
 					}
-				}
+					return false
+				])
 			}
-			return MapBasedScope.createScope(IScope.NULLSCOPE, result)
 		}
 	}
 
-	def getScope_CCPerspectivePartStack_PERSPECTIVE_TABLE__REF(PerspectiveTable tableView, EReference reference) {
+	def getTableRef(PerspectiveTable tableView, EReference reference) {
 		var superScope = super.getScope(tableView, reference)
-		var result = <IEObjectDescription>newArrayList
-		// extract pure table tables
-		for (element : superScope.allElements) {
-			if (element.EObjectOrProxy instanceof Table) {
-				var table = element.EObjectOrProxy as Table
+		val FilteringScope scope = new FilteringScope(superScope, [
+			if (it.EObjectOrProxy instanceof Table) {
+				var table = it.EObjectOrProxy as Table
 				table = EcoreUtil3.resolve(table, tableView.eResource.resourceSet) as Table
-				if (table.tabletype instanceof TableTable) {
-					result.add(element)
-				}
-				else if (table.tabletype instanceof TableGrid) {
-					result.add(element)
-				}
+				return table.tabletype instanceof TableTable
 			}
-		}
-		superScope = MapBasedScope.createScope(IScope.NULLSCOPE, result)
-		result = <IEObjectDescription>newArrayList
-		// check for blip requirements
-		var perspective = tableView.eContainer
-		while ((perspective != null) && !(perspective instanceof Perspective)) {
-			perspective = perspective.eContainer
-		}
-		if ((perspective as Perspective)?.userTask == null) {
-			return superScope
-		} else {
-			// Even not using the return value of this line it is mandatory to initialize lazy loading for bpmn
-			EcoreUtil3.resolve((perspective as Perspective)?.process, tableView.eResource.resourceSet) as Blip
-			val humanTask = EcoreUtil3.resolve((perspective as Perspective)?.userTask, tableView.eResource.resourceSet) as BlipUserTask
-			val operativeDto = humanTask.operativeLDto
-			if (operativeDto?.name == null) {
-				return superScope
-			} else {
-				for (element : superScope.allElements) {
-					if (element.EObjectOrProxy instanceof Table) {
-						var table = element.EObjectOrProxy as Table
-						table = EcoreUtil3.resolve(table, tableView.eResource.resourceSet) as Table
-						if (table.tabletype instanceof TableGrid) {
-							val tableGrid = table.tabletype as TableGrid
-							val tableDtoDatasource = tableGrid?.source
-							val rootTypeDto = tableDtoDatasource?.dtoSource
-							if (operativeDto.name.equals(rootTypeDto.name)) {
-								result.add(element)
-							}
-						} else if (table.tabletype instanceof TableTable) {
-							result.add(element)
-						}
-					}
-				}
-			}
-			return MapBasedScope.createScope(IScope.NULLSCOPE, result)
-		}
+			return false
+		])
+
+		return scope
+		
 	}
 
-	def getScope_CCPerspectivePartStack_PERSPECTIVE_SELECTION__REF(PerspectiveSelection selectionView, EReference reference) {
+	def getBeanRef(PerspectiveBean tableView, EReference reference) {
+		var superScope = super.getScope(tableView, reference)
+		val FilteringScope scope = new FilteringScope(superScope, [
+			if (it.EObjectOrProxy instanceof Table) {
+				var table = it.EObjectOrProxy as Table
+				table = EcoreUtil3.resolve(table, tableView.eResource.resourceSet) as Table
+				return table.tabletype instanceof TableBean
+			}
+			return false
+		])
+
+		return scope
+		
+	}
+
+	def getDataRef(PerspectiveDataInterchange dataView, EReference reference) {
+		var superScope = super.getScope(dataView, reference)
+		val FilteringScope scope = new FilteringScope(superScope, [
+			if (it.EObjectOrProxy instanceof DataInterchangePackage) {
+				return true
+			}
+			return false
+		])
+		return superScope
+	}
+
+	def getSelectionRef(PerspectiveSelection selectionView,
+		EReference reference) {
 		var superScope = super.getScope(selectionView, reference)
-		var result = <IEObjectDescription>newArrayList
-		// extract pure select tables
-		for (element : superScope.allElements) {
-			if (element.EObjectOrProxy instanceof Table) {
-				var table = element.EObjectOrProxy as Table
+		val FilteringScope scope = new FilteringScope(superScope, [
+			if (it.EObjectOrProxy instanceof Table) {
+				var table = it.EObjectOrProxy as Table
 				table = EcoreUtil3.resolve(table, selectionView.eResource.resourceSet) as Table
-				if (table.tabletype instanceof TableSelection) {
-					result.add(element)
-				}
+				return table.tabletype instanceof TableSelection
 			}
-		}
-		superScope = MapBasedScope.createScope(IScope.NULLSCOPE, result)
-		result = <IEObjectDescription>newArrayList
+			return false
+		])
+
+		return scope
+				
+	}
+
+	def getGridRef(PerspectiveGrid gridView, EReference reference) {
+		val superScope = super.getScope(gridView, reference)
+
+		val FilteringScope scope = new FilteringScope(superScope, [
+			if (it.EObjectOrProxy instanceof Table) {
+				var table = it.EObjectOrProxy as Table
+				table = EcoreUtil3.resolve(table, gridView.eResource.resourceSet) as Table
+				return table.tabletype instanceof TableGrid
+			}
+			return false
+		])
+
 		// check for blip requirements
-		var perspective = selectionView.eContainer
-		while ((perspective != null) && !(perspective instanceof Perspective)) {
+		var perspective = gridView.eContainer
+		while ((perspective !== null) && !(perspective instanceof Perspective)) {
 			perspective = perspective.eContainer
 		}
-		if ((perspective as Perspective)?.userTask == null) {
-			return superScope
+		if ((perspective as Perspective)?.userTask === null) {
+			return scope
 		} else {
+
 			// Even not using the return value of this line it is mandatory to initialize lazy loading for bpmn
-			EcoreUtil3.resolve((perspective as Perspective)?.process, selectionView.eResource.resourceSet) as Blip
-			val humanTask = EcoreUtil3.resolve((perspective as Perspective)?.userTask, selectionView.eResource.resourceSet) as BlipUserTask
+			EcoreUtil3.resolve((perspective as Perspective)?.process, gridView.eResource.resourceSet) as Blip
+			val humanTask = EcoreUtil3.resolve((perspective as Perspective)?.userTask,
+				gridView.eResource.resourceSet) as BlipUserTask
 			val operativeDto = humanTask.operativeLDto
-			if (operativeDto?.name == null) {
-				return superScope
+			if (operativeDto?.name === null) {
+				return scope
 			} else {
-				for (element : superScope.allElements) {
-					if (element.EObjectOrProxy instanceof Table) {
-						var table = element.EObjectOrProxy as Table
-						table = EcoreUtil3.resolve(table, selectionView.eResource.resourceSet) as Table
-						if (table.tabletype instanceof TableSelection) {
-							result.add(element)
-						}
+				val FilteringScope scopeBlip = new FilteringScope(superScope, [
+					if (it.EObjectOrProxy instanceof Table) {
+						var table = it.EObjectOrProxy as Table
+						table = EcoreUtil3.resolve(table, gridView.eResource.resourceSet) as Table
+							if (table.tabletype instanceof TableGrid) {
+								val tableGrid = table.tabletype as TableGrid
+								val tableDtoDatasource = tableGrid?.source
+								val rootTypeDto = tableDtoDatasource?.dtoSource
+								return operativeDto.name.equals(rootTypeDto.name)
+							}
 					}
-				}
+					return false
+				])
+				return scopeBlip
 			}
-			return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+
 		}
+		
 	}
 
-	def getScope_CCPerspectivePartStack_PERSPECTIVE_GRID__REF(PerspectiveGrid gridView, EReference reference) {
-		val superScope = super.getScope(gridView, reference)
-		var result = <IEObjectDescription>newArrayList
-		for (element : superScope.allElements) {
-			if (element.EObjectOrProxy instanceof Table) {
-				var table = element.EObjectOrProxy as Table
-				table = EcoreUtil3.resolve(table, gridView.eResource.resourceSet) as Table
-				if (table.tabletype instanceof TableGrid) {
-					result.add(element)
-				}
-			}
-		}
-		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
-	}
-
-	def getScope_CCPerspectivePartStack_USER_TASK(Perspective perspective) {
+	def getUserTask(Perspective perspective) {
 		var result = <IEObjectDescription>newArrayList
 		var blipProcess = perspective.process
-		if (blipProcess != null) {
+		if (blipProcess !== null) {
 			for (item : blipProcess.items) {
 				if (item instanceof BlipUserTask) {
 					result.add(EObjectDescription.create(item.name, item))
@@ -231,7 +222,7 @@
 		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
 	}
 
-	def getScope_CCPerspectivePartStack_selected_element(EObject object) {
+	def getPartStackSelectedElement(EObject object) {
 		var result = <IEObjectDescription>newArrayList
 		if (object instanceof PerspectivePartStack) {
 			var stack = object as PerspectivePartStack
@@ -242,7 +233,7 @@
 		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
 	}
 
-	def getScope_CCPerspectiveSashContainer_selected_element(EObject object) {
+	def getSashContainerSelectedElement(EObject object) {
 		var result = <IEObjectDescription>newArrayList
 		if (object instanceof PerspectiveSashContainer) {
 			var sash = object as PerspectiveSashContainer
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveQualifiedNameProvider.java b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveQualifiedNameProvider.java
index 5346ae4..d0b5d11 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveQualifiedNameProvider.java
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/valueconverter/PerspectiveQualifiedNameProvider.java
@@ -41,13 +41,13 @@
 		if (obj == null) {
 			return QualifiedName.create("");
 		}
-		if (obj instanceof Perspective) {
-			Perspective perspective = (Perspective) obj;
-            if (perspective.getName() == null) {
-            	return null;
-            }
-            return qualifiedNameConverter.toQualifiedName(perspective.getName());
-		}
+//		if (obj instanceof Perspective) {
+//			Perspective perspective = (Perspective) obj;
+//            if (perspective.getName() == null) {
+//            	return null;
+//            }
+//            return qualifiedNameConverter.toQualifiedName(perspective.getName());
+//		}
 		if (obj instanceof PerspectivePartStack) {
 			PerspectivePartStack stack = (PerspectivePartStack) obj;
             if (stack.getElementId() == null) {
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/.gitignore b/org.eclipse.osbp.xtext.perspective/xtend-gen/.gitignore
new file mode 100644
index 0000000..0d48064
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/.gitignore
@@ -0,0 +1,6 @@
+/.PerspectiveDslFormatter.xtendbin
+/.PerspectiveDslJvmModelInferrer.xtendbin
+/.PerspectiveDslScopeProvider.xtendbin
+/.PerspectiveDslValidator.xtendbin
+/.PerspectiveModelDerivedStateComputerx.xtendbin
+/.PerspectiveModelGenerator.xtendbin
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/.gitignore b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/.gitignore
new file mode 100644
index 0000000..5dd47ba
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/.gitignore
@@ -0,0 +1 @@
+/PerspectiveModelDerivedStateComputerx.java
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.java b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.java
index 9b6ccf2..0866946 100644
--- a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.java
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/derivedstate/PerspectiveModelDerivedStateComputerx.java
@@ -16,7 +16,6 @@
 
 import java.util.Arrays;
 import java.util.function.Consumer;
-import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.osbp.xtext.perspective.Perspective;
 import org.eclipse.osbp.xtext.perspective.PerspectiveElement;
@@ -31,33 +30,29 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@SuppressWarnings("all")
+@SuppressWarnings("restriction")
 public class PerspectiveModelDerivedStateComputerx extends JvmModelAssociator {
   private final static Logger log = LoggerFactory.getLogger(PerspectiveModelDerivedStateComputerx.class);
   
   private DerivedStateAwareResource resource;
   
+  @Override
   public void installDerivedState(final DerivedStateAwareResource resource, final boolean preLinkingPhase) {
     PerspectiveModelDerivedStateComputerx.log.debug("PerspectiveModelDerivedStateComputerx called");
     super.installDerivedState(resource, preLinkingPhase);
     this.resource = resource;
-    EList<EObject> _contents = resource.getContents();
-    boolean _isEmpty = _contents.isEmpty();
+    boolean _isEmpty = resource.getContents().isEmpty();
     if (_isEmpty) {
       return;
     }
     if ((!preLinkingPhase)) {
-      EList<EObject> _contents_1 = resource.getContents();
-      EObject _get = _contents_1.get(0);
+      EObject _get = resource.getContents().get(0);
       final PerspectiveModel eObject = ((PerspectiveModel) _get);
       try {
-        EList<EObject> _eContents = eObject.eContents();
-        final Consumer<EObject> _function = new Consumer<EObject>() {
-          public void accept(final EObject it) {
-            PerspectiveModelDerivedStateComputerx.this.map(it);
-          }
+        final Consumer<EObject> _function = (EObject it) -> {
+          this.map(it);
         };
-        _eContents.forEach(_function);
+        eObject.eContents().forEach(_function);
       } catch (final Throwable _t) {
         if (_t instanceof Exception) {
           final Exception ex = (Exception)_t;
@@ -71,46 +66,34 @@
   
   protected void _map(final PerspectivePackage object) {
     PerspectiveModelDerivedStateComputerx.log.debug("CCPerspectivePackage");
-    EList<Perspective> _perspectives = object.getPerspectives();
-    final Consumer<Perspective> _function = new Consumer<Perspective>() {
-      public void accept(final Perspective it) {
-        PerspectiveModelDerivedStateComputerx.this.map(it);
-      }
+    final Consumer<Perspective> _function = (Perspective it) -> {
+      this.map(it);
     };
-    _perspectives.forEach(_function);
+    object.getPerspectives().forEach(_function);
   }
   
   protected void _map(final Perspective object) {
     PerspectiveModelDerivedStateComputerx.log.debug("CCPerspective");
-    EList<PerspectiveElement> _elements = object.getElements();
-    final Consumer<PerspectiveElement> _function = new Consumer<PerspectiveElement>() {
-      public void accept(final PerspectiveElement it) {
-        PerspectiveModelDerivedStateComputerx.this.map(it);
-      }
+    final Consumer<PerspectiveElement> _function = (PerspectiveElement it) -> {
+      this.map(it);
     };
-    _elements.forEach(_function);
+    object.getElements().forEach(_function);
   }
   
   protected void _map(final PerspectiveSashContainer object) {
     PerspectiveModelDerivedStateComputerx.log.debug("CCPerspectiveSashContainer");
-    EList<PerspectiveElement> _elements = object.getElements();
-    final Consumer<PerspectiveElement> _function = new Consumer<PerspectiveElement>() {
-      public void accept(final PerspectiveElement it) {
-        PerspectiveModelDerivedStateComputerx.this.map(it);
-      }
+    final Consumer<PerspectiveElement> _function = (PerspectiveElement it) -> {
+      this.map(it);
     };
-    _elements.forEach(_function);
+    object.getElements().forEach(_function);
   }
   
   protected void _map(final PerspectivePartStack object) {
     PerspectiveModelDerivedStateComputerx.log.debug("CCPerspectivePartStack");
-    EList<PerspectiveElement> _elements = object.getElements();
-    final Consumer<PerspectiveElement> _function = new Consumer<PerspectiveElement>() {
-      public void accept(final PerspectiveElement it) {
-        PerspectiveModelDerivedStateComputerx.this.map(it);
-      }
+    final Consumer<PerspectiveElement> _function = (PerspectiveElement it) -> {
+      this.map(it);
     };
-    _elements.forEach(_function);
+    object.getElements().forEach(_function);
   }
   
   protected void _map(final PerspectivePart object) {
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/.gitignore b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/.gitignore
new file mode 100644
index 0000000..4c26187
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/.gitignore
@@ -0,0 +1 @@
+/PerspectiveDslFormatter.java
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.java b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.java
index a5ff602..fedaf9c 100644
--- a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.java
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/formatting/PerspectiveDslFormatter.java
@@ -15,11 +15,10 @@
 package org.eclipse.osbp.xtext.perspective.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 PerspectiveDslFormatter 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, "Perspective", "PerspectiveImport");
+    genericFormatter.formatFirstLevelBlocks(c, this.grammar.getGrammar(), "Perspective");
     genericFormatter.genericFormatting(c, this.grammar, this.grammarAccess);
   }
 }
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/.gitignore b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/.gitignore
new file mode 100644
index 0000000..a1613ec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/.gitignore
@@ -0,0 +1,2 @@
+/PerspectiveDslJvmModelInferrer.java
+/PerspectiveModelGenerator.java
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.java b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.java
index dd08ca7..e05e84f 100644
--- a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.java
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/jvmmodel/PerspectiveModelGenerator.java
@@ -34,8 +34,6 @@
 import org.eclipse.osbp.runtime.web.vaadin.databinding.VaadinObservables;
 import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
 import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
-import org.eclipse.xtext.common.types.JvmType;
-import org.eclipse.xtext.common.types.JvmTypeReference;
 import org.eclipse.xtext.generator.IFileSystemAccess;
 import org.eclipse.xtext.xbase.compiler.GeneratorConfig;
 import org.eclipse.xtext.xbase.compiler.ImportManager;
@@ -51,31 +49,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.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, ArrayList.class, IEventBroker.class, EventUtils.class, EventBrokerMsg.class, EventHandler.class, Logger.class, LoggerFactory.class, UI.class, VaadinObservables.class, DataBindingContext.class, BeansObservables.class, ResourceBundle.class, Locale.class, UpdateValueStrategy.class, ITranslator.class);
       _xblockexpression = super.createAppendable(context, importManager, config);
     }
     return _xblockexpression;
   }
   
+  @Override
   public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
     this.addTranslatables("PerspectiveNA");
     super.doGenerate(resource, fsa);
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/scoping/.gitignore b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/scoping/.gitignore
new file mode 100644
index 0000000..2051d7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/scoping/.gitignore
@@ -0,0 +1 @@
+/PerspectiveDslScopeProvider.java
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/.gitignore b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/.gitignore
new file mode 100644
index 0000000..5360f25
--- /dev/null
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/.gitignore
@@ -0,0 +1 @@
+/PerspectiveDslValidator.java
diff --git a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.java b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.java
index 9bfcc92..7296d54 100644
--- a/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.java
+++ b/org.eclipse.osbp.xtext.perspective/xtend-gen/org/eclipse/osbp/xtext/perspective/validation/PerspectiveDslValidator.java
@@ -23,7 +23,6 @@
 import org.eclipse.xtend2.lib.StringConcatenation;
 import org.eclipse.xtext.validation.Check;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
 
 /**
  * Custom validation rules.
@@ -37,11 +36,9 @@
     Blip _process = pers.getProcess();
     boolean _notEquals = (!Objects.equal(_process, null));
     if (_notEquals) {
-      BundleContext _context = Activator.getContext();
-      Bundle[] _bundles = _context.getBundles();
+      Bundle[] _bundles = Activator.getContext().getBundles();
       for (final Bundle b : _bundles) {
-        String _symbolicName = b.getSymbolicName();
-        boolean _equals = _symbolicName.equals("net.osbee.bpm");
+        boolean _equals = b.getSymbolicName().equals("net.osbee.bpm");
         if (_equals) {
           return;
         }
diff --git a/pom.xml b/pom.xml
index fa23f16..7c2596d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,7 @@
 
 	<modules>
 		<module>org.eclipse.osbp.xtext.perspective</module>
+		<module>org.eclipse.osbp.xtext.perspective.ide</module>
 		<module>org.eclipse.osbp.xtext.perspective.ui</module>
 		<module>org.eclipse.osbp.xtext.perspective.tests</module>
 		<module>org.eclipse.osbp.xtext.perspective.feature</module>
@@ -94,4 +95,13 @@
 			</plugins>
 		</pluginManagement>
 	</build>
+    <dependencies>
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>
+				org.eclipse.osbp.dependencies.bundle.activemq.all.osgi
+			</artifactId>
+			<version>5.14.5-SNAPSHOT</version>
+		</dependency>
+    </dependencies>
 </project>