catch up with branch daily

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
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
index 3d9aba7..7cfb71e 100644
--- 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
@@ -101,6 +101,7 @@
 					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.getPerspectiveAccess().getGroup_8(), "rule__Perspective__Group_8__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");
@@ -115,6 +116,8 @@
 					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.getPerspectiveEventManagerAccess().getGroup(), "rule__PerspectiveEventManager__Group__0");
+					put(grammarAccess.getPerspectiveEventAccess().getGroup(), "rule__PerspectiveEvent__Group__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");
@@ -132,6 +135,7 @@
 					put(grammarAccess.getPerspectiveDataInterchangeAccess().getGroup(), "rule__PerspectiveDataInterchange__Group__0");
 					put(grammarAccess.getPerspectiveTitleAccess().getGroup(), "rule__PerspectiveTitle__Group__0");
 					put(grammarAccess.getPerspectiveDashboardAccess().getGroup(), "rule__PerspectiveDashboard__Group__0");
+					put(grammarAccess.getPerspectiveBrowserAccess().getGroup(), "rule__PerspectiveBrowser__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");
@@ -345,6 +349,7 @@
 					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.getPerspectiveAccess().getEventmanagerAssignment_8_1(), "rule__Perspective__EventmanagerAssignment_8_1");
 					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");
@@ -362,6 +367,10 @@
 					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.getPerspectiveEventManagerAccess().getNameAssignment_1(), "rule__PerspectiveEventManager__NameAssignment_1");
+					put(grammarAccess.getPerspectiveEventManagerAccess().getEventsAssignment_3(), "rule__PerspectiveEventManager__EventsAssignment_3");
+					put(grammarAccess.getPerspectiveEventAccess().getTargetAssignment_2(), "rule__PerspectiveEvent__TargetAssignment_2");
+					put(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesAssignment_5(), "rule__PerspectiveEvent__AllowedsourcesAssignment_5");
 					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");
@@ -379,6 +388,7 @@
 					put(grammarAccess.getPerspectiveDataInterchangeAccess().getRefAssignment_2(), "rule__PerspectiveDataInterchange__RefAssignment_2");
 					put(grammarAccess.getPerspectiveTitleAccess().getHtmlNameAssignment_2(), "rule__PerspectiveTitle__HtmlNameAssignment_2");
 					put(grammarAccess.getPerspectiveDashboardAccess().getNameAssignment_2(), "rule__PerspectiveDashboard__NameAssignment_2");
+					put(grammarAccess.getPerspectiveBrowserAccess().getUrlAssignment_3(), "rule__PerspectiveBrowser__UrlAssignment_3");
 					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");
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
index 2acdf1f..a62043d 100644
--- 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
@@ -240,6 +240,56 @@
 	restoreStackSize(stackSize);
 }
 
+// Entry rule entryRulePerspectiveEventManager
+entryRulePerspectiveEventManager
+:
+{ before(grammarAccess.getPerspectiveEventManagerRule()); }
+	 rulePerspectiveEventManager
+{ after(grammarAccess.getPerspectiveEventManagerRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveEventManager
+rulePerspectiveEventManager 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveEventManagerAccess().getGroup()); }
+		(rule__PerspectiveEventManager__Group__0)
+		{ after(grammarAccess.getPerspectiveEventManagerAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePerspectiveEvent
+entryRulePerspectiveEvent
+:
+{ before(grammarAccess.getPerspectiveEventRule()); }
+	 rulePerspectiveEvent
+{ after(grammarAccess.getPerspectiveEventRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveEvent
+rulePerspectiveEvent 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveEventAccess().getGroup()); }
+		(rule__PerspectiveEvent__Group__0)
+		{ after(grammarAccess.getPerspectiveEventAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 // Entry rule entryRulePerspectiveView
 entryRulePerspectiveView
 :
@@ -640,6 +690,31 @@
 	restoreStackSize(stackSize);
 }
 
+// Entry rule entryRulePerspectiveBrowser
+entryRulePerspectiveBrowser
+:
+{ before(grammarAccess.getPerspectiveBrowserRule()); }
+	 rulePerspectiveBrowser
+{ after(grammarAccess.getPerspectiveBrowserRule()); } 
+	 EOF 
+;
+
+// Rule PerspectiveBrowser
+rulePerspectiveBrowser 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPerspectiveBrowserAccess().getGroup()); }
+		(rule__PerspectiveBrowser__Group__0)
+		{ after(grammarAccess.getPerspectiveBrowserAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 // Entry rule entryRuleTRANSLATABLEID
 entryRuleTRANSLATABLEID
 :
@@ -2874,6 +2949,12 @@
 		rulePerspectiveDashboard
 		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveDashboardParserRuleCall_14()); }
 	)
+	|
+	(
+		{ before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBrowserParserRuleCall_15()); }
+		rulePerspectiveBrowser
+		{ after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBrowserParserRuleCall_15()); }
+	)
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -4532,6 +4613,7 @@
 	}
 :
 	rule__Perspective__Group__8__Impl
+	rule__Perspective__Group__9
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -4543,9 +4625,35 @@
 	}
 :
 (
-	{ before(grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8()); }
+	{ before(grammarAccess.getPerspectiveAccess().getGroup_8()); }
+	(rule__Perspective__Group_8__0)?
+	{ after(grammarAccess.getPerspectiveAccess().getGroup_8()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__9
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group__9__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_9()); }
 	'}'
-	{ after(grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_8()); }
+	{ after(grammarAccess.getPerspectiveAccess().getRightCurlyBracketKeyword_9()); }
 )
 ;
 finally {
@@ -4877,6 +4985,60 @@
 }
 
 
+rule__Perspective__Group_8__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_8__0__Impl
+	rule__Perspective__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_8__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getEventManagerKeyword_8_0()); }
+	'eventManager'
+	{ after(grammarAccess.getPerspectiveAccess().getEventManagerKeyword_8_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_8__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Perspective__Group_8__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Perspective__Group_8__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveAccess().getEventmanagerAssignment_8_1()); }
+	(rule__Perspective__EventmanagerAssignment_8_1)
+	{ after(grammarAccess.getPerspectiveAccess().getEventmanagerAssignment_8_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
 rule__PerspectiveSashContainer__Group__0
 	@init {
 		int stackSize = keepStackSize();
@@ -5957,6 +6119,330 @@
 }
 
 
+rule__PerspectiveEventManager__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEventManager__Group__0__Impl
+	rule__PerspectiveEventManager__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventManagerAccess().getPerspectiveEventManagerAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveEventManagerAccess().getPerspectiveEventManagerAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEventManager__Group__1__Impl
+	rule__PerspectiveEventManager__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventManagerAccess().getNameAssignment_1()); }
+	(rule__PerspectiveEventManager__NameAssignment_1)
+	{ after(grammarAccess.getPerspectiveEventManagerAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEventManager__Group__2__Impl
+	rule__PerspectiveEventManager__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventManagerAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getPerspectiveEventManagerAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEventManager__Group__3__Impl
+	rule__PerspectiveEventManager__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventManagerAccess().getEventsAssignment_3()); }
+	(rule__PerspectiveEventManager__EventsAssignment_3)*
+	{ after(grammarAccess.getPerspectiveEventManagerAccess().getEventsAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEventManager__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventManagerAccess().getRightCurlyBracketKeyword_4()); }
+	'}'
+	{ after(grammarAccess.getPerspectiveEventManagerAccess().getRightCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectiveEvent__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEvent__Group__0__Impl
+	rule__PerspectiveEvent__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventAccess().getPerspectiveEventAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveEventAccess().getPerspectiveEventAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEvent__Group__1__Impl
+	rule__PerspectiveEvent__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventAccess().getTargetPartKeyword_1()); }
+	'targetPart'
+	{ after(grammarAccess.getPerspectiveEventAccess().getTargetPartKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEvent__Group__2__Impl
+	rule__PerspectiveEvent__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventAccess().getTargetAssignment_2()); }
+	(rule__PerspectiveEvent__TargetAssignment_2)
+	{ after(grammarAccess.getPerspectiveEventAccess().getTargetAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEvent__Group__3__Impl
+	rule__PerspectiveEvent__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventAccess().getAllowedSourcesKeyword_3()); }
+	'allowedSources'
+	{ after(grammarAccess.getPerspectiveEventAccess().getAllowedSourcesKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEvent__Group__4__Impl
+	rule__PerspectiveEvent__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventAccess().getLeftCurlyBracketKeyword_4()); }
+	'{'
+	{ after(grammarAccess.getPerspectiveEventAccess().getLeftCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEvent__Group__5__Impl
+	rule__PerspectiveEvent__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesAssignment_5()); }
+	(rule__PerspectiveEvent__AllowedsourcesAssignment_5)*
+	{ after(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveEvent__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveEventAccess().getRightCurlyBracketKeyword_6()); }
+	'}'
+	{ after(grammarAccess.getPerspectiveEventAccess().getRightCurlyBracketKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
 rule__PerspectiveSelection__Group__0
 	@init {
 		int stackSize = keepStackSize();
@@ -7415,6 +7901,114 @@
 }
 
 
+rule__PerspectiveBrowser__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBrowser__Group__0__Impl
+	rule__PerspectiveBrowser__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBrowser__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBrowserAccess().getPerspectiveBrowserAction_0()); }
+	()
+	{ after(grammarAccess.getPerspectiveBrowserAccess().getPerspectiveBrowserAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBrowser__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBrowser__Group__1__Impl
+	rule__PerspectiveBrowser__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBrowser__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBrowserAccess().getBrowserKeyword_1()); }
+	'browser'
+	{ after(grammarAccess.getPerspectiveBrowserAccess().getBrowserKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBrowser__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBrowser__Group__2__Impl
+	rule__PerspectiveBrowser__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBrowser__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBrowserAccess().getUrlKeyword_2()); }
+	'url'
+	{ after(grammarAccess.getPerspectiveBrowserAccess().getUrlKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBrowser__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectiveBrowser__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveBrowser__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectiveBrowserAccess().getUrlAssignment_3()); }
+	(rule__PerspectiveBrowser__UrlAssignment_3)
+	{ after(grammarAccess.getPerspectiveBrowserAccess().getUrlAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
 rule__XImportDeclaration__Group__0
 	@init {
 		int stackSize = keepStackSize();
@@ -21150,6 +21744,21 @@
 	restoreStackSize(stackSize);
 }
 
+rule__Perspective__EventmanagerAssignment_8_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveAccess().getEventmanagerPerspectiveEventManagerParserRuleCall_8_1_0()); }
+		rulePerspectiveEventManager
+		{ after(grammarAccess.getPerspectiveAccess().getEventmanagerPerspectiveEventManagerParserRuleCall_8_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__PerspectiveSashContainer__ElementIdAssignment_2
 	@init {
 		int stackSize = keepStackSize();
@@ -21417,6 +22026,74 @@
 	restoreStackSize(stackSize);
 }
 
+rule__PerspectiveEventManager__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveEventManagerAccess().getNameIDTerminalRuleCall_1_0()); }
+		RULE_ID
+		{ after(grammarAccess.getPerspectiveEventManagerAccess().getNameIDTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEventManager__EventsAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveEventManagerAccess().getEventsPerspectiveEventParserRuleCall_3_0()); }
+		rulePerspectiveEvent
+		{ after(grammarAccess.getPerspectiveEventManagerAccess().getEventsPerspectiveEventParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__TargetAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveEventAccess().getTargetPerspectivePartCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveEventAccess().getTargetPerspectivePartIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveEventAccess().getTargetPerspectivePartIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveEventAccess().getTargetPerspectivePartCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectiveEvent__AllowedsourcesAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesPerspectivePartCrossReference_5_0()); }
+		(
+			{ before(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesPerspectivePartIDTerminalRuleCall_5_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesPerspectivePartIDTerminalRuleCall_5_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesPerspectivePartCrossReference_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__PerspectiveSelection__RefAssignment_2
 	@init {
 		int stackSize = keepStackSize();
@@ -21724,6 +22401,21 @@
 	restoreStackSize(stackSize);
 }
 
+rule__PerspectiveBrowser__UrlAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectiveBrowserAccess().getUrlSTRINGTerminalRuleCall_3_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectiveBrowserAccess().getUrlSTRINGTerminalRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__XImportDeclaration__StaticAssignment_2_0_0
 	@init {
 		int stackSize = keepStackSize();
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
index f4954cb..26c022a 100644
--- 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
@@ -1,20 +1,20 @@
 '!'=40
 '!='=22
 '!=='=24
-'#'=95
+'#'=100
 '%'=39
 '%='=20
 '&&'=15
-'&'=118
-'('=91
-')'=92
+'&'=123
+'('=96
+')'=97
 '*'=36
 '**'=37
 '*='=18
 '+'=34
 '++'=41
 '+='=16
-','=93
+','=98
 '-'=35
 '--'=42
 '-='=17
@@ -24,9 +24,9 @@
 '..<'=29
 '/'=38
 '/='=19
-':'=102
-'::'=122
-';'=89
+':'=107
+'::'=127
+';'=94
 '<'=27
 '<>'=32
 '='=13
@@ -35,81 +35,86 @@
 '=>'=31
 '>'=26
 '>='=25
-'?'=117
-'?.'=123
+'?'=122
+'?.'=128
 '?:'=33
-'@'=90
-'['=96
-']'=94
+'@'=95
+'['=101
+']'=99
 'accessibility'=60
-'as'=98
-'bpmn'=77
-'card'=80
-'case'=104
-'catch'=116
-'chart'=72
-'dataInterchange'=86
-'default'=103
-'depth'=84
-'describedBy'=119
-'dialog'=76
-'do'=107
-'editableTable'=71
-'else'=100
+'allowedSources'=71
+'as'=103
+'bpmn'=80
+'browser'=92
+'card'=83
+'case'=109
+'catch'=121
+'chart'=75
+'dataInterchange'=89
+'default'=108
+'depth'=87
+'describedBy'=124
+'dialog'=79
+'do'=112
+'editableTable'=74
+'else'=105
+'eventManager'=62
 'extends'=45
 'extension'=48
 'false'=50
-'filterColumns'=85
-'finally'=114
-'for'=105
+'filterColumns'=88
+'finally'=119
+'for'=110
 'horizontal'=51
 'iconURI'=59
-'if'=99
+'if'=104
 'import'=47
-'in'=83
-'instanceof'=97
-'isClosable'=120
-'kanban'=78
-'name'=88
-'new'=108
-'ns'=121
-'null'=109
-'of'=79
-'organigram'=74
-'orientation'=63
+'in'=86
+'instanceof'=102
+'isClosable'=125
+'kanban'=81
+'name'=91
+'new'=113
+'ns'=126
+'null'=114
+'of'=82
+'organigram'=77
+'orientation'=64
 'package'=53
-'part'=67
-'partStack'=66
+'part'=68
+'partStack'=67
 'perspective'=56
 'process'=57
-'readOnlyTable'=70
-'report'=73
-'return'=112
-'sashContainer'=62
-'search'=82
-'select'=69
-'selectedElement'=64
-'spaceVolume'=65
+'readOnlyTable'=73
+'report'=76
+'return'=117
+'sashContainer'=63
+'search'=85
+'select'=72
+'selectedElement'=65
+'spaceVolume'=66
 'static'=46
 'super'=49
-'switch'=101
-'synchronized'=115
-'throw'=111
-'title'=87
+'switch'=106
+'synchronized'=120
+'targetPart'=70
+'throw'=116
+'title'=90
 'toolbar'=61
-'topology'=75
-'true'=126
-'try'=113
-'typeof'=110
+'topology'=78
+'true'=131
+'try'=118
+'typeof'=115
+'url'=93
 'usertask'=58
 'val'=44
-'var'=125
+'var'=130
 'vertical'=52
-'view'=68
-'welcome'=81
-'while'=106
+'view'=69
+'welcome'=84
+'while'=111
 '{'=54
-'|'=124
+'|'=129
 '||'=14
 '}'=55
 RULE_ANY_OTHER=12
@@ -148,6 +153,11 @@
 T__124=124
 T__125=125
 T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__131=131
 T__13=13
 T__14=14
 T__15=15
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
index 6723ba0..51b2497 100644
--- 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
@@ -26,10 +26,13 @@
     public static final int T__60=60;
     public static final int T__61=61;
     public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__130=130;
     public static final int RULE_INT=7;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=9;
     public static final int T__67=67;
+    public static final int T__129=129;
     public static final int T__68=68;
     public static final int T__69=69;
     public static final int T__62=62;
@@ -37,7 +40,9 @@
     public static final int T__63=63;
     public static final int T__125=125;
     public static final int T__64=64;
+    public static final int T__128=128;
     public static final int T__65=65;
+    public static final int T__127=127;
     public static final int T__37=37;
     public static final int T__38=38;
     public static final int T__39=39;
@@ -1172,10 +1177,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:60:7: ( 'sashContainer' )
-            // InternalPerspectiveDsl.g:60:9: 'sashContainer'
+            // InternalPerspectiveDsl.g:60:7: ( 'eventManager' )
+            // InternalPerspectiveDsl.g:60:9: 'eventManager'
             {
-            match("sashContainer"); 
+            match("eventManager"); 
 
 
             }
@@ -1193,10 +1198,10 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:61:7: ( 'orientation' )
-            // InternalPerspectiveDsl.g:61:9: 'orientation'
+            // InternalPerspectiveDsl.g:61:7: ( 'sashContainer' )
+            // InternalPerspectiveDsl.g:61:9: 'sashContainer'
             {
-            match("orientation"); 
+            match("sashContainer"); 
 
 
             }
@@ -1214,10 +1219,10 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:62:7: ( 'selectedElement' )
-            // InternalPerspectiveDsl.g:62:9: 'selectedElement'
+            // InternalPerspectiveDsl.g:62:7: ( 'orientation' )
+            // InternalPerspectiveDsl.g:62:9: 'orientation'
             {
-            match("selectedElement"); 
+            match("orientation"); 
 
 
             }
@@ -1235,10 +1240,10 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:63:7: ( 'spaceVolume' )
-            // InternalPerspectiveDsl.g:63:9: 'spaceVolume'
+            // InternalPerspectiveDsl.g:63:7: ( 'selectedElement' )
+            // InternalPerspectiveDsl.g:63:9: 'selectedElement'
             {
-            match("spaceVolume"); 
+            match("selectedElement"); 
 
 
             }
@@ -1256,10 +1261,10 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:64:7: ( 'partStack' )
-            // InternalPerspectiveDsl.g:64:9: 'partStack'
+            // InternalPerspectiveDsl.g:64:7: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:64:9: 'spaceVolume'
             {
-            match("partStack"); 
+            match("spaceVolume"); 
 
 
             }
@@ -1277,10 +1282,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:65:7: ( 'part' )
-            // InternalPerspectiveDsl.g:65:9: 'part'
+            // InternalPerspectiveDsl.g:65:7: ( 'partStack' )
+            // InternalPerspectiveDsl.g:65:9: 'partStack'
             {
-            match("part"); 
+            match("partStack"); 
 
 
             }
@@ -1298,10 +1303,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:66:7: ( 'view' )
-            // InternalPerspectiveDsl.g:66:9: 'view'
+            // InternalPerspectiveDsl.g:66:7: ( 'part' )
+            // InternalPerspectiveDsl.g:66:9: 'part'
             {
-            match("view"); 
+            match("part"); 
 
 
             }
@@ -1319,10 +1324,10 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:67:7: ( 'select' )
-            // InternalPerspectiveDsl.g:67:9: 'select'
+            // InternalPerspectiveDsl.g:67:7: ( 'view' )
+            // InternalPerspectiveDsl.g:67:9: 'view'
             {
-            match("select"); 
+            match("view"); 
 
 
             }
@@ -1340,10 +1345,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:68:7: ( 'readOnlyTable' )
-            // InternalPerspectiveDsl.g:68:9: 'readOnlyTable'
+            // InternalPerspectiveDsl.g:68:7: ( 'targetPart' )
+            // InternalPerspectiveDsl.g:68:9: 'targetPart'
             {
-            match("readOnlyTable"); 
+            match("targetPart"); 
 
 
             }
@@ -1361,10 +1366,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:69:7: ( 'editableTable' )
-            // InternalPerspectiveDsl.g:69:9: 'editableTable'
+            // InternalPerspectiveDsl.g:69:7: ( 'allowedSources' )
+            // InternalPerspectiveDsl.g:69:9: 'allowedSources'
             {
-            match("editableTable"); 
+            match("allowedSources"); 
 
 
             }
@@ -1382,10 +1387,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:70:7: ( 'chart' )
-            // InternalPerspectiveDsl.g:70:9: 'chart'
+            // InternalPerspectiveDsl.g:70:7: ( 'select' )
+            // InternalPerspectiveDsl.g:70:9: 'select'
             {
-            match("chart"); 
+            match("select"); 
 
 
             }
@@ -1403,10 +1408,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:71:7: ( 'report' )
-            // InternalPerspectiveDsl.g:71:9: 'report'
+            // InternalPerspectiveDsl.g:71:7: ( 'readOnlyTable' )
+            // InternalPerspectiveDsl.g:71:9: 'readOnlyTable'
             {
-            match("report"); 
+            match("readOnlyTable"); 
 
 
             }
@@ -1424,10 +1429,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:72:7: ( 'organigram' )
-            // InternalPerspectiveDsl.g:72:9: 'organigram'
+            // InternalPerspectiveDsl.g:72:7: ( 'editableTable' )
+            // InternalPerspectiveDsl.g:72:9: 'editableTable'
             {
-            match("organigram"); 
+            match("editableTable"); 
 
 
             }
@@ -1445,10 +1450,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:73:7: ( 'topology' )
-            // InternalPerspectiveDsl.g:73:9: 'topology'
+            // InternalPerspectiveDsl.g:73:7: ( 'chart' )
+            // InternalPerspectiveDsl.g:73:9: 'chart'
             {
-            match("topology"); 
+            match("chart"); 
 
 
             }
@@ -1466,10 +1471,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:74:7: ( 'dialog' )
-            // InternalPerspectiveDsl.g:74:9: 'dialog'
+            // InternalPerspectiveDsl.g:74:7: ( 'report' )
+            // InternalPerspectiveDsl.g:74:9: 'report'
             {
-            match("dialog"); 
+            match("report"); 
 
 
             }
@@ -1487,10 +1492,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:75:7: ( 'bpmn' )
-            // InternalPerspectiveDsl.g:75:9: 'bpmn'
+            // InternalPerspectiveDsl.g:75:7: ( 'organigram' )
+            // InternalPerspectiveDsl.g:75:9: 'organigram'
             {
-            match("bpmn"); 
+            match("organigram"); 
 
 
             }
@@ -1508,10 +1513,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:76:7: ( 'kanban' )
-            // InternalPerspectiveDsl.g:76:9: 'kanban'
+            // InternalPerspectiveDsl.g:76:7: ( 'topology' )
+            // InternalPerspectiveDsl.g:76:9: 'topology'
             {
-            match("kanban"); 
+            match("topology"); 
 
 
             }
@@ -1529,10 +1534,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:77:7: ( 'of' )
-            // InternalPerspectiveDsl.g:77:9: 'of'
+            // InternalPerspectiveDsl.g:77:7: ( 'dialog' )
+            // InternalPerspectiveDsl.g:77:9: 'dialog'
             {
-            match("of"); 
+            match("dialog"); 
 
 
             }
@@ -1550,10 +1555,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:78:7: ( 'card' )
-            // InternalPerspectiveDsl.g:78:9: 'card'
+            // InternalPerspectiveDsl.g:78:7: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:78:9: 'bpmn'
             {
-            match("card"); 
+            match("bpmn"); 
 
 
             }
@@ -1571,10 +1576,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:79:7: ( 'welcome' )
-            // InternalPerspectiveDsl.g:79:9: 'welcome'
+            // InternalPerspectiveDsl.g:79:7: ( 'kanban' )
+            // InternalPerspectiveDsl.g:79:9: 'kanban'
             {
-            match("welcome"); 
+            match("kanban"); 
 
 
             }
@@ -1592,10 +1597,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:80:7: ( 'search' )
-            // InternalPerspectiveDsl.g:80:9: 'search'
+            // InternalPerspectiveDsl.g:80:7: ( 'of' )
+            // InternalPerspectiveDsl.g:80:9: 'of'
             {
-            match("search"); 
+            match("of"); 
 
 
             }
@@ -1613,10 +1618,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:81:7: ( 'in' )
-            // InternalPerspectiveDsl.g:81:9: 'in'
+            // InternalPerspectiveDsl.g:81:7: ( 'card' )
+            // InternalPerspectiveDsl.g:81:9: 'card'
             {
-            match("in"); 
+            match("card"); 
 
 
             }
@@ -1634,10 +1639,10 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:82:7: ( 'depth' )
-            // InternalPerspectiveDsl.g:82:9: 'depth'
+            // InternalPerspectiveDsl.g:82:7: ( 'welcome' )
+            // InternalPerspectiveDsl.g:82:9: 'welcome'
             {
-            match("depth"); 
+            match("welcome"); 
 
 
             }
@@ -1655,10 +1660,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:83:7: ( 'filterColumns' )
-            // InternalPerspectiveDsl.g:83:9: 'filterColumns'
+            // InternalPerspectiveDsl.g:83:7: ( 'search' )
+            // InternalPerspectiveDsl.g:83:9: 'search'
             {
-            match("filterColumns"); 
+            match("search"); 
 
 
             }
@@ -1676,10 +1681,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:84:7: ( 'dataInterchange' )
-            // InternalPerspectiveDsl.g:84:9: 'dataInterchange'
+            // InternalPerspectiveDsl.g:84:7: ( 'in' )
+            // InternalPerspectiveDsl.g:84:9: 'in'
             {
-            match("dataInterchange"); 
+            match("in"); 
 
 
             }
@@ -1697,10 +1702,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:85:7: ( 'title' )
-            // InternalPerspectiveDsl.g:85:9: 'title'
+            // InternalPerspectiveDsl.g:85:7: ( 'depth' )
+            // InternalPerspectiveDsl.g:85:9: 'depth'
             {
-            match("title"); 
+            match("depth"); 
 
 
             }
@@ -1718,10 +1723,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:86:7: ( 'name' )
-            // InternalPerspectiveDsl.g:86:9: 'name'
+            // InternalPerspectiveDsl.g:86:7: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:86:9: 'filterColumns'
             {
-            match("name"); 
+            match("filterColumns"); 
 
 
             }
@@ -1739,10 +1744,11 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:87:7: ( ';' )
-            // InternalPerspectiveDsl.g:87:9: ';'
+            // InternalPerspectiveDsl.g:87:7: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:87:9: 'dataInterchange'
             {
-            match(';'); 
+            match("dataInterchange"); 
+
 
             }
 
@@ -1759,10 +1765,11 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:88:7: ( '@' )
-            // InternalPerspectiveDsl.g:88:9: '@'
+            // InternalPerspectiveDsl.g:88:7: ( 'title' )
+            // InternalPerspectiveDsl.g:88:9: 'title'
             {
-            match('@'); 
+            match("title"); 
+
 
             }
 
@@ -1779,10 +1786,11 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:89:7: ( '(' )
-            // InternalPerspectiveDsl.g:89:9: '('
+            // InternalPerspectiveDsl.g:89:7: ( 'name' )
+            // InternalPerspectiveDsl.g:89:9: 'name'
             {
-            match('('); 
+            match("name"); 
+
 
             }
 
@@ -1799,10 +1807,11 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:90:7: ( ')' )
-            // InternalPerspectiveDsl.g:90:9: ')'
+            // InternalPerspectiveDsl.g:90:7: ( 'browser' )
+            // InternalPerspectiveDsl.g:90:9: 'browser'
             {
-            match(')'); 
+            match("browser"); 
+
 
             }
 
@@ -1819,10 +1828,11 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:91:7: ( ',' )
-            // InternalPerspectiveDsl.g:91:9: ','
+            // InternalPerspectiveDsl.g:91:7: ( 'url' )
+            // InternalPerspectiveDsl.g:91:9: 'url'
             {
-            match(','); 
+            match("url"); 
+
 
             }
 
@@ -1839,10 +1849,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:92:7: ( ']' )
-            // InternalPerspectiveDsl.g:92:9: ']'
+            // InternalPerspectiveDsl.g:92:7: ( ';' )
+            // InternalPerspectiveDsl.g:92:9: ';'
             {
-            match(']'); 
+            match(';'); 
 
             }
 
@@ -1859,10 +1869,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:93:7: ( '#' )
-            // InternalPerspectiveDsl.g:93:9: '#'
+            // InternalPerspectiveDsl.g:93:7: ( '@' )
+            // InternalPerspectiveDsl.g:93:9: '@'
             {
-            match('#'); 
+            match('@'); 
 
             }
 
@@ -1879,10 +1889,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:94:7: ( '[' )
-            // InternalPerspectiveDsl.g:94:9: '['
+            // InternalPerspectiveDsl.g:94:7: ( '(' )
+            // InternalPerspectiveDsl.g:94:9: '('
             {
-            match('['); 
+            match('('); 
 
             }
 
@@ -1899,11 +1909,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:95:7: ( 'instanceof' )
-            // InternalPerspectiveDsl.g:95:9: 'instanceof'
+            // InternalPerspectiveDsl.g:95:7: ( ')' )
+            // InternalPerspectiveDsl.g:95:9: ')'
             {
-            match("instanceof"); 
-
+            match(')'); 
 
             }
 
@@ -1920,11 +1929,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:96:7: ( 'as' )
-            // InternalPerspectiveDsl.g:96:9: 'as'
+            // InternalPerspectiveDsl.g:96:7: ( ',' )
+            // InternalPerspectiveDsl.g:96:9: ','
             {
-            match("as"); 
-
+            match(','); 
 
             }
 
@@ -1941,11 +1949,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:97:7: ( 'if' )
-            // InternalPerspectiveDsl.g:97:9: 'if'
+            // InternalPerspectiveDsl.g:97:7: ( ']' )
+            // InternalPerspectiveDsl.g:97:9: ']'
             {
-            match("if"); 
-
+            match(']'); 
 
             }
 
@@ -1962,11 +1969,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:98:8: ( 'else' )
-            // InternalPerspectiveDsl.g:98:10: 'else'
+            // InternalPerspectiveDsl.g:98:8: ( '#' )
+            // InternalPerspectiveDsl.g:98:10: '#'
             {
-            match("else"); 
-
+            match('#'); 
 
             }
 
@@ -1983,11 +1989,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:99:8: ( 'switch' )
-            // InternalPerspectiveDsl.g:99:10: 'switch'
+            // InternalPerspectiveDsl.g:99:8: ( '[' )
+            // InternalPerspectiveDsl.g:99:10: '['
             {
-            match("switch"); 
-
+            match('['); 
 
             }
 
@@ -2004,10 +2009,11 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:100:8: ( ':' )
-            // InternalPerspectiveDsl.g:100:10: ':'
+            // InternalPerspectiveDsl.g:100:8: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:100:10: 'instanceof'
             {
-            match(':'); 
+            match("instanceof"); 
+
 
             }
 
@@ -2024,10 +2030,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:101:8: ( 'default' )
-            // InternalPerspectiveDsl.g:101:10: 'default'
+            // InternalPerspectiveDsl.g:101:8: ( 'as' )
+            // InternalPerspectiveDsl.g:101:10: 'as'
             {
-            match("default"); 
+            match("as"); 
 
 
             }
@@ -2045,10 +2051,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:102:8: ( 'case' )
-            // InternalPerspectiveDsl.g:102:10: 'case'
+            // InternalPerspectiveDsl.g:102:8: ( 'if' )
+            // InternalPerspectiveDsl.g:102:10: 'if'
             {
-            match("case"); 
+            match("if"); 
 
 
             }
@@ -2066,10 +2072,10 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:103:8: ( 'for' )
-            // InternalPerspectiveDsl.g:103:10: 'for'
+            // InternalPerspectiveDsl.g:103:8: ( 'else' )
+            // InternalPerspectiveDsl.g:103:10: 'else'
             {
-            match("for"); 
+            match("else"); 
 
 
             }
@@ -2087,10 +2093,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:104:8: ( 'while' )
-            // InternalPerspectiveDsl.g:104:10: 'while'
+            // InternalPerspectiveDsl.g:104:8: ( 'switch' )
+            // InternalPerspectiveDsl.g:104:10: 'switch'
             {
-            match("while"); 
+            match("switch"); 
 
 
             }
@@ -2108,11 +2114,10 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:105:8: ( 'do' )
-            // InternalPerspectiveDsl.g:105:10: 'do'
+            // InternalPerspectiveDsl.g:105:8: ( ':' )
+            // InternalPerspectiveDsl.g:105:10: ':'
             {
-            match("do"); 
-
+            match(':'); 
 
             }
 
@@ -2129,10 +2134,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:106:8: ( 'new' )
-            // InternalPerspectiveDsl.g:106:10: 'new'
+            // InternalPerspectiveDsl.g:106:8: ( 'default' )
+            // InternalPerspectiveDsl.g:106:10: 'default'
             {
-            match("new"); 
+            match("default"); 
 
 
             }
@@ -2150,10 +2155,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:107:8: ( 'null' )
-            // InternalPerspectiveDsl.g:107:10: 'null'
+            // InternalPerspectiveDsl.g:107:8: ( 'case' )
+            // InternalPerspectiveDsl.g:107:10: 'case'
             {
-            match("null"); 
+            match("case"); 
 
 
             }
@@ -2171,10 +2176,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:108:8: ( 'typeof' )
-            // InternalPerspectiveDsl.g:108:10: 'typeof'
+            // InternalPerspectiveDsl.g:108:8: ( 'for' )
+            // InternalPerspectiveDsl.g:108:10: 'for'
             {
-            match("typeof"); 
+            match("for"); 
 
 
             }
@@ -2192,10 +2197,10 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:109:8: ( 'throw' )
-            // InternalPerspectiveDsl.g:109:10: 'throw'
+            // InternalPerspectiveDsl.g:109:8: ( 'while' )
+            // InternalPerspectiveDsl.g:109:10: 'while'
             {
-            match("throw"); 
+            match("while"); 
 
 
             }
@@ -2213,10 +2218,10 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:110:8: ( 'return' )
-            // InternalPerspectiveDsl.g:110:10: 'return'
+            // InternalPerspectiveDsl.g:110:8: ( 'do' )
+            // InternalPerspectiveDsl.g:110:10: 'do'
             {
-            match("return"); 
+            match("do"); 
 
 
             }
@@ -2234,10 +2239,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:111:8: ( 'try' )
-            // InternalPerspectiveDsl.g:111:10: 'try'
+            // InternalPerspectiveDsl.g:111:8: ( 'new' )
+            // InternalPerspectiveDsl.g:111:10: 'new'
             {
-            match("try"); 
+            match("new"); 
 
 
             }
@@ -2255,10 +2260,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:112:8: ( 'finally' )
-            // InternalPerspectiveDsl.g:112:10: 'finally'
+            // InternalPerspectiveDsl.g:112:8: ( 'null' )
+            // InternalPerspectiveDsl.g:112:10: 'null'
             {
-            match("finally"); 
+            match("null"); 
 
 
             }
@@ -2276,10 +2281,10 @@
         try {
             int _type = T__115;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:113:8: ( 'synchronized' )
-            // InternalPerspectiveDsl.g:113:10: 'synchronized'
+            // InternalPerspectiveDsl.g:113:8: ( 'typeof' )
+            // InternalPerspectiveDsl.g:113:10: 'typeof'
             {
-            match("synchronized"); 
+            match("typeof"); 
 
 
             }
@@ -2297,10 +2302,10 @@
         try {
             int _type = T__116;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:114:8: ( 'catch' )
-            // InternalPerspectiveDsl.g:114:10: 'catch'
+            // InternalPerspectiveDsl.g:114:8: ( 'throw' )
+            // InternalPerspectiveDsl.g:114:10: 'throw'
             {
-            match("catch"); 
+            match("throw"); 
 
 
             }
@@ -2318,10 +2323,11 @@
         try {
             int _type = T__117;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:115:8: ( '?' )
-            // InternalPerspectiveDsl.g:115:10: '?'
+            // InternalPerspectiveDsl.g:115:8: ( 'return' )
+            // InternalPerspectiveDsl.g:115:10: 'return'
             {
-            match('?'); 
+            match("return"); 
+
 
             }
 
@@ -2338,10 +2344,11 @@
         try {
             int _type = T__118;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:116:8: ( '&' )
-            // InternalPerspectiveDsl.g:116:10: '&'
+            // InternalPerspectiveDsl.g:116:8: ( 'try' )
+            // InternalPerspectiveDsl.g:116:10: 'try'
             {
-            match('&'); 
+            match("try"); 
+
 
             }
 
@@ -2358,10 +2365,10 @@
         try {
             int _type = T__119;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:117:8: ( 'describedBy' )
-            // InternalPerspectiveDsl.g:117:10: 'describedBy'
+            // InternalPerspectiveDsl.g:117:8: ( 'finally' )
+            // InternalPerspectiveDsl.g:117:10: 'finally'
             {
-            match("describedBy"); 
+            match("finally"); 
 
 
             }
@@ -2379,10 +2386,10 @@
         try {
             int _type = T__120;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:118:8: ( 'isClosable' )
-            // InternalPerspectiveDsl.g:118:10: 'isClosable'
+            // InternalPerspectiveDsl.g:118:8: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:118:10: 'synchronized'
             {
-            match("isClosable"); 
+            match("synchronized"); 
 
 
             }
@@ -2400,10 +2407,10 @@
         try {
             int _type = T__121;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:119:8: ( 'ns' )
-            // InternalPerspectiveDsl.g:119:10: 'ns'
+            // InternalPerspectiveDsl.g:119:8: ( 'catch' )
+            // InternalPerspectiveDsl.g:119:10: 'catch'
             {
-            match("ns"); 
+            match("catch"); 
 
 
             }
@@ -2421,11 +2428,10 @@
         try {
             int _type = T__122;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:120:8: ( '::' )
-            // InternalPerspectiveDsl.g:120:10: '::'
+            // InternalPerspectiveDsl.g:120:8: ( '?' )
+            // InternalPerspectiveDsl.g:120:10: '?'
             {
-            match("::"); 
-
+            match('?'); 
 
             }
 
@@ -2442,11 +2448,10 @@
         try {
             int _type = T__123;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:121:8: ( '?.' )
-            // InternalPerspectiveDsl.g:121:10: '?.'
+            // InternalPerspectiveDsl.g:121:8: ( '&' )
+            // InternalPerspectiveDsl.g:121:10: '&'
             {
-            match("?."); 
-
+            match('&'); 
 
             }
 
@@ -2463,10 +2468,11 @@
         try {
             int _type = T__124;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:122:8: ( '|' )
-            // InternalPerspectiveDsl.g:122:10: '|'
+            // InternalPerspectiveDsl.g:122:8: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:122:10: 'describedBy'
             {
-            match('|'); 
+            match("describedBy"); 
+
 
             }
 
@@ -2483,10 +2489,10 @@
         try {
             int _type = T__125;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:123:8: ( 'var' )
-            // InternalPerspectiveDsl.g:123:10: 'var'
+            // InternalPerspectiveDsl.g:123:8: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:123:10: 'isClosable'
             {
-            match("var"); 
+            match("isClosable"); 
 
 
             }
@@ -2504,10 +2510,10 @@
         try {
             int _type = T__126;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:124:8: ( 'true' )
-            // InternalPerspectiveDsl.g:124:10: 'true'
+            // InternalPerspectiveDsl.g:124:8: ( 'ns' )
+            // InternalPerspectiveDsl.g:124:10: 'ns'
             {
-            match("true"); 
+            match("ns"); 
 
 
             }
@@ -2520,15 +2526,119 @@
     }
     // $ANTLR end "T__126"
 
+    // $ANTLR start "T__127"
+    public final void mT__127() throws RecognitionException {
+        try {
+            int _type = T__127;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:125:8: ( '::' )
+            // InternalPerspectiveDsl.g:125:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__127"
+
+    // $ANTLR start "T__128"
+    public final void mT__128() throws RecognitionException {
+        try {
+            int _type = T__128;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:126:8: ( '?.' )
+            // InternalPerspectiveDsl.g:126:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__128"
+
+    // $ANTLR start "T__129"
+    public final void mT__129() throws RecognitionException {
+        try {
+            int _type = T__129;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:127:8: ( '|' )
+            // InternalPerspectiveDsl.g:127:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__129"
+
+    // $ANTLR start "T__130"
+    public final void mT__130() throws RecognitionException {
+        try {
+            int _type = T__130;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:128:8: ( 'var' )
+            // InternalPerspectiveDsl.g:128:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__130"
+
+    // $ANTLR start "T__131"
+    public final void mT__131() throws RecognitionException {
+        try {
+            int _type = T__131;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:129:8: ( 'true' )
+            // InternalPerspectiveDsl.g:129:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24185:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalPerspectiveDsl.g:24185:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:24877:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalPerspectiveDsl.g:24877:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalPerspectiveDsl.g:24185:12: ( '0x' | '0X' )
+            // InternalPerspectiveDsl.g:24877:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2556,7 +2666,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24185:13: '0x'
+                    // InternalPerspectiveDsl.g:24877:13: '0x'
                     {
                     match("0x"); 
 
@@ -2564,7 +2674,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:24185:18: '0X'
+                    // InternalPerspectiveDsl.g:24877:18: '0X'
                     {
                     match("0X"); 
 
@@ -2574,7 +2684,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:24185:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalPerspectiveDsl.g:24877:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2612,7 +2722,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalPerspectiveDsl.g:24185:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:24877:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2621,10 +2731,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24185:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:24877:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalPerspectiveDsl.g:24185:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:24877:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2642,7 +2752,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:24185:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalPerspectiveDsl.g:24877:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2666,7 +2776,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:24185:84: ( 'l' | 'L' )
+                            // InternalPerspectiveDsl.g:24877:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2705,11 +2815,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24187:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalPerspectiveDsl.g:24187:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:24879:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalPerspectiveDsl.g:24879:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalPerspectiveDsl.g:24187:21: ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:24879:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2758,11 +2868,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24189:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalPerspectiveDsl.g:24189:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:24881:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalPerspectiveDsl.g:24881:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalPerspectiveDsl.g:24189:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalPerspectiveDsl.g:24881:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2771,7 +2881,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24189:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalPerspectiveDsl.g:24881:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2782,7 +2892,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalPerspectiveDsl.g:24189:36: ( '+' | '-' )?
+                    // InternalPerspectiveDsl.g:24881:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2815,7 +2925,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:24189:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:24881:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2827,7 +2937,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24189:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalPerspectiveDsl.g:24881:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2851,7 +2961,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:24189:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalPerspectiveDsl.g:24881: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();
@@ -2884,10 +2994,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24191:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalPerspectiveDsl.g:24191:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:24883:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalPerspectiveDsl.g:24883:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalPerspectiveDsl.g:24191:11: ( '^' )?
+            // InternalPerspectiveDsl.g:24883:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2896,7 +3006,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24191:11: '^'
+                    // InternalPerspectiveDsl.g:24883:11: '^'
                     {
                     match('^'); 
 
@@ -2914,7 +3024,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalPerspectiveDsl.g:24191:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:24883:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -2963,10 +3073,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24193:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalPerspectiveDsl.g:24193:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:24885:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalPerspectiveDsl.g:24885:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalPerspectiveDsl.g:24193:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:24885:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -2984,10 +3094,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24193:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalPerspectiveDsl.g:24885:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalPerspectiveDsl.g:24193:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalPerspectiveDsl.g:24885:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -3003,7 +3113,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:24193:21: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:24885:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3011,7 +3121,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:24193:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalPerspectiveDsl.g:24885:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3031,7 +3141,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:24193:44: ( '\"' )?
+                    // InternalPerspectiveDsl.g:24885:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -3040,7 +3150,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:24193:44: '\"'
+                            // InternalPerspectiveDsl.g:24885:44: '\"'
                             {
                             match('\"'); 
 
@@ -3053,10 +3163,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:24193:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalPerspectiveDsl.g:24885:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalPerspectiveDsl.g:24193:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalPerspectiveDsl.g:24885:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -3072,7 +3182,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:24193:55: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:24885:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3080,7 +3190,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:24193:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalPerspectiveDsl.g:24885:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3100,7 +3210,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:24193:79: ( '\\'' )?
+                    // InternalPerspectiveDsl.g:24885:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -3109,7 +3219,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:24193:79: '\\''
+                            // InternalPerspectiveDsl.g:24885:79: '\\''
                             {
                             match('\''); 
 
@@ -3140,12 +3250,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24195:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalPerspectiveDsl.g:24195:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalPerspectiveDsl.g:24887:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalPerspectiveDsl.g:24887:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalPerspectiveDsl.g:24195:24: ( options {greedy=false; } : . )*
+            // InternalPerspectiveDsl.g:24887:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -3170,7 +3280,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:24195:52: .
+            	    // InternalPerspectiveDsl.g:24887:52: .
             	    {
             	    matchAny(); 
 
@@ -3200,12 +3310,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24197:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalPerspectiveDsl.g:24197:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:24889:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalPerspectiveDsl.g:24889:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalPerspectiveDsl.g:24197:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalPerspectiveDsl.g:24889:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -3218,7 +3328,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:24197:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalPerspectiveDsl.g:24889: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();
@@ -3238,7 +3348,7 @@
                 }
             } while (true);
 
-            // InternalPerspectiveDsl.g:24197:40: ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:24889:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -3247,9 +3357,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24197:41: ( '\\r' )? '\\n'
+                    // InternalPerspectiveDsl.g:24889:41: ( '\\r' )? '\\n'
                     {
-                    // InternalPerspectiveDsl.g:24197:41: ( '\\r' )?
+                    // InternalPerspectiveDsl.g:24889:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3258,7 +3368,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:24197:41: '\\r'
+                            // InternalPerspectiveDsl.g:24889:41: '\\r'
                             {
                             match('\r'); 
 
@@ -3290,10 +3400,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24199:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalPerspectiveDsl.g:24199:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:24891:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalPerspectiveDsl.g:24891:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalPerspectiveDsl.g:24199:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:24891:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3347,8 +3457,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24201:16: ( . )
-            // InternalPerspectiveDsl.g:24201:18: .
+            // InternalPerspectiveDsl.g:24893:16: ( . )
+            // InternalPerspectiveDsl.g:24893:18: .
             {
             matchAny(); 
 
@@ -3363,8 +3473,8 @@
     // $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 | T__126 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=123;
+        // 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 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=128;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -4166,63 +4276,98 @@
                 }
                 break;
             case 115 :
-                // InternalPerspectiveDsl.g:1:721: RULE_HEX
+                // InternalPerspectiveDsl.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // InternalPerspectiveDsl.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // InternalPerspectiveDsl.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // InternalPerspectiveDsl.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // InternalPerspectiveDsl.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // InternalPerspectiveDsl.g:1:756: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 116 :
-                // InternalPerspectiveDsl.g:1:730: RULE_INT
+            case 121 :
+                // InternalPerspectiveDsl.g:1:765: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 117 :
-                // InternalPerspectiveDsl.g:1:739: RULE_DECIMAL
+            case 122 :
+                // InternalPerspectiveDsl.g:1:774: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 118 :
-                // InternalPerspectiveDsl.g:1:752: RULE_ID
+            case 123 :
+                // InternalPerspectiveDsl.g:1:787: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 119 :
-                // InternalPerspectiveDsl.g:1:760: RULE_STRING
+            case 124 :
+                // InternalPerspectiveDsl.g:1:795: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 120 :
-                // InternalPerspectiveDsl.g:1:772: RULE_ML_COMMENT
+            case 125 :
+                // InternalPerspectiveDsl.g:1:807: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 121 :
-                // InternalPerspectiveDsl.g:1:788: RULE_SL_COMMENT
+            case 126 :
+                // InternalPerspectiveDsl.g:1:823: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 122 :
-                // InternalPerspectiveDsl.g:1:804: RULE_WS
+            case 127 :
+                // InternalPerspectiveDsl.g:1:839: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 123 :
-                // InternalPerspectiveDsl.g:1:812: RULE_ANY_OTHER
+            case 128 :
+                // InternalPerspectiveDsl.g:1:847: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -4236,17 +4381,17 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\65\1\67\1\71\1\74\1\100\1\103\1\107\1\111\1\113\1\115\1\117\1\121\1\124\7\130\2\uffff\13\130\10\uffff\1\u0093\2\u0096\1\62\5\uffff\1\u009b\26\uffff\1\u009d\5\uffff\1\u009f\4\uffff\3\130\1\uffff\14\130\1\u00b2\1\u00b3\10\130\2\uffff\2\130\1\u00c0\6\130\1\u00ca\6\130\1\u00d7\7\130\1\u00df\13\uffff\1\u0096\12\uffff\1\u00e0\1\u00e1\20\130\2\uffff\4\130\1\u00f6\7\130\1\uffff\5\130\1\u0103\3\130\1\uffff\14\130\1\uffff\5\130\1\u0118\1\130\3\uffff\1\130\1\u011b\2\130\1\u011e\17\130\1\uffff\2\130\1\u0131\11\130\1\uffff\1\u013b\6\130\1\u0142\1\u0143\6\130\1\u014a\3\130\1\u014e\1\uffff\1\u014f\1\130\1\uffff\2\130\1\uffff\1\130\1\u0155\12\130\1\u0160\5\130\1\uffff\6\130\1\u016c\1\130\1\u016e\1\uffff\5\130\1\u0174\2\uffff\1\u0175\1\130\1\u0177\3\130\1\uffff\2\130\1\u017d\2\uffff\4\130\1\u0182\1\uffff\1\130\1\u0185\1\u0186\1\130\1\u0188\1\130\1\u018a\3\130\1\uffff\13\130\1\uffff\1\u0199\1\uffff\3\130\1\u019d\1\u019e\2\uffff\1\u019f\1\uffff\3\130\1\u01a3\1\130\1\uffff\1\130\1\u01a6\2\130\1\uffff\2\130\2\uffff\1\130\1\uffff\1\130\1\uffff\1\u01ad\3\130\1\u01b1\1\130\1\u01b3\2\130\1\u01b6\2\130\1\u01b9\1\130\1\uffff\3\130\3\uffff\1\u01be\2\130\1\uffff\1\u01c1\1\u01c2\1\uffff\6\130\1\uffff\3\130\1\uffff\1\130\1\uffff\2\130\1\uffff\1\u01cf\1\130\1\uffff\1\u01d1\3\130\1\uffff\2\130\2\uffff\1\u01d7\11\130\1\u01e1\1\130\1\uffff\1\130\1\uffff\5\130\1\uffff\5\130\1\u01ee\1\u01ef\1\130\1\u01f1\1\uffff\3\130\1\u01f5\6\130\1\u01fc\1\130\2\uffff\1\130\1\uffff\1\u01ff\1\130\1\u0201\1\uffff\1\130\1\u0203\4\130\1\uffff\1\u0208\1\130\1\uffff\1\130\1\uffff\1\130\1\uffff\1\130\1\u020d\1\u020e\1\130\1\uffff\1\u0210\1\u0211\1\u0212\1\130\2\uffff\1\130\3\uffff\1\130\1\u0216\1\u0217\2\uffff";
+        "\1\uffff\1\65\1\67\1\71\1\74\1\100\1\103\1\107\1\111\1\113\1\115\1\117\1\121\1\124\7\130\2\uffff\13\130\10\uffff\1\u0098\2\u009b\1\62\5\uffff\1\u00a0\26\uffff\1\u00a2\5\uffff\1\u00a4\4\uffff\3\130\1\uffff\15\130\1\u00b8\1\u00b9\10\130\2\uffff\4\130\1\u00c8\7\130\1\u00d3\6\130\1\u00e0\10\130\1\u00e9\13\uffff\1\u009b\12\uffff\1\u00ea\1\u00eb\21\130\2\uffff\4\130\1\u0101\6\130\1\u0108\2\130\1\uffff\6\130\1\u0111\3\130\1\uffff\14\130\1\uffff\6\130\1\u0127\1\130\3\uffff\1\130\1\u012a\3\130\1\u012e\17\130\1\uffff\2\130\1\u0141\3\130\1\uffff\10\130\1\uffff\1\u014d\6\130\1\u0154\1\u0155\6\130\1\u015c\4\130\1\u0161\1\uffff\1\u0162\1\130\1\uffff\3\130\1\uffff\1\130\1\u0169\12\130\1\u0174\5\130\1\uffff\10\130\1\u0182\1\130\1\u0184\1\uffff\5\130\1\u018a\2\uffff\1\u018b\1\130\1\u018d\3\130\1\uffff\3\130\1\u0194\2\uffff\5\130\1\u019a\1\uffff\1\130\1\u019d\1\u019e\1\130\1\u01a0\1\130\1\u01a2\3\130\1\uffff\15\130\1\uffff\1\u01b3\1\uffff\3\130\1\u01b7\1\u01b8\2\uffff\1\u01b9\1\uffff\4\130\1\u01be\1\130\1\uffff\1\130\1\u01c1\3\130\1\uffff\2\130\2\uffff\1\130\1\uffff\1\130\1\uffff\1\u01c9\3\130\1\u01cd\1\130\1\u01cf\2\130\1\u01d2\3\130\1\u01d6\2\130\1\uffff\3\130\3\uffff\1\u01dc\2\130\1\u01df\1\uffff\1\u01e0\1\u01e1\1\uffff\7\130\1\uffff\3\130\1\uffff\1\130\1\uffff\2\130\1\uffff\1\u01ef\2\130\1\uffff\1\u01f2\4\130\1\uffff\2\130\3\uffff\1\u01f9\12\130\1\u0204\1\130\1\uffff\2\130\1\uffff\6\130\1\uffff\6\130\1\u0214\1\u0215\1\130\1\u0217\1\uffff\3\130\1\u021b\1\130\1\u021d\7\130\1\u0225\1\130\2\uffff\1\130\1\uffff\1\u0228\2\130\1\uffff\1\u022b\1\uffff\1\130\1\u022d\1\130\1\u022f\3\130\1\uffff\1\u0233\1\130\1\uffff\2\130\1\uffff\1\130\1\uffff\1\130\1\uffff\1\u0239\1\u023a\1\130\1\uffff\1\u023c\1\u023d\1\130\1\u023f\1\130\2\uffff\1\130\2\uffff\1\u0242\1\uffff\1\130\1\u0244\1\uffff\1\u0245\2\uffff";
     static final String DFA21_eofS =
-        "\u0218\uffff";
+        "\u0246\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\144\1\141\1\143\1\141\1\157\1\141\2\uffff\1\163\1\143\1\150\1\146\1\145\2\141\1\160\1\141\1\145\1\141\10\uffff\1\72\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\151\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\164\1\160\1\162\1\165\1\147\1\44\2\141\1\162\1\141\1\146\1\164\1\44\1\155\1\156\1\154\1\151\1\155\1\167\1\154\1\44\13\uffff\1\60\12\uffff\2\44\1\164\1\167\1\145\1\164\1\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\1\157\1\165\1\162\1\144\1\145\1\143\1\154\1\164\1\141\1\143\1\141\1\uffff\1\156\1\142\1\143\1\154\1\145\1\44\1\154\3\uffff\1\151\1\44\1\156\1\141\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\1\117\2\162\1\164\2\44\1\150\1\157\1\150\1\165\1\162\1\111\1\44\1\141\1\157\1\145\1\44\1\uffff\1\44\1\143\1\uffff\1\144\1\142\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\1\156\1\164\1\156\1\44\2\uffff\1\44\1\147\1\44\1\154\1\151\1\156\1\uffff\1\156\1\155\1\44\2\uffff\1\141\1\163\1\151\1\154\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\1\154\2\44\2\uffff\1\44\1\uffff\1\164\1\142\1\164\1\44\1\145\1\uffff\1\154\1\44\1\157\1\145\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\1\171\3\uffff\1\44\2\145\1\uffff\2\44\1\uffff\1\156\1\124\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\124\1\uffff\1\144\1\162\2\uffff\1\44\1\141\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\141\1\102\1\143\1\uffff\1\142\1\156\3\145\2\44\1\155\1\44\1\uffff\1\145\1\151\1\156\1\44\1\142\1\171\1\150\1\154\1\145\1\155\1\44\1\144\2\uffff\1\156\1\uffff\1\44\1\164\1\44\1\uffff\1\154\1\44\1\141\1\145\1\162\1\145\1\uffff\1\44\1\163\1\uffff\1\171\1\uffff\1\145\1\uffff\1\156\2\44\1\156\1\uffff\3\44\1\147\2\uffff\1\164\3\uffff\1\145\2\44\2\uffff";
+        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\144\1\141\1\143\1\141\1\157\1\141\2\uffff\1\162\1\143\1\141\1\146\1\145\2\141\1\160\1\141\1\145\1\141\10\uffff\1\72\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\145\1\151\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\154\1\143\1\154\1\44\1\157\1\162\1\164\1\160\1\162\1\165\1\147\1\44\2\141\1\162\1\141\1\146\1\164\1\44\1\155\1\157\1\156\1\154\1\151\1\155\1\167\1\154\1\44\13\uffff\1\60\12\uffff\2\44\1\164\1\167\1\145\1\156\1\164\1\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\44\1\145\1\157\1\uffff\1\154\1\157\1\147\1\154\1\145\1\157\1\44\2\145\1\141\1\uffff\1\144\1\157\1\165\1\162\1\144\1\145\1\143\1\154\1\164\1\141\1\143\1\141\1\uffff\1\156\1\167\1\142\1\143\1\154\1\145\1\44\1\154\3\uffff\1\151\1\44\1\156\1\164\1\141\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\uffff\1\163\1\167\1\142\1\154\2\145\1\157\1\167\1\uffff\1\44\2\156\1\117\2\162\1\164\2\44\1\150\1\157\1\150\1\165\1\162\1\111\1\44\1\163\1\141\1\157\1\145\1\44\1\uffff\1\44\1\143\1\uffff\1\144\1\115\1\142\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\145\1\141\1\157\1\164\1\44\1\146\1\44\1\uffff\1\164\1\151\1\156\1\164\1\156\1\44\2\uffff\1\44\1\147\1\44\1\154\1\151\1\156\1\uffff\1\145\1\156\1\155\1\44\2\uffff\1\141\1\163\1\151\1\141\1\154\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\144\1\162\1\147\1\120\1\uffff\1\44\1\uffff\1\141\1\147\1\154\2\44\2\uffff\1\44\1\uffff\1\164\1\142\1\164\1\162\1\44\1\145\1\uffff\1\154\1\44\1\157\1\156\1\145\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\123\1\44\1\171\1\141\1\uffff\1\164\1\162\1\171\3\uffff\1\44\2\145\1\44\1\uffff\2\44\1\uffff\1\156\1\141\1\124\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\157\1\uffff\1\44\1\162\1\151\1\141\1\124\1\uffff\1\144\1\162\3\uffff\1\44\1\147\1\141\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\165\1\uffff\1\164\1\157\1\155\1\141\1\102\1\143\1\uffff\1\145\1\142\1\156\3\145\2\44\1\155\1\44\1\uffff\1\145\1\151\1\162\1\44\1\156\1\44\1\142\1\171\1\150\1\162\1\154\1\145\1\155\1\44\1\144\2\uffff\1\156\1\uffff\1\44\1\164\1\143\1\uffff\1\44\1\uffff\1\154\1\44\1\141\1\44\1\145\1\162\1\145\1\uffff\1\44\1\163\1\uffff\1\171\1\145\1\uffff\1\145\1\uffff\1\156\1\uffff\2\44\1\156\1\uffff\2\44\1\163\1\44\1\147\2\uffff\1\164\2\uffff\1\44\1\uffff\1\145\1\44\1\uffff\1\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\1\162\1\145\1\150\1\157\1\160\1\141\1\150\1\165\10\uffff\1\72\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\151\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\164\1\160\1\162\1\171\1\151\1\172\1\164\1\141\1\164\1\141\1\163\1\164\1\172\1\155\1\156\1\154\1\151\1\155\1\167\1\154\1\172\13\uffff\1\154\12\uffff\2\172\1\164\1\167\1\145\1\164\1\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\1\157\1\165\1\162\1\144\1\145\1\143\1\154\1\164\1\141\1\143\1\141\1\uffff\1\156\1\142\1\143\1\154\1\145\1\172\1\154\3\uffff\1\151\1\172\1\156\1\141\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\1\117\2\162\1\164\2\172\1\150\1\157\1\150\1\165\1\162\1\111\1\172\1\141\1\157\1\145\1\172\1\uffff\1\172\1\143\1\uffff\1\163\1\142\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\1\156\1\164\1\156\1\172\2\uffff\1\172\1\147\1\172\1\154\1\151\1\156\1\uffff\1\156\1\155\1\172\2\uffff\1\141\1\163\1\151\1\154\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\1\154\2\172\2\uffff\1\172\1\uffff\1\164\1\142\1\164\1\172\1\145\1\uffff\1\154\1\172\1\157\1\145\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\1\171\3\uffff\1\172\2\145\1\uffff\2\172\1\uffff\1\156\1\124\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\124\1\uffff\1\144\1\162\2\uffff\1\172\1\141\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\141\1\102\1\143\1\uffff\1\142\1\156\3\145\2\172\1\155\1\172\1\uffff\1\145\1\151\1\156\1\172\1\142\1\171\1\150\1\154\1\145\1\155\1\172\1\144\2\uffff\1\156\1\uffff\1\172\1\164\1\172\1\uffff\1\154\1\172\1\141\1\145\1\162\1\145\1\uffff\1\172\1\163\1\uffff\1\171\1\uffff\1\145\1\uffff\1\156\2\172\1\156\1\uffff\3\172\1\147\2\uffff\1\164\3\uffff\1\145\2\172\2\uffff";
+        "\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\1\162\1\145\1\150\1\157\1\162\1\141\1\150\1\165\10\uffff\1\72\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\145\1\151\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\154\1\143\1\154\1\172\1\160\1\162\1\164\1\160\1\162\1\171\1\151\1\172\1\164\1\141\1\164\1\141\1\163\1\164\1\172\1\155\1\157\1\156\1\154\1\151\1\155\1\167\1\154\1\172\13\uffff\1\154\12\uffff\2\172\1\164\1\167\1\145\1\156\1\164\1\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\172\1\145\1\157\1\uffff\1\154\1\157\1\147\1\154\1\145\1\157\1\172\2\145\1\141\1\uffff\1\144\1\157\1\165\1\162\1\144\1\145\1\143\1\154\1\164\1\141\1\143\1\141\1\uffff\1\156\1\167\1\142\1\143\1\154\1\145\1\172\1\154\3\uffff\1\151\1\172\1\156\1\164\1\141\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\uffff\1\163\1\167\1\142\1\154\2\145\1\157\1\167\1\uffff\1\172\2\156\1\117\2\162\1\164\2\172\1\150\1\157\1\150\1\165\1\162\1\111\1\172\1\163\1\141\1\157\1\145\1\172\1\uffff\1\172\1\143\1\uffff\1\163\1\115\1\142\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\145\1\141\1\157\1\164\1\172\1\146\1\172\1\uffff\1\164\1\151\1\156\1\164\1\156\1\172\2\uffff\1\172\1\147\1\172\1\154\1\151\1\156\1\uffff\1\145\1\156\1\155\1\172\2\uffff\1\141\1\163\1\151\1\141\1\154\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\144\1\162\1\147\1\120\1\uffff\1\172\1\uffff\1\141\1\147\1\154\2\172\2\uffff\1\172\1\uffff\1\164\1\142\1\164\1\162\1\172\1\145\1\uffff\1\154\1\172\1\157\1\156\1\145\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\123\1\172\1\171\1\141\1\uffff\1\164\1\162\1\171\3\uffff\1\172\2\145\1\172\1\uffff\2\172\1\uffff\1\156\1\141\1\124\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\157\1\uffff\1\172\1\162\1\151\1\141\1\124\1\uffff\1\144\1\162\3\uffff\1\172\1\147\1\141\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\165\1\uffff\1\164\1\157\1\155\1\141\1\102\1\143\1\uffff\1\145\1\142\1\156\3\145\2\172\1\155\1\172\1\uffff\1\145\1\151\1\162\1\172\1\156\1\172\1\142\1\171\1\150\1\162\1\154\1\145\1\155\1\172\1\144\2\uffff\1\156\1\uffff\1\172\1\164\1\143\1\uffff\1\172\1\uffff\1\154\1\172\1\141\1\172\1\145\1\162\1\145\1\uffff\1\172\1\163\1\uffff\1\171\1\145\1\uffff\1\145\1\uffff\1\156\1\uffff\2\172\1\156\1\uffff\2\172\1\163\1\172\1\147\2\uffff\1\164\2\uffff\1\172\1\uffff\1\145\1\172\1\uffff\1\172\2\uffff";
     static final String DFA21_acceptS =
-        "\25\uffff\1\52\1\53\13\uffff\1\115\1\116\1\117\1\120\1\121\1\122\1\123\1\124\4\uffff\1\166\2\167\1\172\1\173\1\uffff\1\23\1\1\1\2\1\160\1\3\1\152\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\170\1\171\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\157\1\151\3\uffff\1\166\26\uffff\1\52\1\53\31\uffff\1\115\1\116\1\117\1\120\1\121\1\122\1\123\1\124\1\156\1\132\1\163\1\uffff\1\164\1\165\1\167\1\172\1\13\1\11\1\14\1\12\1\21\1\22\22\uffff\1\107\1\127\14\uffff\1\126\11\uffff\1\103\14\uffff\1\137\7\uffff\1\155\1\40\1\161\24\uffff\1\135\14\uffff\1\145\24\uffff\1\140\2\uffff\1\70\2\uffff\1\130\22\uffff\1\67\11\uffff\1\162\6\uffff\1\104\1\134\6\uffff\1\101\3\uffff\1\114\1\141\5\uffff\1\45\12\uffff\1\46\13\uffff\1\113\1\uffff\1\143\5\uffff\1\74\1\150\1\uffff\1\110\5\uffff\1\136\4\uffff\1\42\2\uffff\1\71\1\106\1\uffff\1\131\1\uffff\1\43\16\uffff\1\142\3\uffff\1\75\1\144\1\100\3\uffff\1\102\2\uffff\1\41\6\uffff\1\57\3\uffff\1\146\1\uffff\1\51\2\uffff\1\55\2\uffff\1\61\4\uffff\1\133\2\uffff\1\105\1\50\14\uffff\1\56\1\uffff\1\77\5\uffff\1\44\11\uffff\1\66\14\uffff\1\125\1\154\1\uffff\1\47\3\uffff\1\76\6\uffff\1\65\2\uffff\1\54\1\uffff\1\63\1\uffff\1\153\4\uffff\1\147\4\uffff\1\73\1\62\1\uffff\1\111\1\60\1\72\3\uffff\1\64\1\112";
+        "\25\uffff\1\52\1\53\13\uffff\1\122\1\123\1\124\1\125\1\126\1\127\1\130\1\131\4\uffff\1\173\2\174\1\177\1\u0080\1\uffff\1\23\1\1\1\2\1\165\1\3\1\157\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\175\1\176\1\32\1\10\1\33\1\uffff\1\34\1\15\1\16\1\24\1\17\1\uffff\1\37\1\25\1\164\1\156\3\uffff\1\173\27\uffff\1\52\1\53\35\uffff\1\122\1\123\1\124\1\125\1\126\1\127\1\130\1\131\1\163\1\137\1\170\1\uffff\1\171\1\172\1\174\1\177\1\13\1\11\1\14\1\12\1\21\1\22\23\uffff\1\112\1\134\16\uffff\1\133\12\uffff\1\106\14\uffff\1\144\10\uffff\1\162\1\40\1\166\25\uffff\1\142\6\uffff\1\121\10\uffff\1\152\25\uffff\1\145\2\uffff\1\71\3\uffff\1\135\22\uffff\1\70\13\uffff\1\167\6\uffff\1\107\1\141\6\uffff\1\104\4\uffff\1\117\1\146\6\uffff\1\45\12\uffff\1\46\15\uffff\1\116\1\uffff\1\150\5\uffff\1\77\1\155\1\uffff\1\113\6\uffff\1\143\5\uffff\1\42\2\uffff\1\74\1\111\1\uffff\1\136\1\uffff\1\43\20\uffff\1\147\3\uffff\1\100\1\151\1\103\4\uffff\1\105\2\uffff\1\41\7\uffff\1\57\3\uffff\1\153\1\uffff\1\51\2\uffff\1\55\3\uffff\1\61\5\uffff\1\140\2\uffff\1\120\1\110\1\50\15\uffff\1\56\2\uffff\1\102\6\uffff\1\44\12\uffff\1\67\17\uffff\1\132\1\161\1\uffff\1\47\3\uffff\1\72\1\uffff\1\101\7\uffff\1\66\2\uffff\1\54\2\uffff\1\64\1\uffff\1\160\1\uffff\1\62\3\uffff\1\154\5\uffff\1\76\1\63\1\uffff\1\114\1\60\1\uffff\1\75\2\uffff\1\73\1\uffff\1\65\1\115";
     static final String DFA21_specialS =
-        "\1\0\u0217\uffff}>";
+        "\1\0\u0245\uffff}>";
     static final String[] DFA21_transitionS = {
             "\11\62\2\61\2\62\1\61\22\62\1\61\1\11\1\57\1\50\1\56\1\10\1\3\1\60\1\44\1\45\1\6\1\4\1\46\1\5\1\14\1\7\1\53\11\54\1\52\1\42\1\13\1\1\1\12\1\15\1\43\32\56\1\51\1\62\1\47\1\55\1\56\1\62\1\30\1\36\1\34\1\35\1\17\1\22\1\56\1\23\1\21\1\56\1\37\2\56\1\41\1\32\1\24\1\56\1\33\1\20\1\31\1\27\1\16\1\40\3\56\1\25\1\2\1\26\uff82\62",
             "\1\63\1\64",
@@ -4263,25 +4408,25 @@
             "\1\120",
             "\1\123\13\uffff\1\122",
             "\1\125\3\uffff\1\126\3\uffff\1\127",
-            "\1\132\7\uffff\1\133\13\uffff\1\131",
-            "\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\133\7\uffff\1\134\11\uffff\1\132\1\uffff\1\131",
+            "\1\137\3\uffff\1\140\12\uffff\1\141\3\uffff\1\135\1\136\1\uffff\1\142\1\uffff\1\143",
+            "\1\145\2\uffff\1\147\6\uffff\1\144\1\146\4\uffff\1\150",
+            "\1\151\7\uffff\1\152\5\uffff\1\153",
+            "\1\154",
+            "\1\155\3\uffff\1\156\14\uffff\1\157",
             "",
             "",
-            "\1\161",
-            "\1\162\17\uffff\1\163",
-            "\1\167\1\165\5\uffff\1\164\2\uffff\1\170\6\uffff\1\166",
-            "\1\172\13\uffff\1\171",
-            "\1\173",
-            "\1\175\6\uffff\1\174",
-            "\1\u0080\3\uffff\1\177\3\uffff\1\176\5\uffff\1\u0081",
-            "\1\u0082",
-            "\1\u0083",
-            "\1\u0084\2\uffff\1\u0085",
-            "\1\u0086\3\uffff\1\u0087\15\uffff\1\u0089\1\uffff\1\u0088",
+            "\1\163\1\162",
+            "\1\164\10\uffff\1\165\6\uffff\1\166",
+            "\1\170\6\uffff\1\173\1\171\5\uffff\1\167\2\uffff\1\174\6\uffff\1\172",
+            "\1\176\13\uffff\1\175",
+            "\1\177",
+            "\1\u0081\6\uffff\1\u0080",
+            "\1\u0084\3\uffff\1\u0083\3\uffff\1\u0082\5\uffff\1\u0085",
+            "\1\u0086\1\uffff\1\u0087",
+            "\1\u0088",
+            "\1\u0089\2\uffff\1\u008a",
+            "\1\u008b\3\uffff\1\u008c\15\uffff\1\u008e\1\uffff\1\u008d",
             "",
             "",
             "",
@@ -4290,16 +4435,16 @@
             "",
             "",
             "",
-            "\1\u0092",
-            "\12\u0095\10\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\13\uffff\1\u0094\6\uffff\1\u0095\2\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\13\uffff\1\u0094",
-            "\12\u0095\10\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\22\uffff\1\u0095\2\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097",
+            "\1\u0097",
+            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099\6\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099",
+            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
             "\1\130\34\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "",
             "",
             "",
             "",
             "",
-            "\1\u009a",
+            "\1\u009f",
             "",
             "",
             "",
@@ -4322,94 +4467,67 @@
             "",
             "",
             "",
-            "\1\u009c",
+            "\1\u00a1",
             "",
             "",
             "",
             "",
             "",
-            "\1\u009e",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00a0\5\uffff\1\u00a1",
-            "\1\u00a2",
             "\1\u00a3",
             "",
-            "\1\u00a4",
-            "\1\u00a5",
-            "\1\u00a6",
+            "",
+            "",
+            "",
+            "\1\u00a5\5\uffff\1\u00a6",
             "\1\u00a7",
             "\1\u00a8",
+            "",
             "\1\u00a9",
-            "\1\u00ab\12\uffff\1\u00aa",
+            "\1\u00aa",
+            "\1\u00ab",
             "\1\u00ac",
             "\1\u00ad",
             "\1\u00ae",
             "\1\u00af",
-            "\1\u00b0",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\22\130\1\u00b1\7\130",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u00b1\12\uffff\1\u00b0",
+            "\1\u00b2",
+            "\1\u00b3",
             "\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\u00b6",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\22\130\1\u00b7\7\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc\1\uffff\1\u00bd",
             "\1\u00be",
             "\1\u00bf",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u00c1\1\u00c2",
+            "\1\u00c0\16\uffff\1\u00c1",
+            "\1\u00c2",
             "\1\u00c3",
+            "",
+            "",
             "\1\u00c4",
             "\1\u00c5",
-            "\1\u00c7\3\uffff\1\u00c6",
-            "\1\u00c9\1\uffff\1\u00c8",
+            "\1\u00c6",
+            "\1\u00c7",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u00cb\16\uffff\1\u00cc\3\uffff\1\u00cd",
+            "\1\u00c9\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
             "\1\u00ce",
-            "\1\u00cf\1\u00d0\1\u00d1",
-            "\1\u00d2",
-            "\1\u00d4\11\uffff\1\u00d3\2\uffff\1\u00d5",
-            "\1\u00d6",
+            "\1\u00d0\3\uffff\1\u00cf",
+            "\1\u00d2\1\uffff\1\u00d1",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u00d8",
-            "\1\u00d9",
-            "\1\u00da",
+            "\1\u00d4\16\uffff\1\u00d5\3\uffff\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8\1\u00d9\1\u00da",
             "\1\u00db",
-            "\1\u00dc",
-            "\1\u00dd",
-            "\1\u00de",
+            "\1\u00dd\11\uffff\1\u00dc\2\uffff\1\u00de",
+            "\1\u00df",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\12\u0095\10\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097\22\uffff\1\u0095\2\uffff\1\u0097\1\uffff\3\u0097\5\uffff\1\u0097",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u00e1",
             "\1\u00e2",
             "\1\u00e3",
             "\1\u00e4",
@@ -4417,87 +4535,109 @@
             "\1\u00e6",
             "\1\u00e7",
             "\1\u00e8",
-            "\1\u00e9",
-            "\1\u00ea",
-            "\1\u00eb",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u00ec",
             "\1\u00ed",
             "\1\u00ee",
             "\1\u00ef",
             "\1\u00f0",
             "\1\u00f1",
-            "",
-            "",
             "\1\u00f2",
             "\1\u00f3",
             "\1\u00f4",
             "\1\u00f5",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u00f6",
             "\1\u00f7",
             "\1\u00f8",
             "\1\u00f9",
             "\1\u00fa",
             "\1\u00fb",
             "\1\u00fc",
-            "\1\u00fd",
             "",
+            "",
+            "\1\u00fd",
             "\1\u00fe",
             "\1\u00ff",
             "\1\u0100",
-            "\1\u0101",
-            "\1\u0102",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0102",
+            "\1\u0103",
             "\1\u0104",
             "\1\u0105",
             "\1\u0106",
-            "",
             "\1\u0107",
-            "\1\u0108",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0109",
             "\1\u010a",
+            "",
             "\1\u010b",
             "\1\u010c",
             "\1\u010d",
             "\1\u010e",
             "\1\u010f",
             "\1\u0110",
-            "\1\u0111",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0112",
-            "",
             "\1\u0113",
             "\1\u0114",
+            "",
             "\1\u0115",
             "\1\u0116",
             "\1\u0117",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0118",
             "\1\u0119",
-            "",
-            "",
-            "",
             "\1\u011a",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u011b",
             "\1\u011c",
             "\1\u011d",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u011e",
             "\1\u011f",
             "\1\u0120",
+            "",
             "\1\u0121",
             "\1\u0122",
             "\1\u0123",
             "\1\u0124",
             "\1\u0125",
             "\1\u0126",
-            "\1\u0127",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0128",
+            "",
+            "",
+            "",
             "\1\u0129",
-            "\1\u012a",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u012b",
             "\1\u012c",
             "\1\u012d",
-            "",
-            "\1\u012e",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u012f",
-            "\1\130\13\uffff\12\130\7\uffff\22\130\1\u0130\7\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0130",
+            "\1\u0131",
             "\1\u0132",
             "\1\u0133",
             "\1\u0134",
@@ -4507,35 +4647,34 @@
             "\1\u0138",
             "\1\u0139",
             "\1\u013a",
-            "",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u013b",
             "\1\u013c",
             "\1\u013d",
+            "",
             "\1\u013e",
             "\1\u013f",
-            "\1\u0140",
-            "\1\u0141",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\130\13\uffff\12\130\7\uffff\22\130\1\u0140\7\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0142",
+            "\1\u0143",
             "\1\u0144",
+            "",
             "\1\u0145",
             "\1\u0146",
             "\1\u0147",
             "\1\u0148",
             "\1\u0149",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u014a",
             "\1\u014b",
             "\1\u014c",
-            "\1\u014d",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u014e",
+            "\1\u014f",
             "\1\u0150",
-            "",
-            "\1\u0151\16\uffff\1\u0152",
+            "\1\u0151",
+            "\1\u0152",
             "\1\u0153",
-            "",
-            "\1\u0154",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0156",
             "\1\u0157",
@@ -4543,177 +4682,169 @@
             "\1\u0159",
             "\1\u015a",
             "\1\u015b",
-            "\1\u015c",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u015d",
             "\1\u015e",
             "\1\u015f",
+            "\1\u0160",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u0161",
-            "\1\u0162",
-            "\1\u0163",
-            "\1\u0164",
-            "\1\u0165",
             "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0163",
+            "",
+            "\1\u0164\16\uffff\1\u0165",
             "\1\u0166",
             "\1\u0167",
+            "",
             "\1\u0168",
-            "\1\u0169",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u016a",
             "\1\u016b",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u016c",
             "\1\u016d",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "",
+            "\1\u016e",
             "\1\u016f",
             "\1\u0170",
             "\1\u0171",
             "\1\u0172",
             "\1\u0173",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "",
-            "",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0175",
             "\1\u0176",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0177",
             "\1\u0178",
             "\1\u0179",
-            "\1\u017a",
             "",
+            "\1\u017a",
             "\1\u017b",
             "\1\u017c",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "",
-            "",
+            "\1\u017d",
             "\1\u017e",
             "\1\u017f",
             "\1\u0180",
             "\1\u0181",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "",
             "\1\u0183",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\4\130\1\u0184\25\130",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\u0185",
+            "\1\u0186",
             "\1\u0187",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0188",
             "\1\u0189",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u018b",
-            "\1\u018c",
-            "\1\u018d",
             "",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u018c",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u018e",
             "\1\u018f",
             "\1\u0190",
+            "",
             "\1\u0191",
             "\1\u0192",
             "\1\u0193",
-            "\1\u0194",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "",
             "\1\u0195",
             "\1\u0196",
             "\1\u0197",
             "\1\u0198",
-            "",
+            "\1\u0199",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "",
-            "\1\u019a",
             "\1\u019b",
-            "\1\u019c",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\4\130\1\u019c\25\130",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u019f",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "",
-            "",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "",
-            "\1\u01a0",
             "\1\u01a1",
-            "\1\u01a2",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01a3",
             "\1\u01a4",
-            "",
             "\1\u01a5",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\u01a6",
             "\1\u01a7",
             "\1\u01a8",
-            "",
             "\1\u01a9",
             "\1\u01aa",
-            "",
-            "",
             "\1\u01ab",
-            "",
             "\1\u01ac",
-            "",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01ad",
             "\1\u01ae",
             "\1\u01af",
             "\1\u01b0",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01b1",
             "\1\u01b2",
+            "",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
             "\1\u01b4",
             "\1\u01b5",
+            "\1\u01b6",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u01b7",
-            "\1\u01b8",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u01ba",
             "",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\u01ba",
             "\1\u01bb",
             "\1\u01bc",
             "\1\u01bd",
-            "",
-            "",
-            "",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01bf",
+            "",
             "\1\u01c0",
-            "",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "",
+            "\1\u01c2",
             "\1\u01c3",
             "\1\u01c4",
+            "",
             "\1\u01c5",
             "\1\u01c6",
+            "",
+            "",
             "\1\u01c7",
+            "",
             "\1\u01c8",
             "",
-            "\1\u01c9",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01ca",
             "\1\u01cb",
-            "",
             "\1\u01cc",
-            "",
-            "\1\u01cd",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01ce",
-            "",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01d0",
-            "",
+            "\1\u01d1",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u01d2",
             "\1\u01d3",
             "\1\u01d4",
-            "",
             "\1\u01d5",
-            "\1\u01d6",
-            "",
-            "",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01d7",
             "\1\u01d8",
+            "",
             "\1\u01d9",
             "\1\u01da",
             "\1\u01db",
-            "\1\u01dc",
+            "",
+            "",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01dd",
             "\1\u01de",
-            "\1\u01df",
-            "\1\u01e0",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
             "\1\u01e2",
-            "",
             "\1\u01e3",
-            "",
             "\1\u01e4",
             "\1\u01e5",
             "\1\u01e6",
@@ -4723,65 +4854,125 @@
             "\1\u01e9",
             "\1\u01ea",
             "\1\u01eb",
+            "",
             "\1\u01ec",
+            "",
             "\1\u01ed",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01ee",
+            "",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01f0",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01f1",
             "",
-            "\1\u01f2",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01f3",
             "\1\u01f4",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01f5",
             "\1\u01f6",
+            "",
             "\1\u01f7",
             "\1\u01f8",
-            "\1\u01f9",
+            "",
+            "",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01fa",
             "\1\u01fb",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01fc",
             "\1\u01fd",
-            "",
-            "",
             "\1\u01fe",
-            "",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u01ff",
             "\1\u0200",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "",
+            "\1\u0201",
             "\1\u0202",
+            "\1\u0203",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u0204",
             "\1\u0205",
+            "",
             "\1\u0206",
             "\1\u0207",
             "",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0208",
             "\1\u0209",
-            "",
             "\1\u020a",
-            "",
             "\1\u020b",
-            "",
             "\1\u020c",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u020d",
+            "",
+            "\1\u020e",
             "\1\u020f",
-            "",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0210",
+            "\1\u0211",
+            "\1\u0212",
             "\1\u0213",
-            "",
-            "",
-            "\1\u0214",
-            "",
-            "",
-            "",
-            "\1\u0215",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0216",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\u0218",
+            "\1\u0219",
+            "\1\u021a",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u021c",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u021e",
+            "\1\u021f",
+            "\1\u0220",
+            "\1\u0221",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0226",
+            "",
+            "",
+            "\1\u0227",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0229",
+            "\1\u022a",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\u022c",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u022e",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0230",
+            "\1\u0231",
+            "\1\u0232",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0234",
+            "",
+            "\1\u0235",
+            "\1\u0236",
+            "",
+            "\1\u0237",
+            "",
+            "\1\u0238",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u023b",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u023e",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0240",
+            "",
+            "",
+            "\1\u0241",
+            "",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\u0243",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "",
             ""
     };
@@ -4816,7 +5007,7 @@
             this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             IntStream input = _input;
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
index 23eb52a..d93db7c 100644
--- 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
@@ -40,7 +40,7 @@
 @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'", "'readOnlyTable'", "'editableTable'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'bpmn'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "'title'", "'name'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'describedBy'", "'isClosable'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+        "<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'", "'eventManager'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'part'", "'view'", "'targetPart'", "'allowedSources'", "'select'", "'readOnlyTable'", "'editableTable'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'bpmn'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "'title'", "'name'", "'browser'", "'url'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'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;
@@ -56,10 +56,13 @@
     public static final int T__60=60;
     public static final int T__61=61;
     public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__130=130;
     public static final int RULE_INT=7;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=9;
     public static final int T__67=67;
+    public static final int T__129=129;
     public static final int T__68=68;
     public static final int T__69=69;
     public static final int T__62=62;
@@ -67,7 +70,9 @@
     public static final int T__63=63;
     public static final int T__125=125;
     public static final int T__64=64;
+    public static final int T__128=128;
     public static final int T__65=65;
+    public static final int T__127=127;
     public static final int T__37=37;
     public static final int T__38=38;
     public static final int T__39=39;
@@ -797,12 +802,182 @@
     // $ANTLR end "rulePerspectivePart"
 
 
+    // $ANTLR start "entryRulePerspectiveEventManager"
+    // InternalPerspectiveDsl.g:244:1: entryRulePerspectiveEventManager : rulePerspectiveEventManager EOF ;
+    public final void entryRulePerspectiveEventManager() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:245:1: ( rulePerspectiveEventManager EOF )
+            // InternalPerspectiveDsl.g:246:1: rulePerspectiveEventManager EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveEventManagerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveEventManager();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveEventManagerRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveEventManager"
+
+
+    // $ANTLR start "rulePerspectiveEventManager"
+    // InternalPerspectiveDsl.g:253:1: rulePerspectiveEventManager : ( ( rule__PerspectiveEventManager__Group__0 ) ) ;
+    public final void rulePerspectiveEventManager() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:257:2: ( ( ( rule__PerspectiveEventManager__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:258:2: ( ( rule__PerspectiveEventManager__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:258:2: ( ( rule__PerspectiveEventManager__Group__0 ) )
+            // InternalPerspectiveDsl.g:259:3: ( rule__PerspectiveEventManager__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveEventManagerAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:260:3: ( rule__PerspectiveEventManager__Group__0 )
+            // InternalPerspectiveDsl.g:260:4: rule__PerspectiveEventManager__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveEventManager__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveEventManagerAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveEventManager"
+
+
+    // $ANTLR start "entryRulePerspectiveEvent"
+    // InternalPerspectiveDsl.g:269:1: entryRulePerspectiveEvent : rulePerspectiveEvent EOF ;
+    public final void entryRulePerspectiveEvent() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:270:1: ( rulePerspectiveEvent EOF )
+            // InternalPerspectiveDsl.g:271:1: rulePerspectiveEvent EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveEventRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveEvent();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveEventRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveEvent"
+
+
+    // $ANTLR start "rulePerspectiveEvent"
+    // InternalPerspectiveDsl.g:278:1: rulePerspectiveEvent : ( ( rule__PerspectiveEvent__Group__0 ) ) ;
+    public final void rulePerspectiveEvent() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:282:2: ( ( ( rule__PerspectiveEvent__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:283:2: ( ( rule__PerspectiveEvent__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:283:2: ( ( rule__PerspectiveEvent__Group__0 ) )
+            // InternalPerspectiveDsl.g:284:3: ( rule__PerspectiveEvent__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveEventAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:285:3: ( rule__PerspectiveEvent__Group__0 )
+            // InternalPerspectiveDsl.g:285:4: rule__PerspectiveEvent__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveEvent__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveEventAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveEvent"
+
+
     // $ANTLR start "entryRulePerspectiveView"
-    // InternalPerspectiveDsl.g:244:1: entryRulePerspectiveView : rulePerspectiveView EOF ;
+    // InternalPerspectiveDsl.g:294:1: entryRulePerspectiveView : rulePerspectiveView EOF ;
     public final void entryRulePerspectiveView() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:245:1: ( rulePerspectiveView EOF )
-            // InternalPerspectiveDsl.g:246:1: rulePerspectiveView EOF
+            // InternalPerspectiveDsl.g:295:1: ( rulePerspectiveView EOF )
+            // InternalPerspectiveDsl.g:296:1: rulePerspectiveView EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveViewRule()); 
@@ -832,23 +1007,23 @@
 
 
     // $ANTLR start "rulePerspectiveView"
-    // InternalPerspectiveDsl.g:253:1: rulePerspectiveView : ( ( rule__PerspectiveView__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:303:1: rulePerspectiveView : ( ( rule__PerspectiveView__Alternatives ) ) ;
     public final void rulePerspectiveView() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:257:2: ( ( ( rule__PerspectiveView__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:258:2: ( ( rule__PerspectiveView__Alternatives ) )
+            // InternalPerspectiveDsl.g:307:2: ( ( ( rule__PerspectiveView__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:308:2: ( ( rule__PerspectiveView__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:258:2: ( ( rule__PerspectiveView__Alternatives ) )
-            // InternalPerspectiveDsl.g:259:3: ( rule__PerspectiveView__Alternatives )
+            // InternalPerspectiveDsl.g:308:2: ( ( rule__PerspectiveView__Alternatives ) )
+            // InternalPerspectiveDsl.g:309:3: ( rule__PerspectiveView__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveViewAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:260:3: ( rule__PerspectiveView__Alternatives )
-            // InternalPerspectiveDsl.g:260:4: rule__PerspectiveView__Alternatives
+            // InternalPerspectiveDsl.g:310:3: ( rule__PerspectiveView__Alternatives )
+            // InternalPerspectiveDsl.g:310:4: rule__PerspectiveView__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveView__Alternatives();
@@ -883,11 +1058,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveSelection"
-    // InternalPerspectiveDsl.g:269:1: entryRulePerspectiveSelection : rulePerspectiveSelection EOF ;
+    // InternalPerspectiveDsl.g:319:1: entryRulePerspectiveSelection : rulePerspectiveSelection EOF ;
     public final void entryRulePerspectiveSelection() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:270:1: ( rulePerspectiveSelection EOF )
-            // InternalPerspectiveDsl.g:271:1: rulePerspectiveSelection EOF
+            // InternalPerspectiveDsl.g:320:1: ( rulePerspectiveSelection EOF )
+            // InternalPerspectiveDsl.g:321:1: rulePerspectiveSelection EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionRule()); 
@@ -917,23 +1092,23 @@
 
 
     // $ANTLR start "rulePerspectiveSelection"
-    // InternalPerspectiveDsl.g:278:1: rulePerspectiveSelection : ( ( rule__PerspectiveSelection__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:328:1: rulePerspectiveSelection : ( ( rule__PerspectiveSelection__Group__0 ) ) ;
     public final void rulePerspectiveSelection() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:282:2: ( ( ( rule__PerspectiveSelection__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:283:2: ( ( rule__PerspectiveSelection__Group__0 ) )
+            // InternalPerspectiveDsl.g:332:2: ( ( ( rule__PerspectiveSelection__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:333:2: ( ( rule__PerspectiveSelection__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:283:2: ( ( rule__PerspectiveSelection__Group__0 ) )
-            // InternalPerspectiveDsl.g:284:3: ( rule__PerspectiveSelection__Group__0 )
+            // InternalPerspectiveDsl.g:333:2: ( ( rule__PerspectiveSelection__Group__0 ) )
+            // InternalPerspectiveDsl.g:334:3: ( rule__PerspectiveSelection__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:285:3: ( rule__PerspectiveSelection__Group__0 )
-            // InternalPerspectiveDsl.g:285:4: rule__PerspectiveSelection__Group__0
+            // InternalPerspectiveDsl.g:335:3: ( rule__PerspectiveSelection__Group__0 )
+            // InternalPerspectiveDsl.g:335:4: rule__PerspectiveSelection__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSelection__Group__0();
@@ -968,11 +1143,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveTable"
-    // InternalPerspectiveDsl.g:294:1: entryRulePerspectiveTable : rulePerspectiveTable EOF ;
+    // InternalPerspectiveDsl.g:344:1: entryRulePerspectiveTable : rulePerspectiveTable EOF ;
     public final void entryRulePerspectiveTable() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:295:1: ( rulePerspectiveTable EOF )
-            // InternalPerspectiveDsl.g:296:1: rulePerspectiveTable EOF
+            // InternalPerspectiveDsl.g:345:1: ( rulePerspectiveTable EOF )
+            // InternalPerspectiveDsl.g:346:1: rulePerspectiveTable EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableRule()); 
@@ -1002,23 +1177,23 @@
 
 
     // $ANTLR start "rulePerspectiveTable"
-    // InternalPerspectiveDsl.g:303:1: rulePerspectiveTable : ( ( rule__PerspectiveTable__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:353:1: rulePerspectiveTable : ( ( rule__PerspectiveTable__Group__0 ) ) ;
     public final void rulePerspectiveTable() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:307:2: ( ( ( rule__PerspectiveTable__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:308:2: ( ( rule__PerspectiveTable__Group__0 ) )
+            // InternalPerspectiveDsl.g:357:2: ( ( ( rule__PerspectiveTable__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:358:2: ( ( rule__PerspectiveTable__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:308:2: ( ( rule__PerspectiveTable__Group__0 ) )
-            // InternalPerspectiveDsl.g:309:3: ( rule__PerspectiveTable__Group__0 )
+            // InternalPerspectiveDsl.g:358:2: ( ( rule__PerspectiveTable__Group__0 ) )
+            // InternalPerspectiveDsl.g:359:3: ( rule__PerspectiveTable__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:310:3: ( rule__PerspectiveTable__Group__0 )
-            // InternalPerspectiveDsl.g:310:4: rule__PerspectiveTable__Group__0
+            // InternalPerspectiveDsl.g:360:3: ( rule__PerspectiveTable__Group__0 )
+            // InternalPerspectiveDsl.g:360:4: rule__PerspectiveTable__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTable__Group__0();
@@ -1053,11 +1228,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveGrid"
-    // InternalPerspectiveDsl.g:319:1: entryRulePerspectiveGrid : rulePerspectiveGrid EOF ;
+    // InternalPerspectiveDsl.g:369:1: entryRulePerspectiveGrid : rulePerspectiveGrid EOF ;
     public final void entryRulePerspectiveGrid() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:320:1: ( rulePerspectiveGrid EOF )
-            // InternalPerspectiveDsl.g:321:1: rulePerspectiveGrid EOF
+            // InternalPerspectiveDsl.g:370:1: ( rulePerspectiveGrid EOF )
+            // InternalPerspectiveDsl.g:371:1: rulePerspectiveGrid EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridRule()); 
@@ -1087,23 +1262,23 @@
 
 
     // $ANTLR start "rulePerspectiveGrid"
-    // InternalPerspectiveDsl.g:328:1: rulePerspectiveGrid : ( ( rule__PerspectiveGrid__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:378:1: rulePerspectiveGrid : ( ( rule__PerspectiveGrid__Group__0 ) ) ;
     public final void rulePerspectiveGrid() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:332:2: ( ( ( rule__PerspectiveGrid__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:333:2: ( ( rule__PerspectiveGrid__Group__0 ) )
+            // InternalPerspectiveDsl.g:382:2: ( ( ( rule__PerspectiveGrid__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:383:2: ( ( rule__PerspectiveGrid__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:333:2: ( ( rule__PerspectiveGrid__Group__0 ) )
-            // InternalPerspectiveDsl.g:334:3: ( rule__PerspectiveGrid__Group__0 )
+            // InternalPerspectiveDsl.g:383:2: ( ( rule__PerspectiveGrid__Group__0 ) )
+            // InternalPerspectiveDsl.g:384:3: ( rule__PerspectiveGrid__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:335:3: ( rule__PerspectiveGrid__Group__0 )
-            // InternalPerspectiveDsl.g:335:4: rule__PerspectiveGrid__Group__0
+            // InternalPerspectiveDsl.g:385:3: ( rule__PerspectiveGrid__Group__0 )
+            // InternalPerspectiveDsl.g:385:4: rule__PerspectiveGrid__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveGrid__Group__0();
@@ -1138,11 +1313,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveChart"
-    // InternalPerspectiveDsl.g:344:1: entryRulePerspectiveChart : rulePerspectiveChart EOF ;
+    // InternalPerspectiveDsl.g:394:1: entryRulePerspectiveChart : rulePerspectiveChart EOF ;
     public final void entryRulePerspectiveChart() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:345:1: ( rulePerspectiveChart EOF )
-            // InternalPerspectiveDsl.g:346:1: rulePerspectiveChart EOF
+            // InternalPerspectiveDsl.g:395:1: ( rulePerspectiveChart EOF )
+            // InternalPerspectiveDsl.g:396:1: rulePerspectiveChart EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartRule()); 
@@ -1172,23 +1347,23 @@
 
 
     // $ANTLR start "rulePerspectiveChart"
-    // InternalPerspectiveDsl.g:353:1: rulePerspectiveChart : ( ( rule__PerspectiveChart__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:403:1: rulePerspectiveChart : ( ( rule__PerspectiveChart__Group__0 ) ) ;
     public final void rulePerspectiveChart() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:357:2: ( ( ( rule__PerspectiveChart__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:358:2: ( ( rule__PerspectiveChart__Group__0 ) )
+            // InternalPerspectiveDsl.g:407:2: ( ( ( rule__PerspectiveChart__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:408:2: ( ( rule__PerspectiveChart__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:358:2: ( ( rule__PerspectiveChart__Group__0 ) )
-            // InternalPerspectiveDsl.g:359:3: ( rule__PerspectiveChart__Group__0 )
+            // InternalPerspectiveDsl.g:408:2: ( ( rule__PerspectiveChart__Group__0 ) )
+            // InternalPerspectiveDsl.g:409:3: ( rule__PerspectiveChart__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:360:3: ( rule__PerspectiveChart__Group__0 )
-            // InternalPerspectiveDsl.g:360:4: rule__PerspectiveChart__Group__0
+            // InternalPerspectiveDsl.g:410:3: ( rule__PerspectiveChart__Group__0 )
+            // InternalPerspectiveDsl.g:410:4: rule__PerspectiveChart__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveChart__Group__0();
@@ -1223,11 +1398,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveReport"
-    // InternalPerspectiveDsl.g:369:1: entryRulePerspectiveReport : rulePerspectiveReport EOF ;
+    // InternalPerspectiveDsl.g:419:1: entryRulePerspectiveReport : rulePerspectiveReport EOF ;
     public final void entryRulePerspectiveReport() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:370:1: ( rulePerspectiveReport EOF )
-            // InternalPerspectiveDsl.g:371:1: rulePerspectiveReport EOF
+            // InternalPerspectiveDsl.g:420:1: ( rulePerspectiveReport EOF )
+            // InternalPerspectiveDsl.g:421:1: rulePerspectiveReport EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportRule()); 
@@ -1257,23 +1432,23 @@
 
 
     // $ANTLR start "rulePerspectiveReport"
-    // InternalPerspectiveDsl.g:378:1: rulePerspectiveReport : ( ( rule__PerspectiveReport__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:428:1: rulePerspectiveReport : ( ( rule__PerspectiveReport__Group__0 ) ) ;
     public final void rulePerspectiveReport() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:382:2: ( ( ( rule__PerspectiveReport__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:383:2: ( ( rule__PerspectiveReport__Group__0 ) )
+            // InternalPerspectiveDsl.g:432:2: ( ( ( rule__PerspectiveReport__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:433:2: ( ( rule__PerspectiveReport__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:383:2: ( ( rule__PerspectiveReport__Group__0 ) )
-            // InternalPerspectiveDsl.g:384:3: ( rule__PerspectiveReport__Group__0 )
+            // InternalPerspectiveDsl.g:433:2: ( ( rule__PerspectiveReport__Group__0 ) )
+            // InternalPerspectiveDsl.g:434:3: ( rule__PerspectiveReport__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:385:3: ( rule__PerspectiveReport__Group__0 )
-            // InternalPerspectiveDsl.g:385:4: rule__PerspectiveReport__Group__0
+            // InternalPerspectiveDsl.g:435:3: ( rule__PerspectiveReport__Group__0 )
+            // InternalPerspectiveDsl.g:435:4: rule__PerspectiveReport__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveReport__Group__0();
@@ -1308,11 +1483,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveOrganization"
-    // InternalPerspectiveDsl.g:394:1: entryRulePerspectiveOrganization : rulePerspectiveOrganization EOF ;
+    // InternalPerspectiveDsl.g:444:1: entryRulePerspectiveOrganization : rulePerspectiveOrganization EOF ;
     public final void entryRulePerspectiveOrganization() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:395:1: ( rulePerspectiveOrganization EOF )
-            // InternalPerspectiveDsl.g:396:1: rulePerspectiveOrganization EOF
+            // InternalPerspectiveDsl.g:445:1: ( rulePerspectiveOrganization EOF )
+            // InternalPerspectiveDsl.g:446:1: rulePerspectiveOrganization EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationRule()); 
@@ -1342,23 +1517,23 @@
 
 
     // $ANTLR start "rulePerspectiveOrganization"
-    // InternalPerspectiveDsl.g:403:1: rulePerspectiveOrganization : ( ( rule__PerspectiveOrganization__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:453:1: rulePerspectiveOrganization : ( ( rule__PerspectiveOrganization__Group__0 ) ) ;
     public final void rulePerspectiveOrganization() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:407:2: ( ( ( rule__PerspectiveOrganization__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:408:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
+            // InternalPerspectiveDsl.g:457:2: ( ( ( rule__PerspectiveOrganization__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:458:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:408:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
-            // InternalPerspectiveDsl.g:409:3: ( rule__PerspectiveOrganization__Group__0 )
+            // InternalPerspectiveDsl.g:458:2: ( ( rule__PerspectiveOrganization__Group__0 ) )
+            // InternalPerspectiveDsl.g:459:3: ( rule__PerspectiveOrganization__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:410:3: ( rule__PerspectiveOrganization__Group__0 )
-            // InternalPerspectiveDsl.g:410:4: rule__PerspectiveOrganization__Group__0
+            // InternalPerspectiveDsl.g:460:3: ( rule__PerspectiveOrganization__Group__0 )
+            // InternalPerspectiveDsl.g:460:4: rule__PerspectiveOrganization__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveOrganization__Group__0();
@@ -1393,11 +1568,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveTopology"
-    // InternalPerspectiveDsl.g:419:1: entryRulePerspectiveTopology : rulePerspectiveTopology EOF ;
+    // InternalPerspectiveDsl.g:469:1: entryRulePerspectiveTopology : rulePerspectiveTopology EOF ;
     public final void entryRulePerspectiveTopology() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:420:1: ( rulePerspectiveTopology EOF )
-            // InternalPerspectiveDsl.g:421:1: rulePerspectiveTopology EOF
+            // InternalPerspectiveDsl.g:470:1: ( rulePerspectiveTopology EOF )
+            // InternalPerspectiveDsl.g:471:1: rulePerspectiveTopology EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyRule()); 
@@ -1427,23 +1602,23 @@
 
 
     // $ANTLR start "rulePerspectiveTopology"
-    // InternalPerspectiveDsl.g:428:1: rulePerspectiveTopology : ( ( rule__PerspectiveTopology__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:478:1: rulePerspectiveTopology : ( ( rule__PerspectiveTopology__Group__0 ) ) ;
     public final void rulePerspectiveTopology() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:432:2: ( ( ( rule__PerspectiveTopology__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:433:2: ( ( rule__PerspectiveTopology__Group__0 ) )
+            // InternalPerspectiveDsl.g:482:2: ( ( ( rule__PerspectiveTopology__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:483:2: ( ( rule__PerspectiveTopology__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:433:2: ( ( rule__PerspectiveTopology__Group__0 ) )
-            // InternalPerspectiveDsl.g:434:3: ( rule__PerspectiveTopology__Group__0 )
+            // InternalPerspectiveDsl.g:483:2: ( ( rule__PerspectiveTopology__Group__0 ) )
+            // InternalPerspectiveDsl.g:484:3: ( rule__PerspectiveTopology__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:435:3: ( rule__PerspectiveTopology__Group__0 )
-            // InternalPerspectiveDsl.g:435:4: rule__PerspectiveTopology__Group__0
+            // InternalPerspectiveDsl.g:485:3: ( rule__PerspectiveTopology__Group__0 )
+            // InternalPerspectiveDsl.g:485:4: rule__PerspectiveTopology__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTopology__Group__0();
@@ -1478,11 +1653,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveDialog"
-    // InternalPerspectiveDsl.g:444:1: entryRulePerspectiveDialog : rulePerspectiveDialog EOF ;
+    // InternalPerspectiveDsl.g:494:1: entryRulePerspectiveDialog : rulePerspectiveDialog EOF ;
     public final void entryRulePerspectiveDialog() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:445:1: ( rulePerspectiveDialog EOF )
-            // InternalPerspectiveDsl.g:446:1: rulePerspectiveDialog EOF
+            // InternalPerspectiveDsl.g:495:1: ( rulePerspectiveDialog EOF )
+            // InternalPerspectiveDsl.g:496:1: rulePerspectiveDialog EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogRule()); 
@@ -1512,23 +1687,23 @@
 
 
     // $ANTLR start "rulePerspectiveDialog"
-    // InternalPerspectiveDsl.g:453:1: rulePerspectiveDialog : ( ( rule__PerspectiveDialog__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:503:1: rulePerspectiveDialog : ( ( rule__PerspectiveDialog__Group__0 ) ) ;
     public final void rulePerspectiveDialog() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:457:2: ( ( ( rule__PerspectiveDialog__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:458:2: ( ( rule__PerspectiveDialog__Group__0 ) )
+            // InternalPerspectiveDsl.g:507:2: ( ( ( rule__PerspectiveDialog__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:508:2: ( ( rule__PerspectiveDialog__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:458:2: ( ( rule__PerspectiveDialog__Group__0 ) )
-            // InternalPerspectiveDsl.g:459:3: ( rule__PerspectiveDialog__Group__0 )
+            // InternalPerspectiveDsl.g:508:2: ( ( rule__PerspectiveDialog__Group__0 ) )
+            // InternalPerspectiveDsl.g:509:3: ( rule__PerspectiveDialog__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:460:3: ( rule__PerspectiveDialog__Group__0 )
-            // InternalPerspectiveDsl.g:460:4: rule__PerspectiveDialog__Group__0
+            // InternalPerspectiveDsl.g:510:3: ( rule__PerspectiveDialog__Group__0 )
+            // InternalPerspectiveDsl.g:510:4: rule__PerspectiveDialog__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDialog__Group__0();
@@ -1563,11 +1738,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveBPMN"
-    // InternalPerspectiveDsl.g:469:1: entryRulePerspectiveBPMN : rulePerspectiveBPMN EOF ;
+    // InternalPerspectiveDsl.g:519:1: entryRulePerspectiveBPMN : rulePerspectiveBPMN EOF ;
     public final void entryRulePerspectiveBPMN() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:470:1: ( rulePerspectiveBPMN EOF )
-            // InternalPerspectiveDsl.g:471:1: rulePerspectiveBPMN EOF
+            // InternalPerspectiveDsl.g:520:1: ( rulePerspectiveBPMN EOF )
+            // InternalPerspectiveDsl.g:521:1: rulePerspectiveBPMN EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveBPMNRule()); 
@@ -1597,23 +1772,23 @@
 
 
     // $ANTLR start "rulePerspectiveBPMN"
-    // InternalPerspectiveDsl.g:478:1: rulePerspectiveBPMN : ( ( rule__PerspectiveBPMN__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:528:1: rulePerspectiveBPMN : ( ( rule__PerspectiveBPMN__Group__0 ) ) ;
     public final void rulePerspectiveBPMN() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:482:2: ( ( ( rule__PerspectiveBPMN__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:483:2: ( ( rule__PerspectiveBPMN__Group__0 ) )
+            // InternalPerspectiveDsl.g:532:2: ( ( ( rule__PerspectiveBPMN__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:533:2: ( ( rule__PerspectiveBPMN__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:483:2: ( ( rule__PerspectiveBPMN__Group__0 ) )
-            // InternalPerspectiveDsl.g:484:3: ( rule__PerspectiveBPMN__Group__0 )
+            // InternalPerspectiveDsl.g:533:2: ( ( rule__PerspectiveBPMN__Group__0 ) )
+            // InternalPerspectiveDsl.g:534:3: ( rule__PerspectiveBPMN__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveBPMNAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:485:3: ( rule__PerspectiveBPMN__Group__0 )
-            // InternalPerspectiveDsl.g:485:4: rule__PerspectiveBPMN__Group__0
+            // InternalPerspectiveDsl.g:535:3: ( rule__PerspectiveBPMN__Group__0 )
+            // InternalPerspectiveDsl.g:535:4: rule__PerspectiveBPMN__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveBPMN__Group__0();
@@ -1648,11 +1823,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveKanban"
-    // InternalPerspectiveDsl.g:494:1: entryRulePerspectiveKanban : rulePerspectiveKanban EOF ;
+    // InternalPerspectiveDsl.g:544:1: entryRulePerspectiveKanban : rulePerspectiveKanban EOF ;
     public final void entryRulePerspectiveKanban() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:495:1: ( rulePerspectiveKanban EOF )
-            // InternalPerspectiveDsl.g:496:1: rulePerspectiveKanban EOF
+            // InternalPerspectiveDsl.g:545:1: ( rulePerspectiveKanban EOF )
+            // InternalPerspectiveDsl.g:546:1: rulePerspectiveKanban EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanRule()); 
@@ -1682,23 +1857,23 @@
 
 
     // $ANTLR start "rulePerspectiveKanban"
-    // InternalPerspectiveDsl.g:503:1: rulePerspectiveKanban : ( ( rule__PerspectiveKanban__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:553:1: rulePerspectiveKanban : ( ( rule__PerspectiveKanban__Group__0 ) ) ;
     public final void rulePerspectiveKanban() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:507:2: ( ( ( rule__PerspectiveKanban__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:508:2: ( ( rule__PerspectiveKanban__Group__0 ) )
+            // InternalPerspectiveDsl.g:557:2: ( ( ( rule__PerspectiveKanban__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:558:2: ( ( rule__PerspectiveKanban__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:508:2: ( ( rule__PerspectiveKanban__Group__0 ) )
-            // InternalPerspectiveDsl.g:509:3: ( rule__PerspectiveKanban__Group__0 )
+            // InternalPerspectiveDsl.g:558:2: ( ( rule__PerspectiveKanban__Group__0 ) )
+            // InternalPerspectiveDsl.g:559:3: ( rule__PerspectiveKanban__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:510:3: ( rule__PerspectiveKanban__Group__0 )
-            // InternalPerspectiveDsl.g:510:4: rule__PerspectiveKanban__Group__0
+            // InternalPerspectiveDsl.g:560:3: ( rule__PerspectiveKanban__Group__0 )
+            // InternalPerspectiveDsl.g:560:4: rule__PerspectiveKanban__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveKanban__Group__0();
@@ -1733,11 +1908,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveWelcome"
-    // InternalPerspectiveDsl.g:519:1: entryRulePerspectiveWelcome : rulePerspectiveWelcome EOF ;
+    // InternalPerspectiveDsl.g:569:1: entryRulePerspectiveWelcome : rulePerspectiveWelcome EOF ;
     public final void entryRulePerspectiveWelcome() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:520:1: ( rulePerspectiveWelcome EOF )
-            // InternalPerspectiveDsl.g:521:1: rulePerspectiveWelcome EOF
+            // InternalPerspectiveDsl.g:570:1: ( rulePerspectiveWelcome EOF )
+            // InternalPerspectiveDsl.g:571:1: rulePerspectiveWelcome EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveWelcomeRule()); 
@@ -1767,23 +1942,23 @@
 
 
     // $ANTLR start "rulePerspectiveWelcome"
-    // InternalPerspectiveDsl.g:528:1: rulePerspectiveWelcome : ( ( rule__PerspectiveWelcome__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:578:1: rulePerspectiveWelcome : ( ( rule__PerspectiveWelcome__Group__0 ) ) ;
     public final void rulePerspectiveWelcome() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:532:2: ( ( ( rule__PerspectiveWelcome__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:533:2: ( ( rule__PerspectiveWelcome__Group__0 ) )
+            // InternalPerspectiveDsl.g:582:2: ( ( ( rule__PerspectiveWelcome__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:583:2: ( ( rule__PerspectiveWelcome__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:533:2: ( ( rule__PerspectiveWelcome__Group__0 ) )
-            // InternalPerspectiveDsl.g:534:3: ( rule__PerspectiveWelcome__Group__0 )
+            // InternalPerspectiveDsl.g:583:2: ( ( rule__PerspectiveWelcome__Group__0 ) )
+            // InternalPerspectiveDsl.g:584:3: ( rule__PerspectiveWelcome__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveWelcomeAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:535:3: ( rule__PerspectiveWelcome__Group__0 )
-            // InternalPerspectiveDsl.g:535:4: rule__PerspectiveWelcome__Group__0
+            // InternalPerspectiveDsl.g:585:3: ( rule__PerspectiveWelcome__Group__0 )
+            // InternalPerspectiveDsl.g:585:4: rule__PerspectiveWelcome__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveWelcome__Group__0();
@@ -1818,11 +1993,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveSearch"
-    // InternalPerspectiveDsl.g:544:1: entryRulePerspectiveSearch : rulePerspectiveSearch EOF ;
+    // InternalPerspectiveDsl.g:594:1: entryRulePerspectiveSearch : rulePerspectiveSearch EOF ;
     public final void entryRulePerspectiveSearch() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:545:1: ( rulePerspectiveSearch EOF )
-            // InternalPerspectiveDsl.g:546:1: rulePerspectiveSearch EOF
+            // InternalPerspectiveDsl.g:595:1: ( rulePerspectiveSearch EOF )
+            // InternalPerspectiveDsl.g:596:1: rulePerspectiveSearch EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchRule()); 
@@ -1852,23 +2027,23 @@
 
 
     // $ANTLR start "rulePerspectiveSearch"
-    // InternalPerspectiveDsl.g:553:1: rulePerspectiveSearch : ( ( rule__PerspectiveSearch__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:603:1: rulePerspectiveSearch : ( ( rule__PerspectiveSearch__Group__0 ) ) ;
     public final void rulePerspectiveSearch() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:557:2: ( ( ( rule__PerspectiveSearch__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:558:2: ( ( rule__PerspectiveSearch__Group__0 ) )
+            // InternalPerspectiveDsl.g:607:2: ( ( ( rule__PerspectiveSearch__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:608:2: ( ( rule__PerspectiveSearch__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:558:2: ( ( rule__PerspectiveSearch__Group__0 ) )
-            // InternalPerspectiveDsl.g:559:3: ( rule__PerspectiveSearch__Group__0 )
+            // InternalPerspectiveDsl.g:608:2: ( ( rule__PerspectiveSearch__Group__0 ) )
+            // InternalPerspectiveDsl.g:609:3: ( rule__PerspectiveSearch__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:560:3: ( rule__PerspectiveSearch__Group__0 )
-            // InternalPerspectiveDsl.g:560:4: rule__PerspectiveSearch__Group__0
+            // InternalPerspectiveDsl.g:610:3: ( rule__PerspectiveSearch__Group__0 )
+            // InternalPerspectiveDsl.g:610:4: rule__PerspectiveSearch__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__Group__0();
@@ -1903,11 +2078,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveDataInterchange"
-    // InternalPerspectiveDsl.g:569:1: entryRulePerspectiveDataInterchange : rulePerspectiveDataInterchange EOF ;
+    // InternalPerspectiveDsl.g:619:1: entryRulePerspectiveDataInterchange : rulePerspectiveDataInterchange EOF ;
     public final void entryRulePerspectiveDataInterchange() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:570:1: ( rulePerspectiveDataInterchange EOF )
-            // InternalPerspectiveDsl.g:571:1: rulePerspectiveDataInterchange EOF
+            // InternalPerspectiveDsl.g:620:1: ( rulePerspectiveDataInterchange EOF )
+            // InternalPerspectiveDsl.g:621:1: rulePerspectiveDataInterchange EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeRule()); 
@@ -1937,23 +2112,23 @@
 
 
     // $ANTLR start "rulePerspectiveDataInterchange"
-    // InternalPerspectiveDsl.g:578:1: rulePerspectiveDataInterchange : ( ( rule__PerspectiveDataInterchange__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:628:1: rulePerspectiveDataInterchange : ( ( rule__PerspectiveDataInterchange__Group__0 ) ) ;
     public final void rulePerspectiveDataInterchange() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:582:2: ( ( ( rule__PerspectiveDataInterchange__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:583:2: ( ( rule__PerspectiveDataInterchange__Group__0 ) )
+            // InternalPerspectiveDsl.g:632:2: ( ( ( rule__PerspectiveDataInterchange__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:633:2: ( ( rule__PerspectiveDataInterchange__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:583:2: ( ( rule__PerspectiveDataInterchange__Group__0 ) )
-            // InternalPerspectiveDsl.g:584:3: ( rule__PerspectiveDataInterchange__Group__0 )
+            // InternalPerspectiveDsl.g:633:2: ( ( rule__PerspectiveDataInterchange__Group__0 ) )
+            // InternalPerspectiveDsl.g:634:3: ( rule__PerspectiveDataInterchange__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:585:3: ( rule__PerspectiveDataInterchange__Group__0 )
-            // InternalPerspectiveDsl.g:585:4: rule__PerspectiveDataInterchange__Group__0
+            // InternalPerspectiveDsl.g:635:3: ( rule__PerspectiveDataInterchange__Group__0 )
+            // InternalPerspectiveDsl.g:635:4: rule__PerspectiveDataInterchange__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDataInterchange__Group__0();
@@ -1988,11 +2163,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveTitle"
-    // InternalPerspectiveDsl.g:594:1: entryRulePerspectiveTitle : rulePerspectiveTitle EOF ;
+    // InternalPerspectiveDsl.g:644:1: entryRulePerspectiveTitle : rulePerspectiveTitle EOF ;
     public final void entryRulePerspectiveTitle() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:595:1: ( rulePerspectiveTitle EOF )
-            // InternalPerspectiveDsl.g:596:1: rulePerspectiveTitle EOF
+            // InternalPerspectiveDsl.g:645:1: ( rulePerspectiveTitle EOF )
+            // InternalPerspectiveDsl.g:646:1: rulePerspectiveTitle EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTitleRule()); 
@@ -2022,23 +2197,23 @@
 
 
     // $ANTLR start "rulePerspectiveTitle"
-    // InternalPerspectiveDsl.g:603:1: rulePerspectiveTitle : ( ( rule__PerspectiveTitle__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:653:1: rulePerspectiveTitle : ( ( rule__PerspectiveTitle__Group__0 ) ) ;
     public final void rulePerspectiveTitle() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:607:2: ( ( ( rule__PerspectiveTitle__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:608:2: ( ( rule__PerspectiveTitle__Group__0 ) )
+            // InternalPerspectiveDsl.g:657:2: ( ( ( rule__PerspectiveTitle__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:658:2: ( ( rule__PerspectiveTitle__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:608:2: ( ( rule__PerspectiveTitle__Group__0 ) )
-            // InternalPerspectiveDsl.g:609:3: ( rule__PerspectiveTitle__Group__0 )
+            // InternalPerspectiveDsl.g:658:2: ( ( rule__PerspectiveTitle__Group__0 ) )
+            // InternalPerspectiveDsl.g:659:3: ( rule__PerspectiveTitle__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTitleAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:610:3: ( rule__PerspectiveTitle__Group__0 )
-            // InternalPerspectiveDsl.g:610:4: rule__PerspectiveTitle__Group__0
+            // InternalPerspectiveDsl.g:660:3: ( rule__PerspectiveTitle__Group__0 )
+            // InternalPerspectiveDsl.g:660:4: rule__PerspectiveTitle__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTitle__Group__0();
@@ -2073,11 +2248,11 @@
 
 
     // $ANTLR start "entryRulePerspectiveDashboard"
-    // InternalPerspectiveDsl.g:619:1: entryRulePerspectiveDashboard : rulePerspectiveDashboard EOF ;
+    // InternalPerspectiveDsl.g:669:1: entryRulePerspectiveDashboard : rulePerspectiveDashboard EOF ;
     public final void entryRulePerspectiveDashboard() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:620:1: ( rulePerspectiveDashboard EOF )
-            // InternalPerspectiveDsl.g:621:1: rulePerspectiveDashboard EOF
+            // InternalPerspectiveDsl.g:670:1: ( rulePerspectiveDashboard EOF )
+            // InternalPerspectiveDsl.g:671:1: rulePerspectiveDashboard EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDashboardRule()); 
@@ -2107,23 +2282,23 @@
 
 
     // $ANTLR start "rulePerspectiveDashboard"
-    // InternalPerspectiveDsl.g:628:1: rulePerspectiveDashboard : ( ( rule__PerspectiveDashboard__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:678:1: rulePerspectiveDashboard : ( ( rule__PerspectiveDashboard__Group__0 ) ) ;
     public final void rulePerspectiveDashboard() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:632:2: ( ( ( rule__PerspectiveDashboard__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:633:2: ( ( rule__PerspectiveDashboard__Group__0 ) )
+            // InternalPerspectiveDsl.g:682:2: ( ( ( rule__PerspectiveDashboard__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:683:2: ( ( rule__PerspectiveDashboard__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:633:2: ( ( rule__PerspectiveDashboard__Group__0 ) )
-            // InternalPerspectiveDsl.g:634:3: ( rule__PerspectiveDashboard__Group__0 )
+            // InternalPerspectiveDsl.g:683:2: ( ( rule__PerspectiveDashboard__Group__0 ) )
+            // InternalPerspectiveDsl.g:684:3: ( rule__PerspectiveDashboard__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDashboardAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:635:3: ( rule__PerspectiveDashboard__Group__0 )
-            // InternalPerspectiveDsl.g:635:4: rule__PerspectiveDashboard__Group__0
+            // InternalPerspectiveDsl.g:685:3: ( rule__PerspectiveDashboard__Group__0 )
+            // InternalPerspectiveDsl.g:685:4: rule__PerspectiveDashboard__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDashboard__Group__0();
@@ -2157,12 +2332,97 @@
     // $ANTLR end "rulePerspectiveDashboard"
 
 
+    // $ANTLR start "entryRulePerspectiveBrowser"
+    // InternalPerspectiveDsl.g:694:1: entryRulePerspectiveBrowser : rulePerspectiveBrowser EOF ;
+    public final void entryRulePerspectiveBrowser() throws RecognitionException {
+        try {
+            // InternalPerspectiveDsl.g:695:1: ( rulePerspectiveBrowser EOF )
+            // InternalPerspectiveDsl.g:696:1: rulePerspectiveBrowser EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBrowserRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePerspectiveBrowser();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBrowserRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerspectiveBrowser"
+
+
+    // $ANTLR start "rulePerspectiveBrowser"
+    // InternalPerspectiveDsl.g:703:1: rulePerspectiveBrowser : ( ( rule__PerspectiveBrowser__Group__0 ) ) ;
+    public final void rulePerspectiveBrowser() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:707:2: ( ( ( rule__PerspectiveBrowser__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:708:2: ( ( rule__PerspectiveBrowser__Group__0 ) )
+            {
+            // InternalPerspectiveDsl.g:708:2: ( ( rule__PerspectiveBrowser__Group__0 ) )
+            // InternalPerspectiveDsl.g:709:3: ( rule__PerspectiveBrowser__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectiveBrowserAccess().getGroup()); 
+            }
+            // InternalPerspectiveDsl.g:710:3: ( rule__PerspectiveBrowser__Group__0 )
+            // InternalPerspectiveDsl.g:710:4: rule__PerspectiveBrowser__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectiveBrowser__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectiveBrowserAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerspectiveBrowser"
+
+
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // InternalPerspectiveDsl.g:644:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    // InternalPerspectiveDsl.g:719:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
     public final void entryRuleTRANSLATABLEID() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:645:1: ( ruleTRANSLATABLEID EOF )
-            // InternalPerspectiveDsl.g:646:1: ruleTRANSLATABLEID EOF
+            // InternalPerspectiveDsl.g:720:1: ( ruleTRANSLATABLEID EOF )
+            // InternalPerspectiveDsl.g:721:1: ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDRule()); 
@@ -2192,17 +2452,17 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // InternalPerspectiveDsl.g:653:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    // InternalPerspectiveDsl.g:728:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
     public final void ruleTRANSLATABLEID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:657:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:658:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:732:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:733:2: ( RULE_ID )
             {
-            // InternalPerspectiveDsl.g:658:2: ( RULE_ID )
-            // InternalPerspectiveDsl.g:659:3: RULE_ID
+            // InternalPerspectiveDsl.g:733:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:734:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
@@ -2233,11 +2493,11 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLESTRING"
-    // InternalPerspectiveDsl.g:669:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
+    // InternalPerspectiveDsl.g:744:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
     public final void entryRuleTRANSLATABLESTRING() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:670:1: ( ruleTRANSLATABLESTRING EOF )
-            // InternalPerspectiveDsl.g:671:1: ruleTRANSLATABLESTRING EOF
+            // InternalPerspectiveDsl.g:745:1: ( ruleTRANSLATABLESTRING EOF )
+            // InternalPerspectiveDsl.g:746:1: ruleTRANSLATABLESTRING EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLESTRINGRule()); 
@@ -2267,17 +2527,17 @@
 
 
     // $ANTLR start "ruleTRANSLATABLESTRING"
-    // InternalPerspectiveDsl.g:678:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:753:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
     public final void ruleTRANSLATABLESTRING() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:682:2: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:683:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:757:2: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:758:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:683:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:684:3: RULE_STRING
+            // InternalPerspectiveDsl.g:758:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:759:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
@@ -2308,11 +2568,11 @@
 
 
     // $ANTLR start "entryRuleXImportDeclaration"
-    // InternalPerspectiveDsl.g:694:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    // InternalPerspectiveDsl.g:769:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
     public final void entryRuleXImportDeclaration() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:695:1: ( ruleXImportDeclaration EOF )
-            // InternalPerspectiveDsl.g:696:1: ruleXImportDeclaration EOF
+            // InternalPerspectiveDsl.g:770:1: ( ruleXImportDeclaration EOF )
+            // InternalPerspectiveDsl.g:771:1: ruleXImportDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationRule()); 
@@ -2342,23 +2602,23 @@
 
 
     // $ANTLR start "ruleXImportDeclaration"
-    // InternalPerspectiveDsl.g:703:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:778:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
     public final void ruleXImportDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:707:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:708:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:782:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:783:2: ( ( rule__XImportDeclaration__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:708:2: ( ( rule__XImportDeclaration__Group__0 ) )
-            // InternalPerspectiveDsl.g:709:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:783:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:784:3: ( rule__XImportDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:710:3: ( rule__XImportDeclaration__Group__0 )
-            // InternalPerspectiveDsl.g:710:4: rule__XImportDeclaration__Group__0
+            // InternalPerspectiveDsl.g:785:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:785:4: rule__XImportDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group__0();
@@ -2393,11 +2653,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // InternalPerspectiveDsl.g:719:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    // InternalPerspectiveDsl.g:794:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
     public final void entryRuleXAnnotation() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:720:1: ( ruleXAnnotation EOF )
-            // InternalPerspectiveDsl.g:721:1: ruleXAnnotation EOF
+            // InternalPerspectiveDsl.g:795:1: ( ruleXAnnotation EOF )
+            // InternalPerspectiveDsl.g:796:1: ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationRule()); 
@@ -2427,23 +2687,23 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // InternalPerspectiveDsl.g:728:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:803:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
     public final void ruleXAnnotation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:732:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:733:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalPerspectiveDsl.g:807:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:808:2: ( ( rule__XAnnotation__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:733:2: ( ( rule__XAnnotation__Group__0 ) )
-            // InternalPerspectiveDsl.g:734:3: ( rule__XAnnotation__Group__0 )
+            // InternalPerspectiveDsl.g:808:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalPerspectiveDsl.g:809:3: ( rule__XAnnotation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:735:3: ( rule__XAnnotation__Group__0 )
-            // InternalPerspectiveDsl.g:735:4: rule__XAnnotation__Group__0
+            // InternalPerspectiveDsl.g:810:3: ( rule__XAnnotation__Group__0 )
+            // InternalPerspectiveDsl.g:810:4: rule__XAnnotation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group__0();
@@ -2478,11 +2738,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // InternalPerspectiveDsl.g:744:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    // InternalPerspectiveDsl.g:819:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
     public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:745:1: ( ruleXAnnotationElementValuePair EOF )
-            // InternalPerspectiveDsl.g:746:1: ruleXAnnotationElementValuePair EOF
+            // InternalPerspectiveDsl.g:820:1: ( ruleXAnnotationElementValuePair EOF )
+            // InternalPerspectiveDsl.g:821:1: ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairRule()); 
@@ -2512,23 +2772,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // InternalPerspectiveDsl.g:753:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:828:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
     public final void ruleXAnnotationElementValuePair() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:757:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:758:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalPerspectiveDsl.g:832:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:833:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:758:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
-            // InternalPerspectiveDsl.g:759:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalPerspectiveDsl.g:833:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalPerspectiveDsl.g:834:3: ( rule__XAnnotationElementValuePair__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:760:3: ( rule__XAnnotationElementValuePair__Group__0 )
-            // InternalPerspectiveDsl.g:760:4: rule__XAnnotationElementValuePair__Group__0
+            // InternalPerspectiveDsl.g:835:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalPerspectiveDsl.g:835:4: rule__XAnnotationElementValuePair__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group__0();
@@ -2563,11 +2823,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // InternalPerspectiveDsl.g:769:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalPerspectiveDsl.g:844:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
     public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:770:1: ( ruleXAnnotationElementValueOrCommaList EOF )
-            // InternalPerspectiveDsl.g:771:1: ruleXAnnotationElementValueOrCommaList EOF
+            // InternalPerspectiveDsl.g:845:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalPerspectiveDsl.g:846:1: ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
@@ -2597,23 +2857,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // InternalPerspectiveDsl.g:778:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:853:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
     public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:782:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:783:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalPerspectiveDsl.g:857:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:858:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:783:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
-            // InternalPerspectiveDsl.g:784:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalPerspectiveDsl.g:858:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalPerspectiveDsl.g:859:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:785:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
-            // InternalPerspectiveDsl.g:785:4: rule__XAnnotationElementValueOrCommaList__Alternatives
+            // InternalPerspectiveDsl.g:860:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalPerspectiveDsl.g:860:4: rule__XAnnotationElementValueOrCommaList__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Alternatives();
@@ -2648,11 +2908,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // InternalPerspectiveDsl.g:794:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    // InternalPerspectiveDsl.g:869:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
     public final void entryRuleXAnnotationElementValue() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:795:1: ( ruleXAnnotationElementValue EOF )
-            // InternalPerspectiveDsl.g:796:1: ruleXAnnotationElementValue EOF
+            // InternalPerspectiveDsl.g:870:1: ( ruleXAnnotationElementValue EOF )
+            // InternalPerspectiveDsl.g:871:1: ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueRule()); 
@@ -2682,23 +2942,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // InternalPerspectiveDsl.g:803:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:878:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
     public final void ruleXAnnotationElementValue() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:807:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:808:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalPerspectiveDsl.g:882:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:883:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:808:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
-            // InternalPerspectiveDsl.g:809:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalPerspectiveDsl.g:883:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalPerspectiveDsl.g:884:3: ( rule__XAnnotationElementValue__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:810:3: ( rule__XAnnotationElementValue__Alternatives )
-            // InternalPerspectiveDsl.g:810:4: rule__XAnnotationElementValue__Alternatives
+            // InternalPerspectiveDsl.g:885:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalPerspectiveDsl.g:885:4: rule__XAnnotationElementValue__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Alternatives();
@@ -2733,11 +2993,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // InternalPerspectiveDsl.g:819:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    // InternalPerspectiveDsl.g:894:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
     public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:820:1: ( ruleXAnnotationOrExpression EOF )
-            // InternalPerspectiveDsl.g:821:1: ruleXAnnotationOrExpression EOF
+            // InternalPerspectiveDsl.g:895:1: ( ruleXAnnotationOrExpression EOF )
+            // InternalPerspectiveDsl.g:896:1: ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionRule()); 
@@ -2767,23 +3027,23 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // InternalPerspectiveDsl.g:828:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:903:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
     public final void ruleXAnnotationOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:832:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:833:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:907:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:908:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:833:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
-            // InternalPerspectiveDsl.g:834:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalPerspectiveDsl.g:908:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:909:3: ( rule__XAnnotationOrExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:835:3: ( rule__XAnnotationOrExpression__Alternatives )
-            // InternalPerspectiveDsl.g:835:4: rule__XAnnotationOrExpression__Alternatives
+            // InternalPerspectiveDsl.g:910:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalPerspectiveDsl.g:910:4: rule__XAnnotationOrExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationOrExpression__Alternatives();
@@ -2818,11 +3078,11 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // InternalPerspectiveDsl.g:844:1: entryRuleXExpression : ruleXExpression EOF ;
+    // InternalPerspectiveDsl.g:919:1: entryRuleXExpression : ruleXExpression EOF ;
     public final void entryRuleXExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:845:1: ( ruleXExpression EOF )
-            // InternalPerspectiveDsl.g:846:1: ruleXExpression EOF
+            // InternalPerspectiveDsl.g:920:1: ( ruleXExpression EOF )
+            // InternalPerspectiveDsl.g:921:1: ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionRule()); 
@@ -2852,17 +3112,17 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // InternalPerspectiveDsl.g:853:1: ruleXExpression : ( ruleXAssignment ) ;
+    // InternalPerspectiveDsl.g:928:1: ruleXExpression : ( ruleXAssignment ) ;
     public final void ruleXExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:857:2: ( ( ruleXAssignment ) )
-            // InternalPerspectiveDsl.g:858:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:932:2: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:933:2: ( ruleXAssignment )
             {
-            // InternalPerspectiveDsl.g:858:2: ( ruleXAssignment )
-            // InternalPerspectiveDsl.g:859:3: ruleXAssignment
+            // InternalPerspectiveDsl.g:933:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:934:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
@@ -2897,11 +3157,11 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // InternalPerspectiveDsl.g:869:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    // InternalPerspectiveDsl.g:944:1: entryRuleXAssignment : ruleXAssignment EOF ;
     public final void entryRuleXAssignment() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:870:1: ( ruleXAssignment EOF )
-            // InternalPerspectiveDsl.g:871:1: ruleXAssignment EOF
+            // InternalPerspectiveDsl.g:945:1: ( ruleXAssignment EOF )
+            // InternalPerspectiveDsl.g:946:1: ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentRule()); 
@@ -2931,23 +3191,23 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // InternalPerspectiveDsl.g:878:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:953:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
     public final void ruleXAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:882:2: ( ( ( rule__XAssignment__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:883:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalPerspectiveDsl.g:957:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:958:2: ( ( rule__XAssignment__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:883:2: ( ( rule__XAssignment__Alternatives ) )
-            // InternalPerspectiveDsl.g:884:3: ( rule__XAssignment__Alternatives )
+            // InternalPerspectiveDsl.g:958:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalPerspectiveDsl.g:959:3: ( rule__XAssignment__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:885:3: ( rule__XAssignment__Alternatives )
-            // InternalPerspectiveDsl.g:885:4: rule__XAssignment__Alternatives
+            // InternalPerspectiveDsl.g:960:3: ( rule__XAssignment__Alternatives )
+            // InternalPerspectiveDsl.g:960:4: rule__XAssignment__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Alternatives();
@@ -2982,11 +3242,11 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // InternalPerspectiveDsl.g:894:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    // InternalPerspectiveDsl.g:969:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
     public final void entryRuleOpSingleAssign() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:895:1: ( ruleOpSingleAssign EOF )
-            // InternalPerspectiveDsl.g:896:1: ruleOpSingleAssign EOF
+            // InternalPerspectiveDsl.g:970:1: ( ruleOpSingleAssign EOF )
+            // InternalPerspectiveDsl.g:971:1: ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignRule()); 
@@ -3016,17 +3276,17 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // InternalPerspectiveDsl.g:903:1: ruleOpSingleAssign : ( '=' ) ;
+    // InternalPerspectiveDsl.g:978:1: ruleOpSingleAssign : ( '=' ) ;
     public final void ruleOpSingleAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:907:2: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:908:2: ( '=' )
+            // InternalPerspectiveDsl.g:982:2: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:983:2: ( '=' )
             {
-            // InternalPerspectiveDsl.g:908:2: ( '=' )
-            // InternalPerspectiveDsl.g:909:3: '='
+            // InternalPerspectiveDsl.g:983:2: ( '=' )
+            // InternalPerspectiveDsl.g:984:3: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
@@ -3057,11 +3317,11 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // InternalPerspectiveDsl.g:919:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    // InternalPerspectiveDsl.g:994:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
     public final void entryRuleOpMultiAssign() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:920:1: ( ruleOpMultiAssign EOF )
-            // InternalPerspectiveDsl.g:921:1: ruleOpMultiAssign EOF
+            // InternalPerspectiveDsl.g:995:1: ( ruleOpMultiAssign EOF )
+            // InternalPerspectiveDsl.g:996:1: ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignRule()); 
@@ -3091,23 +3351,23 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // InternalPerspectiveDsl.g:928:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1003:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
     public final void ruleOpMultiAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:932:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:933:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalPerspectiveDsl.g:1007:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1008:2: ( ( rule__OpMultiAssign__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:933:2: ( ( rule__OpMultiAssign__Alternatives ) )
-            // InternalPerspectiveDsl.g:934:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalPerspectiveDsl.g:1008:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalPerspectiveDsl.g:1009:3: ( rule__OpMultiAssign__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:935:3: ( rule__OpMultiAssign__Alternatives )
-            // InternalPerspectiveDsl.g:935:4: rule__OpMultiAssign__Alternatives
+            // InternalPerspectiveDsl.g:1010:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalPerspectiveDsl.g:1010:4: rule__OpMultiAssign__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Alternatives();
@@ -3142,11 +3402,11 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // InternalPerspectiveDsl.g:944:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    // InternalPerspectiveDsl.g:1019:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
     public final void entryRuleXOrExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:945:1: ( ruleXOrExpression EOF )
-            // InternalPerspectiveDsl.g:946:1: ruleXOrExpression EOF
+            // InternalPerspectiveDsl.g:1020:1: ( ruleXOrExpression EOF )
+            // InternalPerspectiveDsl.g:1021:1: ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionRule()); 
@@ -3176,23 +3436,23 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // InternalPerspectiveDsl.g:953:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1028:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
     public final void ruleXOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:957:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:958:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1032:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1033:2: ( ( rule__XOrExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:958:2: ( ( rule__XOrExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:959:3: ( rule__XOrExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1033:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1034:3: ( rule__XOrExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:960:3: ( rule__XOrExpression__Group__0 )
-            // InternalPerspectiveDsl.g:960:4: rule__XOrExpression__Group__0
+            // InternalPerspectiveDsl.g:1035:3: ( rule__XOrExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1035:4: rule__XOrExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group__0();
@@ -3227,11 +3487,11 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // InternalPerspectiveDsl.g:969:1: entryRuleOpOr : ruleOpOr EOF ;
+    // InternalPerspectiveDsl.g:1044:1: entryRuleOpOr : ruleOpOr EOF ;
     public final void entryRuleOpOr() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:970:1: ( ruleOpOr EOF )
-            // InternalPerspectiveDsl.g:971:1: ruleOpOr EOF
+            // InternalPerspectiveDsl.g:1045:1: ( ruleOpOr EOF )
+            // InternalPerspectiveDsl.g:1046:1: ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrRule()); 
@@ -3261,17 +3521,17 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // InternalPerspectiveDsl.g:978:1: ruleOpOr : ( '||' ) ;
+    // InternalPerspectiveDsl.g:1053:1: ruleOpOr : ( '||' ) ;
     public final void ruleOpOr() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:982:2: ( ( '||' ) )
-            // InternalPerspectiveDsl.g:983:2: ( '||' )
+            // InternalPerspectiveDsl.g:1057:2: ( ( '||' ) )
+            // InternalPerspectiveDsl.g:1058:2: ( '||' )
             {
-            // InternalPerspectiveDsl.g:983:2: ( '||' )
-            // InternalPerspectiveDsl.g:984:3: '||'
+            // InternalPerspectiveDsl.g:1058:2: ( '||' )
+            // InternalPerspectiveDsl.g:1059:3: '||'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
@@ -3302,11 +3562,11 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // InternalPerspectiveDsl.g:994:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    // InternalPerspectiveDsl.g:1069:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
     public final void entryRuleXAndExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:995:1: ( ruleXAndExpression EOF )
-            // InternalPerspectiveDsl.g:996:1: ruleXAndExpression EOF
+            // InternalPerspectiveDsl.g:1070:1: ( ruleXAndExpression EOF )
+            // InternalPerspectiveDsl.g:1071:1: ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionRule()); 
@@ -3336,23 +3596,23 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // InternalPerspectiveDsl.g:1003:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1078:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
     public final void ruleXAndExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1007:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1008:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1082:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1083:2: ( ( rule__XAndExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1008:2: ( ( rule__XAndExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1009:3: ( rule__XAndExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1083:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1084:3: ( rule__XAndExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1010:3: ( rule__XAndExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1010:4: rule__XAndExpression__Group__0
+            // InternalPerspectiveDsl.g:1085:3: ( rule__XAndExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1085:4: rule__XAndExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group__0();
@@ -3387,11 +3647,11 @@
 
 
     // $ANTLR start "entryRuleOpAnd"
-    // InternalPerspectiveDsl.g:1019:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    // InternalPerspectiveDsl.g:1094:1: entryRuleOpAnd : ruleOpAnd EOF ;
     public final void entryRuleOpAnd() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1020:1: ( ruleOpAnd EOF )
-            // InternalPerspectiveDsl.g:1021:1: ruleOpAnd EOF
+            // InternalPerspectiveDsl.g:1095:1: ( ruleOpAnd EOF )
+            // InternalPerspectiveDsl.g:1096:1: ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndRule()); 
@@ -3421,17 +3681,17 @@
 
 
     // $ANTLR start "ruleOpAnd"
-    // InternalPerspectiveDsl.g:1028:1: ruleOpAnd : ( '&&' ) ;
+    // InternalPerspectiveDsl.g:1103:1: ruleOpAnd : ( '&&' ) ;
     public final void ruleOpAnd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1032:2: ( ( '&&' ) )
-            // InternalPerspectiveDsl.g:1033:2: ( '&&' )
+            // InternalPerspectiveDsl.g:1107:2: ( ( '&&' ) )
+            // InternalPerspectiveDsl.g:1108:2: ( '&&' )
             {
-            // InternalPerspectiveDsl.g:1033:2: ( '&&' )
-            // InternalPerspectiveDsl.g:1034:3: '&&'
+            // InternalPerspectiveDsl.g:1108:2: ( '&&' )
+            // InternalPerspectiveDsl.g:1109:3: '&&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
@@ -3462,11 +3722,11 @@
 
 
     // $ANTLR start "entryRuleXEqualityExpression"
-    // InternalPerspectiveDsl.g:1044:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    // InternalPerspectiveDsl.g:1119:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
     public final void entryRuleXEqualityExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1045:1: ( ruleXEqualityExpression EOF )
-            // InternalPerspectiveDsl.g:1046:1: ruleXEqualityExpression EOF
+            // InternalPerspectiveDsl.g:1120:1: ( ruleXEqualityExpression EOF )
+            // InternalPerspectiveDsl.g:1121:1: ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionRule()); 
@@ -3496,23 +3756,23 @@
 
 
     // $ANTLR start "ruleXEqualityExpression"
-    // InternalPerspectiveDsl.g:1053:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1128:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
     public final void ruleXEqualityExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1057:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1058:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1132:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1133:2: ( ( rule__XEqualityExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1058:2: ( ( rule__XEqualityExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1059:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1133:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1134:3: ( rule__XEqualityExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1060:3: ( rule__XEqualityExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1060:4: rule__XEqualityExpression__Group__0
+            // InternalPerspectiveDsl.g:1135:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1135:4: rule__XEqualityExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group__0();
@@ -3547,11 +3807,11 @@
 
 
     // $ANTLR start "entryRuleOpEquality"
-    // InternalPerspectiveDsl.g:1069:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    // InternalPerspectiveDsl.g:1144:1: entryRuleOpEquality : ruleOpEquality EOF ;
     public final void entryRuleOpEquality() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1070:1: ( ruleOpEquality EOF )
-            // InternalPerspectiveDsl.g:1071:1: ruleOpEquality EOF
+            // InternalPerspectiveDsl.g:1145:1: ( ruleOpEquality EOF )
+            // InternalPerspectiveDsl.g:1146:1: ruleOpEquality EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityRule()); 
@@ -3581,23 +3841,23 @@
 
 
     // $ANTLR start "ruleOpEquality"
-    // InternalPerspectiveDsl.g:1078:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1153:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
     public final void ruleOpEquality() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1082:2: ( ( ( rule__OpEquality__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1083:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalPerspectiveDsl.g:1157:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1158:2: ( ( rule__OpEquality__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1083:2: ( ( rule__OpEquality__Alternatives ) )
-            // InternalPerspectiveDsl.g:1084:3: ( rule__OpEquality__Alternatives )
+            // InternalPerspectiveDsl.g:1158:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalPerspectiveDsl.g:1159:3: ( rule__OpEquality__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1085:3: ( rule__OpEquality__Alternatives )
-            // InternalPerspectiveDsl.g:1085:4: rule__OpEquality__Alternatives
+            // InternalPerspectiveDsl.g:1160:3: ( rule__OpEquality__Alternatives )
+            // InternalPerspectiveDsl.g:1160:4: rule__OpEquality__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpEquality__Alternatives();
@@ -3632,11 +3892,11 @@
 
 
     // $ANTLR start "entryRuleXRelationalExpression"
-    // InternalPerspectiveDsl.g:1094:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    // InternalPerspectiveDsl.g:1169:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
     public final void entryRuleXRelationalExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1095:1: ( ruleXRelationalExpression EOF )
-            // InternalPerspectiveDsl.g:1096:1: ruleXRelationalExpression EOF
+            // InternalPerspectiveDsl.g:1170:1: ( ruleXRelationalExpression EOF )
+            // InternalPerspectiveDsl.g:1171:1: ruleXRelationalExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionRule()); 
@@ -3666,23 +3926,23 @@
 
 
     // $ANTLR start "ruleXRelationalExpression"
-    // InternalPerspectiveDsl.g:1103:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1178:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
     public final void ruleXRelationalExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1107:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1108:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1182:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1183:2: ( ( rule__XRelationalExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1108:2: ( ( rule__XRelationalExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1109:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1183:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1184:3: ( rule__XRelationalExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1110:3: ( rule__XRelationalExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1110:4: rule__XRelationalExpression__Group__0
+            // InternalPerspectiveDsl.g:1185:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1185:4: rule__XRelationalExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group__0();
@@ -3717,11 +3977,11 @@
 
 
     // $ANTLR start "entryRuleOpCompare"
-    // InternalPerspectiveDsl.g:1119:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    // InternalPerspectiveDsl.g:1194:1: entryRuleOpCompare : ruleOpCompare EOF ;
     public final void entryRuleOpCompare() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1120:1: ( ruleOpCompare EOF )
-            // InternalPerspectiveDsl.g:1121:1: ruleOpCompare EOF
+            // InternalPerspectiveDsl.g:1195:1: ( ruleOpCompare EOF )
+            // InternalPerspectiveDsl.g:1196:1: ruleOpCompare EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareRule()); 
@@ -3751,23 +4011,23 @@
 
 
     // $ANTLR start "ruleOpCompare"
-    // InternalPerspectiveDsl.g:1128:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1203:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
     public final void ruleOpCompare() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1132:2: ( ( ( rule__OpCompare__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1133:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalPerspectiveDsl.g:1207:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1208:2: ( ( rule__OpCompare__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1133:2: ( ( rule__OpCompare__Alternatives ) )
-            // InternalPerspectiveDsl.g:1134:3: ( rule__OpCompare__Alternatives )
+            // InternalPerspectiveDsl.g:1208:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalPerspectiveDsl.g:1209:3: ( rule__OpCompare__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1135:3: ( rule__OpCompare__Alternatives )
-            // InternalPerspectiveDsl.g:1135:4: rule__OpCompare__Alternatives
+            // InternalPerspectiveDsl.g:1210:3: ( rule__OpCompare__Alternatives )
+            // InternalPerspectiveDsl.g:1210:4: rule__OpCompare__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpCompare__Alternatives();
@@ -3802,11 +4062,11 @@
 
 
     // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // InternalPerspectiveDsl.g:1144:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    // InternalPerspectiveDsl.g:1219:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
     public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1145:1: ( ruleXOtherOperatorExpression EOF )
-            // InternalPerspectiveDsl.g:1146:1: ruleXOtherOperatorExpression EOF
+            // InternalPerspectiveDsl.g:1220:1: ( ruleXOtherOperatorExpression EOF )
+            // InternalPerspectiveDsl.g:1221:1: ruleXOtherOperatorExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionRule()); 
@@ -3836,23 +4096,23 @@
 
 
     // $ANTLR start "ruleXOtherOperatorExpression"
-    // InternalPerspectiveDsl.g:1153:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1228:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
     public final void ruleXOtherOperatorExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1157:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1158:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1232:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1233:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1158:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1159:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1233:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1234:3: ( rule__XOtherOperatorExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1160:3: ( rule__XOtherOperatorExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1160:4: rule__XOtherOperatorExpression__Group__0
+            // InternalPerspectiveDsl.g:1235:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1235:4: rule__XOtherOperatorExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group__0();
@@ -3887,11 +4147,11 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // InternalPerspectiveDsl.g:1169:1: entryRuleOpOther : ruleOpOther EOF ;
+    // InternalPerspectiveDsl.g:1244:1: entryRuleOpOther : ruleOpOther EOF ;
     public final void entryRuleOpOther() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1170:1: ( ruleOpOther EOF )
-            // InternalPerspectiveDsl.g:1171:1: ruleOpOther EOF
+            // InternalPerspectiveDsl.g:1245:1: ( ruleOpOther EOF )
+            // InternalPerspectiveDsl.g:1246:1: ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherRule()); 
@@ -3921,23 +4181,23 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // InternalPerspectiveDsl.g:1178:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1253:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
     public final void ruleOpOther() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1182:2: ( ( ( rule__OpOther__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1183:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalPerspectiveDsl.g:1257:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1258:2: ( ( rule__OpOther__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1183:2: ( ( rule__OpOther__Alternatives ) )
-            // InternalPerspectiveDsl.g:1184:3: ( rule__OpOther__Alternatives )
+            // InternalPerspectiveDsl.g:1258:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalPerspectiveDsl.g:1259:3: ( rule__OpOther__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1185:3: ( rule__OpOther__Alternatives )
-            // InternalPerspectiveDsl.g:1185:4: rule__OpOther__Alternatives
+            // InternalPerspectiveDsl.g:1260:3: ( rule__OpOther__Alternatives )
+            // InternalPerspectiveDsl.g:1260:4: rule__OpOther__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives();
@@ -3972,11 +4232,11 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // InternalPerspectiveDsl.g:1194:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    // InternalPerspectiveDsl.g:1269:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
     public final void entryRuleXAdditiveExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1195:1: ( ruleXAdditiveExpression EOF )
-            // InternalPerspectiveDsl.g:1196:1: ruleXAdditiveExpression EOF
+            // InternalPerspectiveDsl.g:1270:1: ( ruleXAdditiveExpression EOF )
+            // InternalPerspectiveDsl.g:1271:1: ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionRule()); 
@@ -4006,23 +4266,23 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // InternalPerspectiveDsl.g:1203:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1278:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
     public final void ruleXAdditiveExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1207:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1208:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1282:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1283:2: ( ( rule__XAdditiveExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1208:2: ( ( rule__XAdditiveExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1209:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1283:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1284:3: ( rule__XAdditiveExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1210:3: ( rule__XAdditiveExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1210:4: rule__XAdditiveExpression__Group__0
+            // InternalPerspectiveDsl.g:1285:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1285:4: rule__XAdditiveExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group__0();
@@ -4057,11 +4317,11 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // InternalPerspectiveDsl.g:1219:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    // InternalPerspectiveDsl.g:1294:1: entryRuleOpAdd : ruleOpAdd EOF ;
     public final void entryRuleOpAdd() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1220:1: ( ruleOpAdd EOF )
-            // InternalPerspectiveDsl.g:1221:1: ruleOpAdd EOF
+            // InternalPerspectiveDsl.g:1295:1: ( ruleOpAdd EOF )
+            // InternalPerspectiveDsl.g:1296:1: ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddRule()); 
@@ -4091,23 +4351,23 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // InternalPerspectiveDsl.g:1228:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1303:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
     public final void ruleOpAdd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1232:2: ( ( ( rule__OpAdd__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1233:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalPerspectiveDsl.g:1307:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1308:2: ( ( rule__OpAdd__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1233:2: ( ( rule__OpAdd__Alternatives ) )
-            // InternalPerspectiveDsl.g:1234:3: ( rule__OpAdd__Alternatives )
+            // InternalPerspectiveDsl.g:1308:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalPerspectiveDsl.g:1309:3: ( rule__OpAdd__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1235:3: ( rule__OpAdd__Alternatives )
-            // InternalPerspectiveDsl.g:1235:4: rule__OpAdd__Alternatives
+            // InternalPerspectiveDsl.g:1310:3: ( rule__OpAdd__Alternatives )
+            // InternalPerspectiveDsl.g:1310:4: rule__OpAdd__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpAdd__Alternatives();
@@ -4142,11 +4402,11 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // InternalPerspectiveDsl.g:1244:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    // InternalPerspectiveDsl.g:1319:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
     public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1245:1: ( ruleXMultiplicativeExpression EOF )
-            // InternalPerspectiveDsl.g:1246:1: ruleXMultiplicativeExpression EOF
+            // InternalPerspectiveDsl.g:1320:1: ( ruleXMultiplicativeExpression EOF )
+            // InternalPerspectiveDsl.g:1321:1: ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionRule()); 
@@ -4176,23 +4436,23 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // InternalPerspectiveDsl.g:1253:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1328:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
     public final void ruleXMultiplicativeExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1257:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1258:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1332:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1333:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1258:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1259:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1333:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1334:3: ( rule__XMultiplicativeExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1260:3: ( rule__XMultiplicativeExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1260:4: rule__XMultiplicativeExpression__Group__0
+            // InternalPerspectiveDsl.g:1335:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1335:4: rule__XMultiplicativeExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group__0();
@@ -4227,11 +4487,11 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // InternalPerspectiveDsl.g:1269:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    // InternalPerspectiveDsl.g:1344:1: entryRuleOpMulti : ruleOpMulti EOF ;
     public final void entryRuleOpMulti() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1270:1: ( ruleOpMulti EOF )
-            // InternalPerspectiveDsl.g:1271:1: ruleOpMulti EOF
+            // InternalPerspectiveDsl.g:1345:1: ( ruleOpMulti EOF )
+            // InternalPerspectiveDsl.g:1346:1: ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiRule()); 
@@ -4261,23 +4521,23 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // InternalPerspectiveDsl.g:1278:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1353:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
     public final void ruleOpMulti() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1282:2: ( ( ( rule__OpMulti__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1283:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalPerspectiveDsl.g:1357:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1358:2: ( ( rule__OpMulti__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1283:2: ( ( rule__OpMulti__Alternatives ) )
-            // InternalPerspectiveDsl.g:1284:3: ( rule__OpMulti__Alternatives )
+            // InternalPerspectiveDsl.g:1358:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalPerspectiveDsl.g:1359:3: ( rule__OpMulti__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1285:3: ( rule__OpMulti__Alternatives )
-            // InternalPerspectiveDsl.g:1285:4: rule__OpMulti__Alternatives
+            // InternalPerspectiveDsl.g:1360:3: ( rule__OpMulti__Alternatives )
+            // InternalPerspectiveDsl.g:1360:4: rule__OpMulti__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMulti__Alternatives();
@@ -4312,11 +4572,11 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // InternalPerspectiveDsl.g:1294:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    // InternalPerspectiveDsl.g:1369:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
     public final void entryRuleXUnaryOperation() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1295:1: ( ruleXUnaryOperation EOF )
-            // InternalPerspectiveDsl.g:1296:1: ruleXUnaryOperation EOF
+            // InternalPerspectiveDsl.g:1370:1: ( ruleXUnaryOperation EOF )
+            // InternalPerspectiveDsl.g:1371:1: ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationRule()); 
@@ -4346,23 +4606,23 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // InternalPerspectiveDsl.g:1303:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1378:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
     public final void ruleXUnaryOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1307:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1308:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalPerspectiveDsl.g:1382:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1383:2: ( ( rule__XUnaryOperation__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1308:2: ( ( rule__XUnaryOperation__Alternatives ) )
-            // InternalPerspectiveDsl.g:1309:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalPerspectiveDsl.g:1383:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalPerspectiveDsl.g:1384:3: ( rule__XUnaryOperation__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1310:3: ( rule__XUnaryOperation__Alternatives )
-            // InternalPerspectiveDsl.g:1310:4: rule__XUnaryOperation__Alternatives
+            // InternalPerspectiveDsl.g:1385:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalPerspectiveDsl.g:1385:4: rule__XUnaryOperation__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__Alternatives();
@@ -4397,11 +4657,11 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // InternalPerspectiveDsl.g:1319:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    // InternalPerspectiveDsl.g:1394:1: entryRuleOpUnary : ruleOpUnary EOF ;
     public final void entryRuleOpUnary() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1320:1: ( ruleOpUnary EOF )
-            // InternalPerspectiveDsl.g:1321:1: ruleOpUnary EOF
+            // InternalPerspectiveDsl.g:1395:1: ( ruleOpUnary EOF )
+            // InternalPerspectiveDsl.g:1396:1: ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryRule()); 
@@ -4431,23 +4691,23 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // InternalPerspectiveDsl.g:1328:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1403:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
     public final void ruleOpUnary() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1332:2: ( ( ( rule__OpUnary__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1333:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalPerspectiveDsl.g:1407:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1408:2: ( ( rule__OpUnary__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1333:2: ( ( rule__OpUnary__Alternatives ) )
-            // InternalPerspectiveDsl.g:1334:3: ( rule__OpUnary__Alternatives )
+            // InternalPerspectiveDsl.g:1408:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalPerspectiveDsl.g:1409:3: ( rule__OpUnary__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1335:3: ( rule__OpUnary__Alternatives )
-            // InternalPerspectiveDsl.g:1335:4: rule__OpUnary__Alternatives
+            // InternalPerspectiveDsl.g:1410:3: ( rule__OpUnary__Alternatives )
+            // InternalPerspectiveDsl.g:1410:4: rule__OpUnary__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpUnary__Alternatives();
@@ -4482,11 +4742,11 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // InternalPerspectiveDsl.g:1344:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    // InternalPerspectiveDsl.g:1419:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
     public final void entryRuleXCastedExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1345:1: ( ruleXCastedExpression EOF )
-            // InternalPerspectiveDsl.g:1346:1: ruleXCastedExpression EOF
+            // InternalPerspectiveDsl.g:1420:1: ( ruleXCastedExpression EOF )
+            // InternalPerspectiveDsl.g:1421:1: ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionRule()); 
@@ -4516,23 +4776,23 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // InternalPerspectiveDsl.g:1353:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1428:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
     public final void ruleXCastedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1357:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1358:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1432:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1433:2: ( ( rule__XCastedExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1358:2: ( ( rule__XCastedExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1359:3: ( rule__XCastedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1433:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1434:3: ( rule__XCastedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1360:3: ( rule__XCastedExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1360:4: rule__XCastedExpression__Group__0
+            // InternalPerspectiveDsl.g:1435:3: ( rule__XCastedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1435:4: rule__XCastedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group__0();
@@ -4567,11 +4827,11 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // InternalPerspectiveDsl.g:1369:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    // InternalPerspectiveDsl.g:1444:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
     public final void entryRuleXPostfixOperation() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1370:1: ( ruleXPostfixOperation EOF )
-            // InternalPerspectiveDsl.g:1371:1: ruleXPostfixOperation EOF
+            // InternalPerspectiveDsl.g:1445:1: ( ruleXPostfixOperation EOF )
+            // InternalPerspectiveDsl.g:1446:1: ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationRule()); 
@@ -4601,23 +4861,23 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // InternalPerspectiveDsl.g:1378:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1453:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
     public final void ruleXPostfixOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1382:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1383:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalPerspectiveDsl.g:1457:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1458:2: ( ( rule__XPostfixOperation__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1383:2: ( ( rule__XPostfixOperation__Group__0 ) )
-            // InternalPerspectiveDsl.g:1384:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalPerspectiveDsl.g:1458:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalPerspectiveDsl.g:1459:3: ( rule__XPostfixOperation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1385:3: ( rule__XPostfixOperation__Group__0 )
-            // InternalPerspectiveDsl.g:1385:4: rule__XPostfixOperation__Group__0
+            // InternalPerspectiveDsl.g:1460:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalPerspectiveDsl.g:1460:4: rule__XPostfixOperation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group__0();
@@ -4652,11 +4912,11 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // InternalPerspectiveDsl.g:1394:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    // InternalPerspectiveDsl.g:1469:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
     public final void entryRuleOpPostfix() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1395:1: ( ruleOpPostfix EOF )
-            // InternalPerspectiveDsl.g:1396:1: ruleOpPostfix EOF
+            // InternalPerspectiveDsl.g:1470:1: ( ruleOpPostfix EOF )
+            // InternalPerspectiveDsl.g:1471:1: ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixRule()); 
@@ -4686,23 +4946,23 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // InternalPerspectiveDsl.g:1403:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1478:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
     public final void ruleOpPostfix() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1407:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1408:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalPerspectiveDsl.g:1482:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1483:2: ( ( rule__OpPostfix__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1408:2: ( ( rule__OpPostfix__Alternatives ) )
-            // InternalPerspectiveDsl.g:1409:3: ( rule__OpPostfix__Alternatives )
+            // InternalPerspectiveDsl.g:1483:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalPerspectiveDsl.g:1484:3: ( rule__OpPostfix__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1410:3: ( rule__OpPostfix__Alternatives )
-            // InternalPerspectiveDsl.g:1410:4: rule__OpPostfix__Alternatives
+            // InternalPerspectiveDsl.g:1485:3: ( rule__OpPostfix__Alternatives )
+            // InternalPerspectiveDsl.g:1485:4: rule__OpPostfix__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpPostfix__Alternatives();
@@ -4737,11 +4997,11 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // InternalPerspectiveDsl.g:1419:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    // InternalPerspectiveDsl.g:1494:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
     public final void entryRuleXMemberFeatureCall() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1420:1: ( ruleXMemberFeatureCall EOF )
-            // InternalPerspectiveDsl.g:1421:1: ruleXMemberFeatureCall EOF
+            // InternalPerspectiveDsl.g:1495:1: ( ruleXMemberFeatureCall EOF )
+            // InternalPerspectiveDsl.g:1496:1: ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallRule()); 
@@ -4771,23 +5031,23 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // InternalPerspectiveDsl.g:1428:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1503:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
     public final void ruleXMemberFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1432:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1433:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:1507:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1508:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1433:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
-            // InternalPerspectiveDsl.g:1434:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:1508:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:1509:3: ( rule__XMemberFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1435:3: ( rule__XMemberFeatureCall__Group__0 )
-            // InternalPerspectiveDsl.g:1435:4: rule__XMemberFeatureCall__Group__0
+            // InternalPerspectiveDsl.g:1510:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:1510:4: rule__XMemberFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group__0();
@@ -4822,11 +5082,11 @@
 
 
     // $ANTLR start "entryRuleXPrimaryExpression"
-    // InternalPerspectiveDsl.g:1444:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    // InternalPerspectiveDsl.g:1519:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
     public final void entryRuleXPrimaryExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1445:1: ( ruleXPrimaryExpression EOF )
-            // InternalPerspectiveDsl.g:1446:1: ruleXPrimaryExpression EOF
+            // InternalPerspectiveDsl.g:1520:1: ( ruleXPrimaryExpression EOF )
+            // InternalPerspectiveDsl.g:1521:1: ruleXPrimaryExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionRule()); 
@@ -4856,23 +5116,23 @@
 
 
     // $ANTLR start "ruleXPrimaryExpression"
-    // InternalPerspectiveDsl.g:1453:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1528:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
     public final void ruleXPrimaryExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1457:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1458:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:1532:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1533:2: ( ( rule__XPrimaryExpression__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1458:2: ( ( rule__XPrimaryExpression__Alternatives ) )
-            // InternalPerspectiveDsl.g:1459:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalPerspectiveDsl.g:1533:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalPerspectiveDsl.g:1534:3: ( rule__XPrimaryExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1460:3: ( rule__XPrimaryExpression__Alternatives )
-            // InternalPerspectiveDsl.g:1460:4: rule__XPrimaryExpression__Alternatives
+            // InternalPerspectiveDsl.g:1535:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalPerspectiveDsl.g:1535:4: rule__XPrimaryExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XPrimaryExpression__Alternatives();
@@ -4907,11 +5167,11 @@
 
 
     // $ANTLR start "entryRuleXLiteral"
-    // InternalPerspectiveDsl.g:1469:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    // InternalPerspectiveDsl.g:1544:1: entryRuleXLiteral : ruleXLiteral EOF ;
     public final void entryRuleXLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1470:1: ( ruleXLiteral EOF )
-            // InternalPerspectiveDsl.g:1471:1: ruleXLiteral EOF
+            // InternalPerspectiveDsl.g:1545:1: ( ruleXLiteral EOF )
+            // InternalPerspectiveDsl.g:1546:1: ruleXLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralRule()); 
@@ -4941,23 +5201,23 @@
 
 
     // $ANTLR start "ruleXLiteral"
-    // InternalPerspectiveDsl.g:1478:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1553:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
     public final void ruleXLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1482:2: ( ( ( rule__XLiteral__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1483:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1557:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1558:2: ( ( rule__XLiteral__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1483:2: ( ( rule__XLiteral__Alternatives ) )
-            // InternalPerspectiveDsl.g:1484:3: ( rule__XLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1558:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1559:3: ( rule__XLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1485:3: ( rule__XLiteral__Alternatives )
-            // InternalPerspectiveDsl.g:1485:4: rule__XLiteral__Alternatives
+            // InternalPerspectiveDsl.g:1560:3: ( rule__XLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1560:4: rule__XLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XLiteral__Alternatives();
@@ -4992,11 +5252,11 @@
 
 
     // $ANTLR start "entryRuleXCollectionLiteral"
-    // InternalPerspectiveDsl.g:1494:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    // InternalPerspectiveDsl.g:1569:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
     public final void entryRuleXCollectionLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1495:1: ( ruleXCollectionLiteral EOF )
-            // InternalPerspectiveDsl.g:1496:1: ruleXCollectionLiteral EOF
+            // InternalPerspectiveDsl.g:1570:1: ( ruleXCollectionLiteral EOF )
+            // InternalPerspectiveDsl.g:1571:1: ruleXCollectionLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralRule()); 
@@ -5026,23 +5286,23 @@
 
 
     // $ANTLR start "ruleXCollectionLiteral"
-    // InternalPerspectiveDsl.g:1503:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1578:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
     public final void ruleXCollectionLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1507:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1508:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1582:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1583:2: ( ( rule__XCollectionLiteral__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1508:2: ( ( rule__XCollectionLiteral__Alternatives ) )
-            // InternalPerspectiveDsl.g:1509:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1583:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalPerspectiveDsl.g:1584:3: ( rule__XCollectionLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1510:3: ( rule__XCollectionLiteral__Alternatives )
-            // InternalPerspectiveDsl.g:1510:4: rule__XCollectionLiteral__Alternatives
+            // InternalPerspectiveDsl.g:1585:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalPerspectiveDsl.g:1585:4: rule__XCollectionLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XCollectionLiteral__Alternatives();
@@ -5077,11 +5337,11 @@
 
 
     // $ANTLR start "entryRuleXSetLiteral"
-    // InternalPerspectiveDsl.g:1519:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    // InternalPerspectiveDsl.g:1594:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
     public final void entryRuleXSetLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1520:1: ( ruleXSetLiteral EOF )
-            // InternalPerspectiveDsl.g:1521:1: ruleXSetLiteral EOF
+            // InternalPerspectiveDsl.g:1595:1: ( ruleXSetLiteral EOF )
+            // InternalPerspectiveDsl.g:1596:1: ruleXSetLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralRule()); 
@@ -5111,23 +5371,23 @@
 
 
     // $ANTLR start "ruleXSetLiteral"
-    // InternalPerspectiveDsl.g:1528:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1603:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
     public final void ruleXSetLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1532:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1533:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1607:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1608:2: ( ( rule__XSetLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1533:2: ( ( rule__XSetLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:1534:3: ( rule__XSetLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1608:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1609:3: ( rule__XSetLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1535:3: ( rule__XSetLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:1535:4: rule__XSetLiteral__Group__0
+            // InternalPerspectiveDsl.g:1610:3: ( rule__XSetLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1610:4: rule__XSetLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group__0();
@@ -5162,11 +5422,11 @@
 
 
     // $ANTLR start "entryRuleXListLiteral"
-    // InternalPerspectiveDsl.g:1544:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    // InternalPerspectiveDsl.g:1619:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
     public final void entryRuleXListLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1545:1: ( ruleXListLiteral EOF )
-            // InternalPerspectiveDsl.g:1546:1: ruleXListLiteral EOF
+            // InternalPerspectiveDsl.g:1620:1: ( ruleXListLiteral EOF )
+            // InternalPerspectiveDsl.g:1621:1: ruleXListLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralRule()); 
@@ -5196,23 +5456,23 @@
 
 
     // $ANTLR start "ruleXListLiteral"
-    // InternalPerspectiveDsl.g:1553:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1628:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
     public final void ruleXListLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1557:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1558:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1632:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1633:2: ( ( rule__XListLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1558:2: ( ( rule__XListLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:1559:3: ( rule__XListLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1633:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:1634:3: ( rule__XListLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1560:3: ( rule__XListLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:1560:4: rule__XListLiteral__Group__0
+            // InternalPerspectiveDsl.g:1635:3: ( rule__XListLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:1635:4: rule__XListLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group__0();
@@ -5247,11 +5507,11 @@
 
 
     // $ANTLR start "entryRuleXClosure"
-    // InternalPerspectiveDsl.g:1569:1: entryRuleXClosure : ruleXClosure EOF ;
+    // InternalPerspectiveDsl.g:1644:1: entryRuleXClosure : ruleXClosure EOF ;
     public final void entryRuleXClosure() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1570:1: ( ruleXClosure EOF )
-            // InternalPerspectiveDsl.g:1571:1: ruleXClosure EOF
+            // InternalPerspectiveDsl.g:1645:1: ( ruleXClosure EOF )
+            // InternalPerspectiveDsl.g:1646:1: ruleXClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureRule()); 
@@ -5281,23 +5541,23 @@
 
 
     // $ANTLR start "ruleXClosure"
-    // InternalPerspectiveDsl.g:1578:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1653:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
     public final void ruleXClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1582:2: ( ( ( rule__XClosure__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1583:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1657:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1658:2: ( ( rule__XClosure__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1583:2: ( ( rule__XClosure__Group__0 ) )
-            // InternalPerspectiveDsl.g:1584:3: ( rule__XClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1658:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1659:3: ( rule__XClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1585:3: ( rule__XClosure__Group__0 )
-            // InternalPerspectiveDsl.g:1585:4: rule__XClosure__Group__0
+            // InternalPerspectiveDsl.g:1660:3: ( rule__XClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1660:4: rule__XClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group__0();
@@ -5332,11 +5592,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionInClosure"
-    // InternalPerspectiveDsl.g:1594:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    // InternalPerspectiveDsl.g:1669:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
     public final void entryRuleXExpressionInClosure() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1595:1: ( ruleXExpressionInClosure EOF )
-            // InternalPerspectiveDsl.g:1596:1: ruleXExpressionInClosure EOF
+            // InternalPerspectiveDsl.g:1670:1: ( ruleXExpressionInClosure EOF )
+            // InternalPerspectiveDsl.g:1671:1: ruleXExpressionInClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureRule()); 
@@ -5366,23 +5626,23 @@
 
 
     // $ANTLR start "ruleXExpressionInClosure"
-    // InternalPerspectiveDsl.g:1603:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1678:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
     public final void ruleXExpressionInClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1607:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1608:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1682:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1683:2: ( ( rule__XExpressionInClosure__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1608:2: ( ( rule__XExpressionInClosure__Group__0 ) )
-            // InternalPerspectiveDsl.g:1609:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1683:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1684:3: ( rule__XExpressionInClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1610:3: ( rule__XExpressionInClosure__Group__0 )
-            // InternalPerspectiveDsl.g:1610:4: rule__XExpressionInClosure__Group__0
+            // InternalPerspectiveDsl.g:1685:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1685:4: rule__XExpressionInClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group__0();
@@ -5417,11 +5677,11 @@
 
 
     // $ANTLR start "entryRuleXShortClosure"
-    // InternalPerspectiveDsl.g:1619:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    // InternalPerspectiveDsl.g:1694:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
     public final void entryRuleXShortClosure() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1620:1: ( ruleXShortClosure EOF )
-            // InternalPerspectiveDsl.g:1621:1: ruleXShortClosure EOF
+            // InternalPerspectiveDsl.g:1695:1: ( ruleXShortClosure EOF )
+            // InternalPerspectiveDsl.g:1696:1: ruleXShortClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureRule()); 
@@ -5451,23 +5711,23 @@
 
 
     // $ANTLR start "ruleXShortClosure"
-    // InternalPerspectiveDsl.g:1628:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1703:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
     public final void ruleXShortClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1632:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1633:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1707:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1708:2: ( ( rule__XShortClosure__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1633:2: ( ( rule__XShortClosure__Group__0 ) )
-            // InternalPerspectiveDsl.g:1634:3: ( rule__XShortClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1708:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalPerspectiveDsl.g:1709:3: ( rule__XShortClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1635:3: ( rule__XShortClosure__Group__0 )
-            // InternalPerspectiveDsl.g:1635:4: rule__XShortClosure__Group__0
+            // InternalPerspectiveDsl.g:1710:3: ( rule__XShortClosure__Group__0 )
+            // InternalPerspectiveDsl.g:1710:4: rule__XShortClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group__0();
@@ -5502,11 +5762,11 @@
 
 
     // $ANTLR start "entryRuleXParenthesizedExpression"
-    // InternalPerspectiveDsl.g:1644:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    // InternalPerspectiveDsl.g:1719:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
     public final void entryRuleXParenthesizedExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1645:1: ( ruleXParenthesizedExpression EOF )
-            // InternalPerspectiveDsl.g:1646:1: ruleXParenthesizedExpression EOF
+            // InternalPerspectiveDsl.g:1720:1: ( ruleXParenthesizedExpression EOF )
+            // InternalPerspectiveDsl.g:1721:1: ruleXParenthesizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionRule()); 
@@ -5536,23 +5796,23 @@
 
 
     // $ANTLR start "ruleXParenthesizedExpression"
-    // InternalPerspectiveDsl.g:1653:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1728:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
     public final void ruleXParenthesizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1657:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1658:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1732:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1733:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1658:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1659:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1733:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1734:3: ( rule__XParenthesizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1660:3: ( rule__XParenthesizedExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1660:4: rule__XParenthesizedExpression__Group__0
+            // InternalPerspectiveDsl.g:1735:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1735:4: rule__XParenthesizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XParenthesizedExpression__Group__0();
@@ -5587,11 +5847,11 @@
 
 
     // $ANTLR start "entryRuleXIfExpression"
-    // InternalPerspectiveDsl.g:1669:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    // InternalPerspectiveDsl.g:1744:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
     public final void entryRuleXIfExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1670:1: ( ruleXIfExpression EOF )
-            // InternalPerspectiveDsl.g:1671:1: ruleXIfExpression EOF
+            // InternalPerspectiveDsl.g:1745:1: ( ruleXIfExpression EOF )
+            // InternalPerspectiveDsl.g:1746:1: ruleXIfExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionRule()); 
@@ -5621,23 +5881,23 @@
 
 
     // $ANTLR start "ruleXIfExpression"
-    // InternalPerspectiveDsl.g:1678:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1753:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
     public final void ruleXIfExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1682:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1683:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1757:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1758:2: ( ( rule__XIfExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1683:2: ( ( rule__XIfExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1684:3: ( rule__XIfExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1758:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1759:3: ( rule__XIfExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1685:3: ( rule__XIfExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1685:4: rule__XIfExpression__Group__0
+            // InternalPerspectiveDsl.g:1760:3: ( rule__XIfExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1760:4: rule__XIfExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group__0();
@@ -5672,11 +5932,11 @@
 
 
     // $ANTLR start "entryRuleXSwitchExpression"
-    // InternalPerspectiveDsl.g:1694:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    // InternalPerspectiveDsl.g:1769:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
     public final void entryRuleXSwitchExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1695:1: ( ruleXSwitchExpression EOF )
-            // InternalPerspectiveDsl.g:1696:1: ruleXSwitchExpression EOF
+            // InternalPerspectiveDsl.g:1770:1: ( ruleXSwitchExpression EOF )
+            // InternalPerspectiveDsl.g:1771:1: ruleXSwitchExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionRule()); 
@@ -5706,23 +5966,23 @@
 
 
     // $ANTLR start "ruleXSwitchExpression"
-    // InternalPerspectiveDsl.g:1703:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1778:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
     public final void ruleXSwitchExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1707:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1708:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1782:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1783:2: ( ( rule__XSwitchExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1708:2: ( ( rule__XSwitchExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1709:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1783:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1784:3: ( rule__XSwitchExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1710:3: ( rule__XSwitchExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1710:4: rule__XSwitchExpression__Group__0
+            // InternalPerspectiveDsl.g:1785:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1785:4: rule__XSwitchExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group__0();
@@ -5757,11 +6017,11 @@
 
 
     // $ANTLR start "entryRuleXCasePart"
-    // InternalPerspectiveDsl.g:1719:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    // InternalPerspectiveDsl.g:1794:1: entryRuleXCasePart : ruleXCasePart EOF ;
     public final void entryRuleXCasePart() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1720:1: ( ruleXCasePart EOF )
-            // InternalPerspectiveDsl.g:1721:1: ruleXCasePart EOF
+            // InternalPerspectiveDsl.g:1795:1: ( ruleXCasePart EOF )
+            // InternalPerspectiveDsl.g:1796:1: ruleXCasePart EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartRule()); 
@@ -5791,23 +6051,23 @@
 
 
     // $ANTLR start "ruleXCasePart"
-    // InternalPerspectiveDsl.g:1728:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1803:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
     public final void ruleXCasePart() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1732:2: ( ( ( rule__XCasePart__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1733:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalPerspectiveDsl.g:1807:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1808:2: ( ( rule__XCasePart__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1733:2: ( ( rule__XCasePart__Group__0 ) )
-            // InternalPerspectiveDsl.g:1734:3: ( rule__XCasePart__Group__0 )
+            // InternalPerspectiveDsl.g:1808:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalPerspectiveDsl.g:1809:3: ( rule__XCasePart__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1735:3: ( rule__XCasePart__Group__0 )
-            // InternalPerspectiveDsl.g:1735:4: rule__XCasePart__Group__0
+            // InternalPerspectiveDsl.g:1810:3: ( rule__XCasePart__Group__0 )
+            // InternalPerspectiveDsl.g:1810:4: rule__XCasePart__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group__0();
@@ -5842,11 +6102,11 @@
 
 
     // $ANTLR start "entryRuleXForLoopExpression"
-    // InternalPerspectiveDsl.g:1744:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    // InternalPerspectiveDsl.g:1819:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
     public final void entryRuleXForLoopExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1745:1: ( ruleXForLoopExpression EOF )
-            // InternalPerspectiveDsl.g:1746:1: ruleXForLoopExpression EOF
+            // InternalPerspectiveDsl.g:1820:1: ( ruleXForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:1821:1: ruleXForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionRule()); 
@@ -5876,23 +6136,23 @@
 
 
     // $ANTLR start "ruleXForLoopExpression"
-    // InternalPerspectiveDsl.g:1753:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1828:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
     public final void ruleXForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1757:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1758:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1832:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1833:2: ( ( rule__XForLoopExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1758:2: ( ( rule__XForLoopExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1759:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1833:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1834:3: ( rule__XForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1760:3: ( rule__XForLoopExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1760:4: rule__XForLoopExpression__Group__0
+            // InternalPerspectiveDsl.g:1835:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1835:4: rule__XForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group__0();
@@ -5927,11 +6187,11 @@
 
 
     // $ANTLR start "entryRuleXBasicForLoopExpression"
-    // InternalPerspectiveDsl.g:1769:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    // InternalPerspectiveDsl.g:1844:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
     public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1770:1: ( ruleXBasicForLoopExpression EOF )
-            // InternalPerspectiveDsl.g:1771:1: ruleXBasicForLoopExpression EOF
+            // InternalPerspectiveDsl.g:1845:1: ( ruleXBasicForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:1846:1: ruleXBasicForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionRule()); 
@@ -5961,23 +6221,23 @@
 
 
     // $ANTLR start "ruleXBasicForLoopExpression"
-    // InternalPerspectiveDsl.g:1778:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1853:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
     public final void ruleXBasicForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1782:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1783:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1857:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1858:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1783:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1784:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1858:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1859:3: ( rule__XBasicForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1785:3: ( rule__XBasicForLoopExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1785:4: rule__XBasicForLoopExpression__Group__0
+            // InternalPerspectiveDsl.g:1860:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1860:4: rule__XBasicForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group__0();
@@ -6012,11 +6272,11 @@
 
 
     // $ANTLR start "entryRuleXWhileExpression"
-    // InternalPerspectiveDsl.g:1794:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    // InternalPerspectiveDsl.g:1869:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
     public final void entryRuleXWhileExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1795:1: ( ruleXWhileExpression EOF )
-            // InternalPerspectiveDsl.g:1796:1: ruleXWhileExpression EOF
+            // InternalPerspectiveDsl.g:1870:1: ( ruleXWhileExpression EOF )
+            // InternalPerspectiveDsl.g:1871:1: ruleXWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionRule()); 
@@ -6046,23 +6306,23 @@
 
 
     // $ANTLR start "ruleXWhileExpression"
-    // InternalPerspectiveDsl.g:1803:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1878:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
     public final void ruleXWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1807:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1808:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1882:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1883:2: ( ( rule__XWhileExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1808:2: ( ( rule__XWhileExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1809:3: ( rule__XWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1883:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1884:3: ( rule__XWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1810:3: ( rule__XWhileExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1810:4: rule__XWhileExpression__Group__0
+            // InternalPerspectiveDsl.g:1885:3: ( rule__XWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1885:4: rule__XWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__Group__0();
@@ -6097,11 +6357,11 @@
 
 
     // $ANTLR start "entryRuleXDoWhileExpression"
-    // InternalPerspectiveDsl.g:1819:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    // InternalPerspectiveDsl.g:1894:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
     public final void entryRuleXDoWhileExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1820:1: ( ruleXDoWhileExpression EOF )
-            // InternalPerspectiveDsl.g:1821:1: ruleXDoWhileExpression EOF
+            // InternalPerspectiveDsl.g:1895:1: ( ruleXDoWhileExpression EOF )
+            // InternalPerspectiveDsl.g:1896:1: ruleXDoWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionRule()); 
@@ -6131,23 +6391,23 @@
 
 
     // $ANTLR start "ruleXDoWhileExpression"
-    // InternalPerspectiveDsl.g:1828:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1903:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
     public final void ruleXDoWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1832:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1833:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1907:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1908:2: ( ( rule__XDoWhileExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1833:2: ( ( rule__XDoWhileExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1834:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1908:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1909:3: ( rule__XDoWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1835:3: ( rule__XDoWhileExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1835:4: rule__XDoWhileExpression__Group__0
+            // InternalPerspectiveDsl.g:1910:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1910:4: rule__XDoWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__Group__0();
@@ -6182,11 +6442,11 @@
 
 
     // $ANTLR start "entryRuleXBlockExpression"
-    // InternalPerspectiveDsl.g:1844:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    // InternalPerspectiveDsl.g:1919:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
     public final void entryRuleXBlockExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1845:1: ( ruleXBlockExpression EOF )
-            // InternalPerspectiveDsl.g:1846:1: ruleXBlockExpression EOF
+            // InternalPerspectiveDsl.g:1920:1: ( ruleXBlockExpression EOF )
+            // InternalPerspectiveDsl.g:1921:1: ruleXBlockExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionRule()); 
@@ -6216,23 +6476,23 @@
 
 
     // $ANTLR start "ruleXBlockExpression"
-    // InternalPerspectiveDsl.g:1853:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1928:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
     public final void ruleXBlockExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1857:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1858:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1932:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1933:2: ( ( rule__XBlockExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1858:2: ( ( rule__XBlockExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:1859:3: ( rule__XBlockExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1933:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:1934:3: ( rule__XBlockExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1860:3: ( rule__XBlockExpression__Group__0 )
-            // InternalPerspectiveDsl.g:1860:4: rule__XBlockExpression__Group__0
+            // InternalPerspectiveDsl.g:1935:3: ( rule__XBlockExpression__Group__0 )
+            // InternalPerspectiveDsl.g:1935:4: rule__XBlockExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group__0();
@@ -6267,11 +6527,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
-    // InternalPerspectiveDsl.g:1869:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    // InternalPerspectiveDsl.g:1944:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
     public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1870:1: ( ruleXExpressionOrVarDeclaration EOF )
-            // InternalPerspectiveDsl.g:1871:1: ruleXExpressionOrVarDeclaration EOF
+            // InternalPerspectiveDsl.g:1945:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // InternalPerspectiveDsl.g:1946:1: ruleXExpressionOrVarDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
@@ -6301,23 +6561,23 @@
 
 
     // $ANTLR start "ruleXExpressionOrVarDeclaration"
-    // InternalPerspectiveDsl.g:1878:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:1953:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
     public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1882:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:1883:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalPerspectiveDsl.g:1957:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:1958:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:1883:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
-            // InternalPerspectiveDsl.g:1884:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalPerspectiveDsl.g:1958:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalPerspectiveDsl.g:1959:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:1885:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
-            // InternalPerspectiveDsl.g:1885:4: rule__XExpressionOrVarDeclaration__Alternatives
+            // InternalPerspectiveDsl.g:1960:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalPerspectiveDsl.g:1960:4: rule__XExpressionOrVarDeclaration__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionOrVarDeclaration__Alternatives();
@@ -6352,11 +6612,11 @@
 
 
     // $ANTLR start "entryRuleXVariableDeclaration"
-    // InternalPerspectiveDsl.g:1894:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    // InternalPerspectiveDsl.g:1969:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
     public final void entryRuleXVariableDeclaration() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1895:1: ( ruleXVariableDeclaration EOF )
-            // InternalPerspectiveDsl.g:1896:1: ruleXVariableDeclaration EOF
+            // InternalPerspectiveDsl.g:1970:1: ( ruleXVariableDeclaration EOF )
+            // InternalPerspectiveDsl.g:1971:1: ruleXVariableDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationRule()); 
@@ -6386,23 +6646,23 @@
 
 
     // $ANTLR start "ruleXVariableDeclaration"
-    // InternalPerspectiveDsl.g:1903:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:1978:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
     public final void ruleXVariableDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1907:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1908:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:1982:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:1983:2: ( ( rule__XVariableDeclaration__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1908:2: ( ( rule__XVariableDeclaration__Group__0 ) )
-            // InternalPerspectiveDsl.g:1909:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:1983:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalPerspectiveDsl.g:1984:3: ( rule__XVariableDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1910:3: ( rule__XVariableDeclaration__Group__0 )
-            // InternalPerspectiveDsl.g:1910:4: rule__XVariableDeclaration__Group__0
+            // InternalPerspectiveDsl.g:1985:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalPerspectiveDsl.g:1985:4: rule__XVariableDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group__0();
@@ -6437,11 +6697,11 @@
 
 
     // $ANTLR start "entryRuleJvmFormalParameter"
-    // InternalPerspectiveDsl.g:1919:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    // InternalPerspectiveDsl.g:1994:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
     public final void entryRuleJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1920:1: ( ruleJvmFormalParameter EOF )
-            // InternalPerspectiveDsl.g:1921:1: ruleJvmFormalParameter EOF
+            // InternalPerspectiveDsl.g:1995:1: ( ruleJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:1996:1: ruleJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterRule()); 
@@ -6471,23 +6731,23 @@
 
 
     // $ANTLR start "ruleJvmFormalParameter"
-    // InternalPerspectiveDsl.g:1928:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2003:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
     public final void ruleJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1932:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1933:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:2007:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2008:2: ( ( rule__JvmFormalParameter__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1933:2: ( ( rule__JvmFormalParameter__Group__0 ) )
-            // InternalPerspectiveDsl.g:1934:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:2008:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:2009:3: ( rule__JvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1935:3: ( rule__JvmFormalParameter__Group__0 )
-            // InternalPerspectiveDsl.g:1935:4: rule__JvmFormalParameter__Group__0
+            // InternalPerspectiveDsl.g:2010:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:2010:4: rule__JvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__Group__0();
@@ -6522,11 +6782,11 @@
 
 
     // $ANTLR start "entryRuleFullJvmFormalParameter"
-    // InternalPerspectiveDsl.g:1944:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    // InternalPerspectiveDsl.g:2019:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
     public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1945:1: ( ruleFullJvmFormalParameter EOF )
-            // InternalPerspectiveDsl.g:1946:1: ruleFullJvmFormalParameter EOF
+            // InternalPerspectiveDsl.g:2020:1: ( ruleFullJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:2021:1: ruleFullJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterRule()); 
@@ -6556,23 +6816,23 @@
 
 
     // $ANTLR start "ruleFullJvmFormalParameter"
-    // InternalPerspectiveDsl.g:1953:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2028:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
     public final void ruleFullJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1957:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1958:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:2032:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2033:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1958:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
-            // InternalPerspectiveDsl.g:1959:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:2033:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalPerspectiveDsl.g:2034:3: ( rule__FullJvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1960:3: ( rule__FullJvmFormalParameter__Group__0 )
-            // InternalPerspectiveDsl.g:1960:4: rule__FullJvmFormalParameter__Group__0
+            // InternalPerspectiveDsl.g:2035:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalPerspectiveDsl.g:2035:4: rule__FullJvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__Group__0();
@@ -6607,11 +6867,11 @@
 
 
     // $ANTLR start "entryRuleXFeatureCall"
-    // InternalPerspectiveDsl.g:1969:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    // InternalPerspectiveDsl.g:2044:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
     public final void entryRuleXFeatureCall() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1970:1: ( ruleXFeatureCall EOF )
-            // InternalPerspectiveDsl.g:1971:1: ruleXFeatureCall EOF
+            // InternalPerspectiveDsl.g:2045:1: ( ruleXFeatureCall EOF )
+            // InternalPerspectiveDsl.g:2046:1: ruleXFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallRule()); 
@@ -6641,23 +6901,23 @@
 
 
     // $ANTLR start "ruleXFeatureCall"
-    // InternalPerspectiveDsl.g:1978:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2053:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
     public final void ruleXFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:1982:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:1983:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:2057:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2058:2: ( ( rule__XFeatureCall__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:1983:2: ( ( rule__XFeatureCall__Group__0 ) )
-            // InternalPerspectiveDsl.g:1984:3: ( rule__XFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:2058:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:2059:3: ( rule__XFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:1985:3: ( rule__XFeatureCall__Group__0 )
-            // InternalPerspectiveDsl.g:1985:4: rule__XFeatureCall__Group__0
+            // InternalPerspectiveDsl.g:2060:3: ( rule__XFeatureCall__Group__0 )
+            // InternalPerspectiveDsl.g:2060:4: rule__XFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group__0();
@@ -6692,11 +6952,11 @@
 
 
     // $ANTLR start "entryRuleFeatureCallID"
-    // InternalPerspectiveDsl.g:1994:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    // InternalPerspectiveDsl.g:2069:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
     public final void entryRuleFeatureCallID() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:1995:1: ( ruleFeatureCallID EOF )
-            // InternalPerspectiveDsl.g:1996:1: ruleFeatureCallID EOF
+            // InternalPerspectiveDsl.g:2070:1: ( ruleFeatureCallID EOF )
+            // InternalPerspectiveDsl.g:2071:1: ruleFeatureCallID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDRule()); 
@@ -6726,23 +6986,23 @@
 
 
     // $ANTLR start "ruleFeatureCallID"
-    // InternalPerspectiveDsl.g:2003:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2078:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
     public final void ruleFeatureCallID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2007:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2008:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalPerspectiveDsl.g:2082:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2083:2: ( ( rule__FeatureCallID__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2008:2: ( ( rule__FeatureCallID__Alternatives ) )
-            // InternalPerspectiveDsl.g:2009:3: ( rule__FeatureCallID__Alternatives )
+            // InternalPerspectiveDsl.g:2083:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalPerspectiveDsl.g:2084:3: ( rule__FeatureCallID__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2010:3: ( rule__FeatureCallID__Alternatives )
-            // InternalPerspectiveDsl.g:2010:4: rule__FeatureCallID__Alternatives
+            // InternalPerspectiveDsl.g:2085:3: ( rule__FeatureCallID__Alternatives )
+            // InternalPerspectiveDsl.g:2085:4: rule__FeatureCallID__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__FeatureCallID__Alternatives();
@@ -6777,11 +7037,11 @@
 
 
     // $ANTLR start "entryRuleIdOrSuper"
-    // InternalPerspectiveDsl.g:2019:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    // InternalPerspectiveDsl.g:2094:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
     public final void entryRuleIdOrSuper() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2020:1: ( ruleIdOrSuper EOF )
-            // InternalPerspectiveDsl.g:2021:1: ruleIdOrSuper EOF
+            // InternalPerspectiveDsl.g:2095:1: ( ruleIdOrSuper EOF )
+            // InternalPerspectiveDsl.g:2096:1: ruleIdOrSuper EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperRule()); 
@@ -6811,23 +7071,23 @@
 
 
     // $ANTLR start "ruleIdOrSuper"
-    // InternalPerspectiveDsl.g:2028:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2103:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
     public final void ruleIdOrSuper() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2032:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2033:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalPerspectiveDsl.g:2107:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2108:2: ( ( rule__IdOrSuper__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2033:2: ( ( rule__IdOrSuper__Alternatives ) )
-            // InternalPerspectiveDsl.g:2034:3: ( rule__IdOrSuper__Alternatives )
+            // InternalPerspectiveDsl.g:2108:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalPerspectiveDsl.g:2109:3: ( rule__IdOrSuper__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2035:3: ( rule__IdOrSuper__Alternatives )
-            // InternalPerspectiveDsl.g:2035:4: rule__IdOrSuper__Alternatives
+            // InternalPerspectiveDsl.g:2110:3: ( rule__IdOrSuper__Alternatives )
+            // InternalPerspectiveDsl.g:2110:4: rule__IdOrSuper__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__IdOrSuper__Alternatives();
@@ -6862,11 +7122,11 @@
 
 
     // $ANTLR start "entryRuleXConstructorCall"
-    // InternalPerspectiveDsl.g:2044:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    // InternalPerspectiveDsl.g:2119:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
     public final void entryRuleXConstructorCall() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2045:1: ( ruleXConstructorCall EOF )
-            // InternalPerspectiveDsl.g:2046:1: ruleXConstructorCall EOF
+            // InternalPerspectiveDsl.g:2120:1: ( ruleXConstructorCall EOF )
+            // InternalPerspectiveDsl.g:2121:1: ruleXConstructorCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallRule()); 
@@ -6896,23 +7156,23 @@
 
 
     // $ANTLR start "ruleXConstructorCall"
-    // InternalPerspectiveDsl.g:2053:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2128:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
     public final void ruleXConstructorCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2057:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2058:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:2132:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2133:2: ( ( rule__XConstructorCall__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2058:2: ( ( rule__XConstructorCall__Group__0 ) )
-            // InternalPerspectiveDsl.g:2059:3: ( rule__XConstructorCall__Group__0 )
+            // InternalPerspectiveDsl.g:2133:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalPerspectiveDsl.g:2134:3: ( rule__XConstructorCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2060:3: ( rule__XConstructorCall__Group__0 )
-            // InternalPerspectiveDsl.g:2060:4: rule__XConstructorCall__Group__0
+            // InternalPerspectiveDsl.g:2135:3: ( rule__XConstructorCall__Group__0 )
+            // InternalPerspectiveDsl.g:2135:4: rule__XConstructorCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group__0();
@@ -6947,11 +7207,11 @@
 
 
     // $ANTLR start "entryRuleXBooleanLiteral"
-    // InternalPerspectiveDsl.g:2069:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    // InternalPerspectiveDsl.g:2144:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
     public final void entryRuleXBooleanLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2070:1: ( ruleXBooleanLiteral EOF )
-            // InternalPerspectiveDsl.g:2071:1: ruleXBooleanLiteral EOF
+            // InternalPerspectiveDsl.g:2145:1: ( ruleXBooleanLiteral EOF )
+            // InternalPerspectiveDsl.g:2146:1: ruleXBooleanLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralRule()); 
@@ -6981,23 +7241,23 @@
 
 
     // $ANTLR start "ruleXBooleanLiteral"
-    // InternalPerspectiveDsl.g:2078:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2153:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
     public final void ruleXBooleanLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2082:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2083:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2157:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2158:2: ( ( rule__XBooleanLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2083:2: ( ( rule__XBooleanLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2084:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2158:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2159:3: ( rule__XBooleanLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2085:3: ( rule__XBooleanLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2085:4: rule__XBooleanLiteral__Group__0
+            // InternalPerspectiveDsl.g:2160:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2160:4: rule__XBooleanLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Group__0();
@@ -7032,11 +7292,11 @@
 
 
     // $ANTLR start "entryRuleXNullLiteral"
-    // InternalPerspectiveDsl.g:2094:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    // InternalPerspectiveDsl.g:2169:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
     public final void entryRuleXNullLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2095:1: ( ruleXNullLiteral EOF )
-            // InternalPerspectiveDsl.g:2096:1: ruleXNullLiteral EOF
+            // InternalPerspectiveDsl.g:2170:1: ( ruleXNullLiteral EOF )
+            // InternalPerspectiveDsl.g:2171:1: ruleXNullLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralRule()); 
@@ -7066,23 +7326,23 @@
 
 
     // $ANTLR start "ruleXNullLiteral"
-    // InternalPerspectiveDsl.g:2103:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2178:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
     public final void ruleXNullLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2107:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2108:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2182:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2183:2: ( ( rule__XNullLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2108:2: ( ( rule__XNullLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2109:3: ( rule__XNullLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2183:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2184:3: ( rule__XNullLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2110:3: ( rule__XNullLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2110:4: rule__XNullLiteral__Group__0
+            // InternalPerspectiveDsl.g:2185:3: ( rule__XNullLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2185:4: rule__XNullLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNullLiteral__Group__0();
@@ -7117,11 +7377,11 @@
 
 
     // $ANTLR start "entryRuleXNumberLiteral"
-    // InternalPerspectiveDsl.g:2119:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    // InternalPerspectiveDsl.g:2194:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
     public final void entryRuleXNumberLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2120:1: ( ruleXNumberLiteral EOF )
-            // InternalPerspectiveDsl.g:2121:1: ruleXNumberLiteral EOF
+            // InternalPerspectiveDsl.g:2195:1: ( ruleXNumberLiteral EOF )
+            // InternalPerspectiveDsl.g:2196:1: ruleXNumberLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralRule()); 
@@ -7151,23 +7411,23 @@
 
 
     // $ANTLR start "ruleXNumberLiteral"
-    // InternalPerspectiveDsl.g:2128:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2203:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
     public final void ruleXNumberLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2132:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2133:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2207:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2208:2: ( ( rule__XNumberLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2133:2: ( ( rule__XNumberLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2134:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2208:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2209:3: ( rule__XNumberLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2135:3: ( rule__XNumberLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2135:4: rule__XNumberLiteral__Group__0
+            // InternalPerspectiveDsl.g:2210:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2210:4: rule__XNumberLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__Group__0();
@@ -7202,11 +7462,11 @@
 
 
     // $ANTLR start "entryRuleXStringLiteral"
-    // InternalPerspectiveDsl.g:2144:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    // InternalPerspectiveDsl.g:2219:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
     public final void entryRuleXStringLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2145:1: ( ruleXStringLiteral EOF )
-            // InternalPerspectiveDsl.g:2146:1: ruleXStringLiteral EOF
+            // InternalPerspectiveDsl.g:2220:1: ( ruleXStringLiteral EOF )
+            // InternalPerspectiveDsl.g:2221:1: ruleXStringLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralRule()); 
@@ -7236,23 +7496,23 @@
 
 
     // $ANTLR start "ruleXStringLiteral"
-    // InternalPerspectiveDsl.g:2153:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2228:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
     public final void ruleXStringLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2157:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2158:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2232:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2233:2: ( ( rule__XStringLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2158:2: ( ( rule__XStringLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2159:3: ( rule__XStringLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2233:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2234:3: ( rule__XStringLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2160:3: ( rule__XStringLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2160:4: rule__XStringLiteral__Group__0
+            // InternalPerspectiveDsl.g:2235:3: ( rule__XStringLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2235:4: rule__XStringLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__Group__0();
@@ -7287,11 +7547,11 @@
 
 
     // $ANTLR start "entryRuleXTypeLiteral"
-    // InternalPerspectiveDsl.g:2169:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    // InternalPerspectiveDsl.g:2244:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
     public final void entryRuleXTypeLiteral() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2170:1: ( ruleXTypeLiteral EOF )
-            // InternalPerspectiveDsl.g:2171:1: ruleXTypeLiteral EOF
+            // InternalPerspectiveDsl.g:2245:1: ( ruleXTypeLiteral EOF )
+            // InternalPerspectiveDsl.g:2246:1: ruleXTypeLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralRule()); 
@@ -7321,23 +7581,23 @@
 
 
     // $ANTLR start "ruleXTypeLiteral"
-    // InternalPerspectiveDsl.g:2178:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2253:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
     public final void ruleXTypeLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2182:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2183:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2257:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2258:2: ( ( rule__XTypeLiteral__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2183:2: ( ( rule__XTypeLiteral__Group__0 ) )
-            // InternalPerspectiveDsl.g:2184:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2258:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalPerspectiveDsl.g:2259:3: ( rule__XTypeLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2185:3: ( rule__XTypeLiteral__Group__0 )
-            // InternalPerspectiveDsl.g:2185:4: rule__XTypeLiteral__Group__0
+            // InternalPerspectiveDsl.g:2260:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalPerspectiveDsl.g:2260:4: rule__XTypeLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__Group__0();
@@ -7372,11 +7632,11 @@
 
 
     // $ANTLR start "entryRuleXThrowExpression"
-    // InternalPerspectiveDsl.g:2194:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    // InternalPerspectiveDsl.g:2269:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
     public final void entryRuleXThrowExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2195:1: ( ruleXThrowExpression EOF )
-            // InternalPerspectiveDsl.g:2196:1: ruleXThrowExpression EOF
+            // InternalPerspectiveDsl.g:2270:1: ( ruleXThrowExpression EOF )
+            // InternalPerspectiveDsl.g:2271:1: ruleXThrowExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionRule()); 
@@ -7406,23 +7666,23 @@
 
 
     // $ANTLR start "ruleXThrowExpression"
-    // InternalPerspectiveDsl.g:2203:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2278:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
     public final void ruleXThrowExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2207:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2208:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2282:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2283:2: ( ( rule__XThrowExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2208:2: ( ( rule__XThrowExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:2209:3: ( rule__XThrowExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2283:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2284:3: ( rule__XThrowExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2210:3: ( rule__XThrowExpression__Group__0 )
-            // InternalPerspectiveDsl.g:2210:4: rule__XThrowExpression__Group__0
+            // InternalPerspectiveDsl.g:2285:3: ( rule__XThrowExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2285:4: rule__XThrowExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__Group__0();
@@ -7457,11 +7717,11 @@
 
 
     // $ANTLR start "entryRuleXReturnExpression"
-    // InternalPerspectiveDsl.g:2219:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    // InternalPerspectiveDsl.g:2294:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
     public final void entryRuleXReturnExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2220:1: ( ruleXReturnExpression EOF )
-            // InternalPerspectiveDsl.g:2221:1: ruleXReturnExpression EOF
+            // InternalPerspectiveDsl.g:2295:1: ( ruleXReturnExpression EOF )
+            // InternalPerspectiveDsl.g:2296:1: ruleXReturnExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionRule()); 
@@ -7491,23 +7751,23 @@
 
 
     // $ANTLR start "ruleXReturnExpression"
-    // InternalPerspectiveDsl.g:2228:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2303:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
     public final void ruleXReturnExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2232:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2233:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2307:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2308:2: ( ( rule__XReturnExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2233:2: ( ( rule__XReturnExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:2234:3: ( rule__XReturnExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2308:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2309:3: ( rule__XReturnExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2235:3: ( rule__XReturnExpression__Group__0 )
-            // InternalPerspectiveDsl.g:2235:4: rule__XReturnExpression__Group__0
+            // InternalPerspectiveDsl.g:2310:3: ( rule__XReturnExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2310:4: rule__XReturnExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XReturnExpression__Group__0();
@@ -7542,11 +7802,11 @@
 
 
     // $ANTLR start "entryRuleXTryCatchFinallyExpression"
-    // InternalPerspectiveDsl.g:2244:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    // InternalPerspectiveDsl.g:2319:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
     public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2245:1: ( ruleXTryCatchFinallyExpression EOF )
-            // InternalPerspectiveDsl.g:2246:1: ruleXTryCatchFinallyExpression EOF
+            // InternalPerspectiveDsl.g:2320:1: ( ruleXTryCatchFinallyExpression EOF )
+            // InternalPerspectiveDsl.g:2321:1: ruleXTryCatchFinallyExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionRule()); 
@@ -7576,23 +7836,23 @@
 
 
     // $ANTLR start "ruleXTryCatchFinallyExpression"
-    // InternalPerspectiveDsl.g:2253:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2328:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
     public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2257:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2258:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2332:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2333:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2258:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:2259:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2333:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2334:3: ( rule__XTryCatchFinallyExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2260:3: ( rule__XTryCatchFinallyExpression__Group__0 )
-            // InternalPerspectiveDsl.g:2260:4: rule__XTryCatchFinallyExpression__Group__0
+            // InternalPerspectiveDsl.g:2335:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2335:4: rule__XTryCatchFinallyExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group__0();
@@ -7627,11 +7887,11 @@
 
 
     // $ANTLR start "entryRuleXSynchronizedExpression"
-    // InternalPerspectiveDsl.g:2269:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    // InternalPerspectiveDsl.g:2344:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
     public final void entryRuleXSynchronizedExpression() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2270:1: ( ruleXSynchronizedExpression EOF )
-            // InternalPerspectiveDsl.g:2271:1: ruleXSynchronizedExpression EOF
+            // InternalPerspectiveDsl.g:2345:1: ( ruleXSynchronizedExpression EOF )
+            // InternalPerspectiveDsl.g:2346:1: ruleXSynchronizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionRule()); 
@@ -7661,23 +7921,23 @@
 
 
     // $ANTLR start "ruleXSynchronizedExpression"
-    // InternalPerspectiveDsl.g:2278:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2353:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
     public final void ruleXSynchronizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2282:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2283:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2357:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2358:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2283:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
-            // InternalPerspectiveDsl.g:2284:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2358:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalPerspectiveDsl.g:2359:3: ( rule__XSynchronizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2285:3: ( rule__XSynchronizedExpression__Group__0 )
-            // InternalPerspectiveDsl.g:2285:4: rule__XSynchronizedExpression__Group__0
+            // InternalPerspectiveDsl.g:2360:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalPerspectiveDsl.g:2360:4: rule__XSynchronizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group__0();
@@ -7712,11 +7972,11 @@
 
 
     // $ANTLR start "entryRuleXCatchClause"
-    // InternalPerspectiveDsl.g:2294:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    // InternalPerspectiveDsl.g:2369:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
     public final void entryRuleXCatchClause() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2295:1: ( ruleXCatchClause EOF )
-            // InternalPerspectiveDsl.g:2296:1: ruleXCatchClause EOF
+            // InternalPerspectiveDsl.g:2370:1: ( ruleXCatchClause EOF )
+            // InternalPerspectiveDsl.g:2371:1: ruleXCatchClause EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseRule()); 
@@ -7746,23 +8006,23 @@
 
 
     // $ANTLR start "ruleXCatchClause"
-    // InternalPerspectiveDsl.g:2303:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2378:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
     public final void ruleXCatchClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2307:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2308:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalPerspectiveDsl.g:2382:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2383:2: ( ( rule__XCatchClause__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2308:2: ( ( rule__XCatchClause__Group__0 ) )
-            // InternalPerspectiveDsl.g:2309:3: ( rule__XCatchClause__Group__0 )
+            // InternalPerspectiveDsl.g:2383:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalPerspectiveDsl.g:2384:3: ( rule__XCatchClause__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2310:3: ( rule__XCatchClause__Group__0 )
-            // InternalPerspectiveDsl.g:2310:4: rule__XCatchClause__Group__0
+            // InternalPerspectiveDsl.g:2385:3: ( rule__XCatchClause__Group__0 )
+            // InternalPerspectiveDsl.g:2385:4: rule__XCatchClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__Group__0();
@@ -7797,11 +8057,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedName"
-    // InternalPerspectiveDsl.g:2319:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    // InternalPerspectiveDsl.g:2394:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
     public final void entryRuleQualifiedName() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2320:1: ( ruleQualifiedName EOF )
-            // InternalPerspectiveDsl.g:2321:1: ruleQualifiedName EOF
+            // InternalPerspectiveDsl.g:2395:1: ( ruleQualifiedName EOF )
+            // InternalPerspectiveDsl.g:2396:1: ruleQualifiedName EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameRule()); 
@@ -7831,23 +8091,23 @@
 
 
     // $ANTLR start "ruleQualifiedName"
-    // InternalPerspectiveDsl.g:2328:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2403:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
     public final void ruleQualifiedName() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2332:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2333:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalPerspectiveDsl.g:2407:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2408:2: ( ( rule__QualifiedName__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2333:2: ( ( rule__QualifiedName__Group__0 ) )
-            // InternalPerspectiveDsl.g:2334:3: ( rule__QualifiedName__Group__0 )
+            // InternalPerspectiveDsl.g:2408:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalPerspectiveDsl.g:2409:3: ( rule__QualifiedName__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2335:3: ( rule__QualifiedName__Group__0 )
-            // InternalPerspectiveDsl.g:2335:4: rule__QualifiedName__Group__0
+            // InternalPerspectiveDsl.g:2410:3: ( rule__QualifiedName__Group__0 )
+            // InternalPerspectiveDsl.g:2410:4: rule__QualifiedName__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group__0();
@@ -7882,14 +8142,14 @@
 
 
     // $ANTLR start "entryRuleNumber"
-    // InternalPerspectiveDsl.g:2344:1: entryRuleNumber : ruleNumber EOF ;
+    // InternalPerspectiveDsl.g:2419:1: entryRuleNumber : ruleNumber EOF ;
     public final void entryRuleNumber() throws RecognitionException {
          
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalPerspectiveDsl.g:2348:1: ( ruleNumber EOF )
-            // InternalPerspectiveDsl.g:2349:1: ruleNumber EOF
+            // InternalPerspectiveDsl.g:2423:1: ( ruleNumber EOF )
+            // InternalPerspectiveDsl.g:2424:1: ruleNumber EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberRule()); 
@@ -7922,24 +8182,24 @@
 
 
     // $ANTLR start "ruleNumber"
-    // InternalPerspectiveDsl.g:2359:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2434:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
     public final void ruleNumber() throws RecognitionException {
 
         		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2364:2: ( ( ( rule__Number__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2365:2: ( ( rule__Number__Alternatives ) )
+            // InternalPerspectiveDsl.g:2439:2: ( ( ( rule__Number__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2440:2: ( ( rule__Number__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2365:2: ( ( rule__Number__Alternatives ) )
-            // InternalPerspectiveDsl.g:2366:3: ( rule__Number__Alternatives )
+            // InternalPerspectiveDsl.g:2440:2: ( ( rule__Number__Alternatives ) )
+            // InternalPerspectiveDsl.g:2441:3: ( rule__Number__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2367:3: ( rule__Number__Alternatives )
-            // InternalPerspectiveDsl.g:2367:4: rule__Number__Alternatives
+            // InternalPerspectiveDsl.g:2442:3: ( rule__Number__Alternatives )
+            // InternalPerspectiveDsl.g:2442:4: rule__Number__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives();
@@ -7975,11 +8235,11 @@
 
 
     // $ANTLR start "entryRuleJvmTypeReference"
-    // InternalPerspectiveDsl.g:2377:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    // InternalPerspectiveDsl.g:2452:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
     public final void entryRuleJvmTypeReference() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2378:1: ( ruleJvmTypeReference EOF )
-            // InternalPerspectiveDsl.g:2379:1: ruleJvmTypeReference EOF
+            // InternalPerspectiveDsl.g:2453:1: ( ruleJvmTypeReference EOF )
+            // InternalPerspectiveDsl.g:2454:1: ruleJvmTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceRule()); 
@@ -8009,23 +8269,23 @@
 
 
     // $ANTLR start "ruleJvmTypeReference"
-    // InternalPerspectiveDsl.g:2386:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2461:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
     public final void ruleJvmTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2390:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2391:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2465:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2466:2: ( ( rule__JvmTypeReference__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2391:2: ( ( rule__JvmTypeReference__Alternatives ) )
-            // InternalPerspectiveDsl.g:2392:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2466:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2467:3: ( rule__JvmTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2393:3: ( rule__JvmTypeReference__Alternatives )
-            // InternalPerspectiveDsl.g:2393:4: rule__JvmTypeReference__Alternatives
+            // InternalPerspectiveDsl.g:2468:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2468:4: rule__JvmTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Alternatives();
@@ -8060,11 +8320,11 @@
 
 
     // $ANTLR start "entryRuleArrayBrackets"
-    // InternalPerspectiveDsl.g:2402:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    // InternalPerspectiveDsl.g:2477:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
     public final void entryRuleArrayBrackets() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2403:1: ( ruleArrayBrackets EOF )
-            // InternalPerspectiveDsl.g:2404:1: ruleArrayBrackets EOF
+            // InternalPerspectiveDsl.g:2478:1: ( ruleArrayBrackets EOF )
+            // InternalPerspectiveDsl.g:2479:1: ruleArrayBrackets EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsRule()); 
@@ -8094,23 +8354,23 @@
 
 
     // $ANTLR start "ruleArrayBrackets"
-    // InternalPerspectiveDsl.g:2411:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2486:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
     public final void ruleArrayBrackets() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2415:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2416:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalPerspectiveDsl.g:2490:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2491:2: ( ( rule__ArrayBrackets__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2416:2: ( ( rule__ArrayBrackets__Group__0 ) )
-            // InternalPerspectiveDsl.g:2417:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalPerspectiveDsl.g:2491:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalPerspectiveDsl.g:2492:3: ( rule__ArrayBrackets__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2418:3: ( rule__ArrayBrackets__Group__0 )
-            // InternalPerspectiveDsl.g:2418:4: rule__ArrayBrackets__Group__0
+            // InternalPerspectiveDsl.g:2493:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalPerspectiveDsl.g:2493:4: rule__ArrayBrackets__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ArrayBrackets__Group__0();
@@ -8145,11 +8405,11 @@
 
 
     // $ANTLR start "entryRuleXFunctionTypeRef"
-    // InternalPerspectiveDsl.g:2427:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    // InternalPerspectiveDsl.g:2502:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
     public final void entryRuleXFunctionTypeRef() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2428:1: ( ruleXFunctionTypeRef EOF )
-            // InternalPerspectiveDsl.g:2429:1: ruleXFunctionTypeRef EOF
+            // InternalPerspectiveDsl.g:2503:1: ( ruleXFunctionTypeRef EOF )
+            // InternalPerspectiveDsl.g:2504:1: ruleXFunctionTypeRef EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefRule()); 
@@ -8179,23 +8439,23 @@
 
 
     // $ANTLR start "ruleXFunctionTypeRef"
-    // InternalPerspectiveDsl.g:2436:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2511:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
     public final void ruleXFunctionTypeRef() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2440:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2441:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalPerspectiveDsl.g:2515:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2516:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2441:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
-            // InternalPerspectiveDsl.g:2442:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalPerspectiveDsl.g:2516:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalPerspectiveDsl.g:2517:3: ( rule__XFunctionTypeRef__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2443:3: ( rule__XFunctionTypeRef__Group__0 )
-            // InternalPerspectiveDsl.g:2443:4: rule__XFunctionTypeRef__Group__0
+            // InternalPerspectiveDsl.g:2518:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalPerspectiveDsl.g:2518:4: rule__XFunctionTypeRef__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group__0();
@@ -8230,11 +8490,11 @@
 
 
     // $ANTLR start "entryRuleJvmParameterizedTypeReference"
-    // InternalPerspectiveDsl.g:2452:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    // InternalPerspectiveDsl.g:2527:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
     public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2453:1: ( ruleJvmParameterizedTypeReference EOF )
-            // InternalPerspectiveDsl.g:2454:1: ruleJvmParameterizedTypeReference EOF
+            // InternalPerspectiveDsl.g:2528:1: ( ruleJvmParameterizedTypeReference EOF )
+            // InternalPerspectiveDsl.g:2529:1: ruleJvmParameterizedTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
@@ -8264,23 +8524,23 @@
 
 
     // $ANTLR start "ruleJvmParameterizedTypeReference"
-    // InternalPerspectiveDsl.g:2461:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2536:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
     public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2465:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2466:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2540:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2541:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2466:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
-            // InternalPerspectiveDsl.g:2467:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2541:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2542:3: ( rule__JvmParameterizedTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2468:3: ( rule__JvmParameterizedTypeReference__Group__0 )
-            // InternalPerspectiveDsl.g:2468:4: rule__JvmParameterizedTypeReference__Group__0
+            // InternalPerspectiveDsl.g:2543:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2543:4: rule__JvmParameterizedTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group__0();
@@ -8315,11 +8575,11 @@
 
 
     // $ANTLR start "entryRuleJvmArgumentTypeReference"
-    // InternalPerspectiveDsl.g:2477:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    // InternalPerspectiveDsl.g:2552:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
     public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2478:1: ( ruleJvmArgumentTypeReference EOF )
-            // InternalPerspectiveDsl.g:2479:1: ruleJvmArgumentTypeReference EOF
+            // InternalPerspectiveDsl.g:2553:1: ( ruleJvmArgumentTypeReference EOF )
+            // InternalPerspectiveDsl.g:2554:1: ruleJvmArgumentTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceRule()); 
@@ -8349,23 +8609,23 @@
 
 
     // $ANTLR start "ruleJvmArgumentTypeReference"
-    // InternalPerspectiveDsl.g:2486:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2561:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
     public final void ruleJvmArgumentTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2490:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2491:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2565:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2566:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2491:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
-            // InternalPerspectiveDsl.g:2492:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2566:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalPerspectiveDsl.g:2567:3: ( rule__JvmArgumentTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2493:3: ( rule__JvmArgumentTypeReference__Alternatives )
-            // InternalPerspectiveDsl.g:2493:4: rule__JvmArgumentTypeReference__Alternatives
+            // InternalPerspectiveDsl.g:2568:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalPerspectiveDsl.g:2568:4: rule__JvmArgumentTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmArgumentTypeReference__Alternatives();
@@ -8400,11 +8660,11 @@
 
 
     // $ANTLR start "entryRuleJvmWildcardTypeReference"
-    // InternalPerspectiveDsl.g:2502:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    // InternalPerspectiveDsl.g:2577:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
     public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2503:1: ( ruleJvmWildcardTypeReference EOF )
-            // InternalPerspectiveDsl.g:2504:1: ruleJvmWildcardTypeReference EOF
+            // InternalPerspectiveDsl.g:2578:1: ( ruleJvmWildcardTypeReference EOF )
+            // InternalPerspectiveDsl.g:2579:1: ruleJvmWildcardTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceRule()); 
@@ -8434,23 +8694,23 @@
 
 
     // $ANTLR start "ruleJvmWildcardTypeReference"
-    // InternalPerspectiveDsl.g:2511:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2586:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
     public final void ruleJvmWildcardTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2515:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2516:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2590:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2591:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2516:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
-            // InternalPerspectiveDsl.g:2517:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2591:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalPerspectiveDsl.g:2592:3: ( rule__JvmWildcardTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2518:3: ( rule__JvmWildcardTypeReference__Group__0 )
-            // InternalPerspectiveDsl.g:2518:4: rule__JvmWildcardTypeReference__Group__0
+            // InternalPerspectiveDsl.g:2593:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalPerspectiveDsl.g:2593:4: rule__JvmWildcardTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group__0();
@@ -8485,11 +8745,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBound"
-    // InternalPerspectiveDsl.g:2527:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    // InternalPerspectiveDsl.g:2602:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
     public final void entryRuleJvmUpperBound() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2528:1: ( ruleJvmUpperBound EOF )
-            // InternalPerspectiveDsl.g:2529:1: ruleJvmUpperBound EOF
+            // InternalPerspectiveDsl.g:2603:1: ( ruleJvmUpperBound EOF )
+            // InternalPerspectiveDsl.g:2604:1: ruleJvmUpperBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundRule()); 
@@ -8519,23 +8779,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBound"
-    // InternalPerspectiveDsl.g:2536:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2611:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
     public final void ruleJvmUpperBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2540:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2541:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2615:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2616:2: ( ( rule__JvmUpperBound__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2541:2: ( ( rule__JvmUpperBound__Group__0 ) )
-            // InternalPerspectiveDsl.g:2542:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalPerspectiveDsl.g:2616:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2617:3: ( rule__JvmUpperBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2543:3: ( rule__JvmUpperBound__Group__0 )
-            // InternalPerspectiveDsl.g:2543:4: rule__JvmUpperBound__Group__0
+            // InternalPerspectiveDsl.g:2618:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalPerspectiveDsl.g:2618:4: rule__JvmUpperBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__Group__0();
@@ -8570,11 +8830,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBoundAnded"
-    // InternalPerspectiveDsl.g:2552:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    // InternalPerspectiveDsl.g:2627:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
     public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2553:1: ( ruleJvmUpperBoundAnded EOF )
-            // InternalPerspectiveDsl.g:2554:1: ruleJvmUpperBoundAnded EOF
+            // InternalPerspectiveDsl.g:2628:1: ( ruleJvmUpperBoundAnded EOF )
+            // InternalPerspectiveDsl.g:2629:1: ruleJvmUpperBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedRule()); 
@@ -8604,23 +8864,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBoundAnded"
-    // InternalPerspectiveDsl.g:2561:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2636:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
     public final void ruleJvmUpperBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2565:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2566:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2640:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2641:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2566:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
-            // InternalPerspectiveDsl.g:2567:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2641:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2642:3: ( rule__JvmUpperBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2568:3: ( rule__JvmUpperBoundAnded__Group__0 )
-            // InternalPerspectiveDsl.g:2568:4: rule__JvmUpperBoundAnded__Group__0
+            // InternalPerspectiveDsl.g:2643:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2643:4: rule__JvmUpperBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__Group__0();
@@ -8655,11 +8915,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBound"
-    // InternalPerspectiveDsl.g:2577:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    // InternalPerspectiveDsl.g:2652:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
     public final void entryRuleJvmLowerBound() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2578:1: ( ruleJvmLowerBound EOF )
-            // InternalPerspectiveDsl.g:2579:1: ruleJvmLowerBound EOF
+            // InternalPerspectiveDsl.g:2653:1: ( ruleJvmLowerBound EOF )
+            // InternalPerspectiveDsl.g:2654:1: ruleJvmLowerBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundRule()); 
@@ -8689,23 +8949,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBound"
-    // InternalPerspectiveDsl.g:2586:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2661:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
     public final void ruleJvmLowerBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2590:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2591:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2665:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2666:2: ( ( rule__JvmLowerBound__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2591:2: ( ( rule__JvmLowerBound__Group__0 ) )
-            // InternalPerspectiveDsl.g:2592:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalPerspectiveDsl.g:2666:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalPerspectiveDsl.g:2667:3: ( rule__JvmLowerBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2593:3: ( rule__JvmLowerBound__Group__0 )
-            // InternalPerspectiveDsl.g:2593:4: rule__JvmLowerBound__Group__0
+            // InternalPerspectiveDsl.g:2668:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalPerspectiveDsl.g:2668:4: rule__JvmLowerBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__Group__0();
@@ -8740,11 +9000,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBoundAnded"
-    // InternalPerspectiveDsl.g:2602:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    // InternalPerspectiveDsl.g:2677:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
     public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2603:1: ( ruleJvmLowerBoundAnded EOF )
-            // InternalPerspectiveDsl.g:2604:1: ruleJvmLowerBoundAnded EOF
+            // InternalPerspectiveDsl.g:2678:1: ( ruleJvmLowerBoundAnded EOF )
+            // InternalPerspectiveDsl.g:2679:1: ruleJvmLowerBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedRule()); 
@@ -8774,23 +9034,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBoundAnded"
-    // InternalPerspectiveDsl.g:2611:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2686:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
     public final void ruleJvmLowerBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2615:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2616:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2690:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2691:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2616:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
-            // InternalPerspectiveDsl.g:2617:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2691:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalPerspectiveDsl.g:2692:3: ( rule__JvmLowerBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2618:3: ( rule__JvmLowerBoundAnded__Group__0 )
-            // InternalPerspectiveDsl.g:2618:4: rule__JvmLowerBoundAnded__Group__0
+            // InternalPerspectiveDsl.g:2693:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalPerspectiveDsl.g:2693:4: rule__JvmLowerBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__Group__0();
@@ -8825,11 +9085,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameWithWildcard"
-    // InternalPerspectiveDsl.g:2627:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    // InternalPerspectiveDsl.g:2702:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
     public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2628:1: ( ruleQualifiedNameWithWildcard EOF )
-            // InternalPerspectiveDsl.g:2629:1: ruleQualifiedNameWithWildcard EOF
+            // InternalPerspectiveDsl.g:2703:1: ( ruleQualifiedNameWithWildcard EOF )
+            // InternalPerspectiveDsl.g:2704:1: ruleQualifiedNameWithWildcard EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardRule()); 
@@ -8859,23 +9119,23 @@
 
 
     // $ANTLR start "ruleQualifiedNameWithWildcard"
-    // InternalPerspectiveDsl.g:2636:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    // InternalPerspectiveDsl.g:2711:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
     public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2640:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
-            // InternalPerspectiveDsl.g:2641:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalPerspectiveDsl.g:2715:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // InternalPerspectiveDsl.g:2716:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
             {
-            // InternalPerspectiveDsl.g:2641:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
-            // InternalPerspectiveDsl.g:2642:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalPerspectiveDsl.g:2716:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalPerspectiveDsl.g:2717:3: ( rule__QualifiedNameWithWildcard__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2643:3: ( rule__QualifiedNameWithWildcard__Group__0 )
-            // InternalPerspectiveDsl.g:2643:4: rule__QualifiedNameWithWildcard__Group__0
+            // InternalPerspectiveDsl.g:2718:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalPerspectiveDsl.g:2718:4: rule__QualifiedNameWithWildcard__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameWithWildcard__Group__0();
@@ -8910,11 +9170,11 @@
 
 
     // $ANTLR start "entryRuleValidID"
-    // InternalPerspectiveDsl.g:2652:1: entryRuleValidID : ruleValidID EOF ;
+    // InternalPerspectiveDsl.g:2727:1: entryRuleValidID : ruleValidID EOF ;
     public final void entryRuleValidID() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2653:1: ( ruleValidID EOF )
-            // InternalPerspectiveDsl.g:2654:1: ruleValidID EOF
+            // InternalPerspectiveDsl.g:2728:1: ( ruleValidID EOF )
+            // InternalPerspectiveDsl.g:2729:1: ruleValidID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDRule()); 
@@ -8944,17 +9204,17 @@
 
 
     // $ANTLR start "ruleValidID"
-    // InternalPerspectiveDsl.g:2661:1: ruleValidID : ( RULE_ID ) ;
+    // InternalPerspectiveDsl.g:2736:1: ruleValidID : ( RULE_ID ) ;
     public final void ruleValidID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2665:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:2666:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:2740:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:2741:2: ( RULE_ID )
             {
-            // InternalPerspectiveDsl.g:2666:2: ( RULE_ID )
-            // InternalPerspectiveDsl.g:2667:3: RULE_ID
+            // InternalPerspectiveDsl.g:2741:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:2742:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
@@ -8985,11 +9245,11 @@
 
 
     // $ANTLR start "entryRuleXImportSection"
-    // InternalPerspectiveDsl.g:2677:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    // InternalPerspectiveDsl.g:2752:1: entryRuleXImportSection : ruleXImportSection EOF ;
     public final void entryRuleXImportSection() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2678:1: ( ruleXImportSection EOF )
-            // InternalPerspectiveDsl.g:2679:1: ruleXImportSection EOF
+            // InternalPerspectiveDsl.g:2753:1: ( ruleXImportSection EOF )
+            // InternalPerspectiveDsl.g:2754:1: ruleXImportSection EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionRule()); 
@@ -9019,26 +9279,26 @@
 
 
     // $ANTLR start "ruleXImportSection"
-    // InternalPerspectiveDsl.g:2686:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    // InternalPerspectiveDsl.g:2761:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
     public final void ruleXImportSection() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2690:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
-            // InternalPerspectiveDsl.g:2691:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalPerspectiveDsl.g:2765:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // InternalPerspectiveDsl.g:2766:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
             {
-            // InternalPerspectiveDsl.g:2691:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
-            // InternalPerspectiveDsl.g:2692:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalPerspectiveDsl.g:2766:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalPerspectiveDsl.g:2767:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
             {
-            // InternalPerspectiveDsl.g:2692:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
-            // InternalPerspectiveDsl.g:2693:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalPerspectiveDsl.g:2767:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // InternalPerspectiveDsl.g:2768:4: ( rule__XImportSection__ImportDeclarationsAssignment )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalPerspectiveDsl.g:2694:4: ( rule__XImportSection__ImportDeclarationsAssignment )
-            // InternalPerspectiveDsl.g:2694:5: rule__XImportSection__ImportDeclarationsAssignment
+            // InternalPerspectiveDsl.g:2769:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalPerspectiveDsl.g:2769:5: rule__XImportSection__ImportDeclarationsAssignment
             {
             pushFollow(FOLLOW_3);
             rule__XImportSection__ImportDeclarationsAssignment();
@@ -9054,13 +9314,13 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2697:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
-            // InternalPerspectiveDsl.g:2698:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalPerspectiveDsl.g:2772:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalPerspectiveDsl.g:2773:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalPerspectiveDsl.g:2699:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalPerspectiveDsl.g:2774:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             loop1:
             do {
                 int alt1=2;
@@ -9073,7 +9333,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:2699:5: rule__XImportSection__ImportDeclarationsAssignment
+            	    // InternalPerspectiveDsl.g:2774:5: rule__XImportSection__ImportDeclarationsAssignment
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__XImportSection__ImportDeclarationsAssignment();
@@ -9117,11 +9377,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameInStaticImport"
-    // InternalPerspectiveDsl.g:2709:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    // InternalPerspectiveDsl.g:2784:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
     public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
         try {
-            // InternalPerspectiveDsl.g:2710:1: ( ruleQualifiedNameInStaticImport EOF )
-            // InternalPerspectiveDsl.g:2711:1: ruleQualifiedNameInStaticImport EOF
+            // InternalPerspectiveDsl.g:2785:1: ( ruleQualifiedNameInStaticImport EOF )
+            // InternalPerspectiveDsl.g:2786:1: ruleQualifiedNameInStaticImport EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportRule()); 
@@ -9151,26 +9411,26 @@
 
 
     // $ANTLR start "ruleQualifiedNameInStaticImport"
-    // InternalPerspectiveDsl.g:2718:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    // InternalPerspectiveDsl.g:2793:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
     public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2722:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
-            // InternalPerspectiveDsl.g:2723:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalPerspectiveDsl.g:2797:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // InternalPerspectiveDsl.g:2798:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
             {
-            // InternalPerspectiveDsl.g:2723:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
-            // InternalPerspectiveDsl.g:2724:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalPerspectiveDsl.g:2798:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalPerspectiveDsl.g:2799:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
             {
-            // InternalPerspectiveDsl.g:2724:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
-            // InternalPerspectiveDsl.g:2725:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalPerspectiveDsl.g:2799:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // InternalPerspectiveDsl.g:2800:4: ( rule__QualifiedNameInStaticImport__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2726:4: ( rule__QualifiedNameInStaticImport__Group__0 )
-            // InternalPerspectiveDsl.g:2726:5: rule__QualifiedNameInStaticImport__Group__0
+            // InternalPerspectiveDsl.g:2801:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalPerspectiveDsl.g:2801:5: rule__QualifiedNameInStaticImport__Group__0
             {
             pushFollow(FOLLOW_4);
             rule__QualifiedNameInStaticImport__Group__0();
@@ -9186,13 +9446,13 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2729:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
-            // InternalPerspectiveDsl.g:2730:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalPerspectiveDsl.g:2804:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalPerspectiveDsl.g:2805:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalPerspectiveDsl.g:2731:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalPerspectiveDsl.g:2806:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             loop2:
             do {
                 int alt2=2;
@@ -9211,7 +9471,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:2731:5: rule__QualifiedNameInStaticImport__Group__0
+            	    // InternalPerspectiveDsl.g:2806:5: rule__QualifiedNameInStaticImport__Group__0
             	    {
             	    pushFollow(FOLLOW_4);
             	    rule__QualifiedNameInStaticImport__Group__0();
@@ -9255,23 +9515,23 @@
 
 
     // $ANTLR start "ruleSashOrientation"
-    // InternalPerspectiveDsl.g:2741:1: ruleSashOrientation : ( ( rule__SashOrientation__Alternatives ) ) ;
+    // InternalPerspectiveDsl.g:2816:1: ruleSashOrientation : ( ( rule__SashOrientation__Alternatives ) ) ;
     public final void ruleSashOrientation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2745:1: ( ( ( rule__SashOrientation__Alternatives ) ) )
-            // InternalPerspectiveDsl.g:2746:2: ( ( rule__SashOrientation__Alternatives ) )
+            // InternalPerspectiveDsl.g:2820:1: ( ( ( rule__SashOrientation__Alternatives ) ) )
+            // InternalPerspectiveDsl.g:2821:2: ( ( rule__SashOrientation__Alternatives ) )
             {
-            // InternalPerspectiveDsl.g:2746:2: ( ( rule__SashOrientation__Alternatives ) )
-            // InternalPerspectiveDsl.g:2747:3: ( rule__SashOrientation__Alternatives )
+            // InternalPerspectiveDsl.g:2821:2: ( ( rule__SashOrientation__Alternatives ) )
+            // InternalPerspectiveDsl.g:2822:3: ( rule__SashOrientation__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSashOrientationAccess().getAlternatives()); 
             }
-            // InternalPerspectiveDsl.g:2748:3: ( rule__SashOrientation__Alternatives )
-            // InternalPerspectiveDsl.g:2748:4: rule__SashOrientation__Alternatives
+            // InternalPerspectiveDsl.g:2823:3: ( rule__SashOrientation__Alternatives )
+            // InternalPerspectiveDsl.g:2823:4: rule__SashOrientation__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__SashOrientation__Alternatives();
@@ -9306,26 +9566,26 @@
 
 
     // $ANTLR start "rule__PerspectiveElement__Alternatives"
-    // InternalPerspectiveDsl.g:2756:1: rule__PerspectiveElement__Alternatives : ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) );
+    // InternalPerspectiveDsl.g:2831:1: rule__PerspectiveElement__Alternatives : ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) );
     public final void rule__PerspectiveElement__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2760:1: ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) )
+            // InternalPerspectiveDsl.g:2835:1: ( ( rulePerspectiveSashContainer ) | ( rulePerspectivePartStack ) | ( rulePerspectivePart ) )
             int alt3=3;
             switch ( input.LA(1) ) {
-            case 62:
+            case 63:
                 {
                 alt3=1;
                 }
                 break;
-            case 66:
+            case 67:
                 {
                 alt3=2;
                 }
                 break;
-            case 67:
+            case 68:
                 {
                 alt3=3;
                 }
@@ -9340,10 +9600,10 @@
 
             switch (alt3) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2761:2: ( rulePerspectiveSashContainer )
+                    // InternalPerspectiveDsl.g:2836:2: ( rulePerspectiveSashContainer )
                     {
-                    // InternalPerspectiveDsl.g:2761:2: ( rulePerspectiveSashContainer )
-                    // InternalPerspectiveDsl.g:2762:3: rulePerspectiveSashContainer
+                    // InternalPerspectiveDsl.g:2836:2: ( rulePerspectiveSashContainer )
+                    // InternalPerspectiveDsl.g:2837:3: rulePerspectiveSashContainer
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveElementAccess().getPerspectiveSashContainerParserRuleCall_0()); 
@@ -9363,10 +9623,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2767:2: ( rulePerspectivePartStack )
+                    // InternalPerspectiveDsl.g:2842:2: ( rulePerspectivePartStack )
                     {
-                    // InternalPerspectiveDsl.g:2767:2: ( rulePerspectivePartStack )
-                    // InternalPerspectiveDsl.g:2768:3: rulePerspectivePartStack
+                    // InternalPerspectiveDsl.g:2842:2: ( rulePerspectivePartStack )
+                    // InternalPerspectiveDsl.g:2843:3: rulePerspectivePartStack
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveElementAccess().getPerspectivePartStackParserRuleCall_1()); 
@@ -9386,10 +9646,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2773:2: ( rulePerspectivePart )
+                    // InternalPerspectiveDsl.g:2848:2: ( rulePerspectivePart )
                     {
-                    // InternalPerspectiveDsl.g:2773:2: ( rulePerspectivePart )
-                    // InternalPerspectiveDsl.g:2774:3: rulePerspectivePart
+                    // InternalPerspectiveDsl.g:2848:2: ( rulePerspectivePart )
+                    // InternalPerspectiveDsl.g:2849:3: rulePerspectivePart
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveElementAccess().getPerspectivePartParserRuleCall_2()); 
@@ -9426,90 +9686,95 @@
 
 
     // $ANTLR start "rule__PerspectiveView__Alternatives"
-    // InternalPerspectiveDsl.g:2783:1: rule__PerspectiveView__Alternatives : ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveBPMN ) | ( rulePerspectiveKanban ) | ( rulePerspectiveTitle ) | ( rulePerspectiveDashboard ) );
+    // InternalPerspectiveDsl.g:2858:1: rule__PerspectiveView__Alternatives : ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveBPMN ) | ( rulePerspectiveKanban ) | ( rulePerspectiveTitle ) | ( rulePerspectiveDashboard ) | ( rulePerspectiveBrowser ) );
     public final void rule__PerspectiveView__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2787:1: ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveBPMN ) | ( rulePerspectiveKanban ) | ( rulePerspectiveTitle ) | ( rulePerspectiveDashboard ) )
-            int alt4=15;
+            // InternalPerspectiveDsl.g:2862:1: ( ( rulePerspectiveSelection ) | ( rulePerspectiveTable ) | ( rulePerspectiveChart ) | ( rulePerspectiveReport ) | ( rulePerspectiveOrganization ) | ( rulePerspectiveTopology ) | ( rulePerspectiveDialog ) | ( rulePerspectiveGrid ) | ( rulePerspectiveWelcome ) | ( rulePerspectiveSearch ) | ( rulePerspectiveDataInterchange ) | ( rulePerspectiveBPMN ) | ( rulePerspectiveKanban ) | ( rulePerspectiveTitle ) | ( rulePerspectiveDashboard ) | ( rulePerspectiveBrowser ) )
+            int alt4=16;
             switch ( input.LA(1) ) {
-            case 69:
+            case 72:
                 {
                 alt4=1;
                 }
                 break;
-            case 70:
+            case 73:
                 {
                 alt4=2;
                 }
                 break;
-            case 72:
+            case 75:
                 {
                 alt4=3;
                 }
                 break;
-            case 73:
+            case 76:
                 {
                 alt4=4;
                 }
                 break;
-            case 74:
+            case 77:
                 {
                 alt4=5;
                 }
                 break;
-            case 75:
+            case 78:
                 {
                 alt4=6;
                 }
                 break;
-            case 76:
+            case 79:
                 {
                 alt4=7;
                 }
                 break;
-            case 71:
+            case 74:
                 {
                 alt4=8;
                 }
                 break;
-            case 81:
+            case 84:
                 {
                 alt4=9;
                 }
                 break;
-            case 82:
+            case 85:
                 {
                 alt4=10;
                 }
                 break;
-            case 86:
+            case 89:
                 {
                 alt4=11;
                 }
                 break;
-            case 77:
+            case 80:
                 {
                 alt4=12;
                 }
                 break;
-            case 78:
+            case 81:
                 {
                 alt4=13;
                 }
                 break;
-            case 87:
+            case 90:
                 {
                 alt4=14;
                 }
                 break;
-            case 88:
+            case 91:
                 {
                 alt4=15;
                 }
                 break;
+            case 92:
+                {
+                alt4=16;
+                }
+                break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
@@ -9520,10 +9785,10 @@
 
             switch (alt4) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2788:2: ( rulePerspectiveSelection )
+                    // InternalPerspectiveDsl.g:2863:2: ( rulePerspectiveSelection )
                     {
-                    // InternalPerspectiveDsl.g:2788:2: ( rulePerspectiveSelection )
-                    // InternalPerspectiveDsl.g:2789:3: rulePerspectiveSelection
+                    // InternalPerspectiveDsl.g:2863:2: ( rulePerspectiveSelection )
+                    // InternalPerspectiveDsl.g:2864:3: rulePerspectiveSelection
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSelectionParserRuleCall_0()); 
@@ -9543,10 +9808,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2794:2: ( rulePerspectiveTable )
+                    // InternalPerspectiveDsl.g:2869:2: ( rulePerspectiveTable )
                     {
-                    // InternalPerspectiveDsl.g:2794:2: ( rulePerspectiveTable )
-                    // InternalPerspectiveDsl.g:2795:3: rulePerspectiveTable
+                    // InternalPerspectiveDsl.g:2869:2: ( rulePerspectiveTable )
+                    // InternalPerspectiveDsl.g:2870:3: rulePerspectiveTable
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTableParserRuleCall_1()); 
@@ -9566,10 +9831,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2800:2: ( rulePerspectiveChart )
+                    // InternalPerspectiveDsl.g:2875:2: ( rulePerspectiveChart )
                     {
-                    // InternalPerspectiveDsl.g:2800:2: ( rulePerspectiveChart )
-                    // InternalPerspectiveDsl.g:2801:3: rulePerspectiveChart
+                    // InternalPerspectiveDsl.g:2875:2: ( rulePerspectiveChart )
+                    // InternalPerspectiveDsl.g:2876:3: rulePerspectiveChart
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveChartParserRuleCall_2()); 
@@ -9589,10 +9854,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:2806:2: ( rulePerspectiveReport )
+                    // InternalPerspectiveDsl.g:2881:2: ( rulePerspectiveReport )
                     {
-                    // InternalPerspectiveDsl.g:2806:2: ( rulePerspectiveReport )
-                    // InternalPerspectiveDsl.g:2807:3: rulePerspectiveReport
+                    // InternalPerspectiveDsl.g:2881:2: ( rulePerspectiveReport )
+                    // InternalPerspectiveDsl.g:2882:3: rulePerspectiveReport
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveReportParserRuleCall_3()); 
@@ -9612,10 +9877,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:2812:2: ( rulePerspectiveOrganization )
+                    // InternalPerspectiveDsl.g:2887:2: ( rulePerspectiveOrganization )
                     {
-                    // InternalPerspectiveDsl.g:2812:2: ( rulePerspectiveOrganization )
-                    // InternalPerspectiveDsl.g:2813:3: rulePerspectiveOrganization
+                    // InternalPerspectiveDsl.g:2887:2: ( rulePerspectiveOrganization )
+                    // InternalPerspectiveDsl.g:2888:3: rulePerspectiveOrganization
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveOrganizationParserRuleCall_4()); 
@@ -9635,10 +9900,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:2818:2: ( rulePerspectiveTopology )
+                    // InternalPerspectiveDsl.g:2893:2: ( rulePerspectiveTopology )
                     {
-                    // InternalPerspectiveDsl.g:2818:2: ( rulePerspectiveTopology )
-                    // InternalPerspectiveDsl.g:2819:3: rulePerspectiveTopology
+                    // InternalPerspectiveDsl.g:2893:2: ( rulePerspectiveTopology )
+                    // InternalPerspectiveDsl.g:2894:3: rulePerspectiveTopology
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTopologyParserRuleCall_5()); 
@@ -9658,10 +9923,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:2824:2: ( rulePerspectiveDialog )
+                    // InternalPerspectiveDsl.g:2899:2: ( rulePerspectiveDialog )
                     {
-                    // InternalPerspectiveDsl.g:2824:2: ( rulePerspectiveDialog )
-                    // InternalPerspectiveDsl.g:2825:3: rulePerspectiveDialog
+                    // InternalPerspectiveDsl.g:2899:2: ( rulePerspectiveDialog )
+                    // InternalPerspectiveDsl.g:2900:3: rulePerspectiveDialog
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDialogParserRuleCall_6()); 
@@ -9681,10 +9946,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:2830:2: ( rulePerspectiveGrid )
+                    // InternalPerspectiveDsl.g:2905:2: ( rulePerspectiveGrid )
                     {
-                    // InternalPerspectiveDsl.g:2830:2: ( rulePerspectiveGrid )
-                    // InternalPerspectiveDsl.g:2831:3: rulePerspectiveGrid
+                    // InternalPerspectiveDsl.g:2905:2: ( rulePerspectiveGrid )
+                    // InternalPerspectiveDsl.g:2906:3: rulePerspectiveGrid
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveGridParserRuleCall_7()); 
@@ -9704,10 +9969,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:2836:2: ( rulePerspectiveWelcome )
+                    // InternalPerspectiveDsl.g:2911:2: ( rulePerspectiveWelcome )
                     {
-                    // InternalPerspectiveDsl.g:2836:2: ( rulePerspectiveWelcome )
-                    // InternalPerspectiveDsl.g:2837:3: rulePerspectiveWelcome
+                    // InternalPerspectiveDsl.g:2911:2: ( rulePerspectiveWelcome )
+                    // InternalPerspectiveDsl.g:2912:3: rulePerspectiveWelcome
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveWelcomeParserRuleCall_8()); 
@@ -9727,10 +9992,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalPerspectiveDsl.g:2842:2: ( rulePerspectiveSearch )
+                    // InternalPerspectiveDsl.g:2917:2: ( rulePerspectiveSearch )
                     {
-                    // InternalPerspectiveDsl.g:2842:2: ( rulePerspectiveSearch )
-                    // InternalPerspectiveDsl.g:2843:3: rulePerspectiveSearch
+                    // InternalPerspectiveDsl.g:2917:2: ( rulePerspectiveSearch )
+                    // InternalPerspectiveDsl.g:2918:3: rulePerspectiveSearch
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveSearchParserRuleCall_9()); 
@@ -9750,10 +10015,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalPerspectiveDsl.g:2848:2: ( rulePerspectiveDataInterchange )
+                    // InternalPerspectiveDsl.g:2923:2: ( rulePerspectiveDataInterchange )
                     {
-                    // InternalPerspectiveDsl.g:2848:2: ( rulePerspectiveDataInterchange )
-                    // InternalPerspectiveDsl.g:2849:3: rulePerspectiveDataInterchange
+                    // InternalPerspectiveDsl.g:2923:2: ( rulePerspectiveDataInterchange )
+                    // InternalPerspectiveDsl.g:2924:3: rulePerspectiveDataInterchange
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDataInterchangeParserRuleCall_10()); 
@@ -9773,10 +10038,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalPerspectiveDsl.g:2854:2: ( rulePerspectiveBPMN )
+                    // InternalPerspectiveDsl.g:2929:2: ( rulePerspectiveBPMN )
                     {
-                    // InternalPerspectiveDsl.g:2854:2: ( rulePerspectiveBPMN )
-                    // InternalPerspectiveDsl.g:2855:3: rulePerspectiveBPMN
+                    // InternalPerspectiveDsl.g:2929:2: ( rulePerspectiveBPMN )
+                    // InternalPerspectiveDsl.g:2930:3: rulePerspectiveBPMN
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBPMNParserRuleCall_11()); 
@@ -9796,10 +10061,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalPerspectiveDsl.g:2860:2: ( rulePerspectiveKanban )
+                    // InternalPerspectiveDsl.g:2935:2: ( rulePerspectiveKanban )
                     {
-                    // InternalPerspectiveDsl.g:2860:2: ( rulePerspectiveKanban )
-                    // InternalPerspectiveDsl.g:2861:3: rulePerspectiveKanban
+                    // InternalPerspectiveDsl.g:2935:2: ( rulePerspectiveKanban )
+                    // InternalPerspectiveDsl.g:2936:3: rulePerspectiveKanban
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveKanbanParserRuleCall_12()); 
@@ -9819,10 +10084,10 @@
                     }
                     break;
                 case 14 :
-                    // InternalPerspectiveDsl.g:2866:2: ( rulePerspectiveTitle )
+                    // InternalPerspectiveDsl.g:2941:2: ( rulePerspectiveTitle )
                     {
-                    // InternalPerspectiveDsl.g:2866:2: ( rulePerspectiveTitle )
-                    // InternalPerspectiveDsl.g:2867:3: rulePerspectiveTitle
+                    // InternalPerspectiveDsl.g:2941:2: ( rulePerspectiveTitle )
+                    // InternalPerspectiveDsl.g:2942:3: rulePerspectiveTitle
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveTitleParserRuleCall_13()); 
@@ -9842,10 +10107,10 @@
                     }
                     break;
                 case 15 :
-                    // InternalPerspectiveDsl.g:2872:2: ( rulePerspectiveDashboard )
+                    // InternalPerspectiveDsl.g:2947:2: ( rulePerspectiveDashboard )
                     {
-                    // InternalPerspectiveDsl.g:2872:2: ( rulePerspectiveDashboard )
-                    // InternalPerspectiveDsl.g:2873:3: rulePerspectiveDashboard
+                    // InternalPerspectiveDsl.g:2947:2: ( rulePerspectiveDashboard )
+                    // InternalPerspectiveDsl.g:2948:3: rulePerspectiveDashboard
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveViewAccess().getPerspectiveDashboardParserRuleCall_14()); 
@@ -9864,6 +10129,29 @@
 
                     }
                     break;
+                case 16 :
+                    // InternalPerspectiveDsl.g:2953:2: ( rulePerspectiveBrowser )
+                    {
+                    // InternalPerspectiveDsl.g:2953:2: ( rulePerspectiveBrowser )
+                    // InternalPerspectiveDsl.g:2954:3: rulePerspectiveBrowser
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectiveViewAccess().getPerspectiveBrowserParserRuleCall_15()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    rulePerspectiveBrowser();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectiveViewAccess().getPerspectiveBrowserParserRuleCall_15()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
 
             }
         }
@@ -9882,27 +10170,27 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
-    // InternalPerspectiveDsl.g:2882: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 ) ) );
+    // InternalPerspectiveDsl.g:2963: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:2886:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            // InternalPerspectiveDsl.g:2967: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:2887:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:2968:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2887:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
-                    // InternalPerspectiveDsl.g:2888:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:2968:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:2969:3: ( rule__XImportDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2889:3: ( rule__XImportDeclaration__Group_2_0__0 )
-                    // InternalPerspectiveDsl.g:2889:4: rule__XImportDeclaration__Group_2_0__0
+                    // InternalPerspectiveDsl.g:2970:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:2970:4: rule__XImportDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_0__0();
@@ -9922,16 +10210,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2893:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:2974:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:2893:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
-                    // InternalPerspectiveDsl.g:2894:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:2974:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:2975:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
                     }
-                    // InternalPerspectiveDsl.g:2895:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
-                    // InternalPerspectiveDsl.g:2895:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
+                    // InternalPerspectiveDsl.g:2976:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:2976:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedTypeAssignment_2_1();
@@ -9951,16 +10239,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2899:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalPerspectiveDsl.g:2980:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
                     {
-                    // InternalPerspectiveDsl.g:2899:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
-                    // InternalPerspectiveDsl.g:2900:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalPerspectiveDsl.g:2980:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalPerspectiveDsl.g:2981:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
                     }
-                    // InternalPerspectiveDsl.g:2901:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
-                    // InternalPerspectiveDsl.g:2901:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
+                    // InternalPerspectiveDsl.g:2982:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalPerspectiveDsl.g:2982:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedNamespaceAssignment_2_2();
@@ -9980,16 +10268,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:2905:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalPerspectiveDsl.g:2986:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2905:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
-                    // InternalPerspectiveDsl.g:2906:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalPerspectiveDsl.g:2986:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalPerspectiveDsl.g:2987:3: ( rule__XImportDeclaration__Group_2_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
                     }
-                    // InternalPerspectiveDsl.g:2907:3: ( rule__XImportDeclaration__Group_2_3__0 )
-                    // InternalPerspectiveDsl.g:2907:4: rule__XImportDeclaration__Group_2_3__0
+                    // InternalPerspectiveDsl.g:2988:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalPerspectiveDsl.g:2988:4: rule__XImportDeclaration__Group_2_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_3__0();
@@ -10026,13 +10314,13 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2_0_3"
-    // InternalPerspectiveDsl.g:2915:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
+    // InternalPerspectiveDsl.g:2996: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:2919:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            // InternalPerspectiveDsl.g:3000:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -10051,16 +10339,16 @@
             }
             switch (alt6) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2920:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalPerspectiveDsl.g:3001:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2920:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
-                    // InternalPerspectiveDsl.g:2921:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalPerspectiveDsl.g:3001:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalPerspectiveDsl.g:3002:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2922:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
-                    // InternalPerspectiveDsl.g:2922:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
+                    // InternalPerspectiveDsl.g:3003:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalPerspectiveDsl.g:3003:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__WildcardAssignment_2_0_3_0();
@@ -10080,16 +10368,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2926:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalPerspectiveDsl.g:3007:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:2926:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
-                    // InternalPerspectiveDsl.g:2927:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalPerspectiveDsl.g:3007:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalPerspectiveDsl.g:3008:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:2928:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
-                    // InternalPerspectiveDsl.g:2928:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
+                    // InternalPerspectiveDsl.g:3009:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalPerspectiveDsl.g:3009:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__MemberNameAssignment_2_0_3_1();
@@ -10126,27 +10414,27 @@
 
 
     // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
-    // InternalPerspectiveDsl.g:2936:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
+    // InternalPerspectiveDsl.g:3017: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:2940:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:3021: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:2941:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3022:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2941:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:2942:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalPerspectiveDsl.g:3022:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3023:3: ( rule__XAnnotation__Group_3_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2943:3: ( rule__XAnnotation__Group_3_1_0__0 )
-                    // InternalPerspectiveDsl.g:2943:4: rule__XAnnotation__Group_3_1_0__0
+                    // InternalPerspectiveDsl.g:3024:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalPerspectiveDsl.g:3024:4: rule__XAnnotation__Group_3_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3_1_0__0();
@@ -10166,16 +10454,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2947:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalPerspectiveDsl.g:3028:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:2947:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
-                    // InternalPerspectiveDsl.g:2948:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalPerspectiveDsl.g:3028:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalPerspectiveDsl.g:3029:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:2949:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
-                    // InternalPerspectiveDsl.g:2949:4: rule__XAnnotation__ValueAssignment_3_1_1
+                    // InternalPerspectiveDsl.g:3030:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalPerspectiveDsl.g:3030:4: rule__XAnnotation__ValueAssignment_3_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__ValueAssignment_3_1_1();
@@ -10212,27 +10500,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
-    // InternalPerspectiveDsl.g:2957:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3038: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:2961:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3042:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
             int alt8=2;
             alt8 = dfa8.predict(input);
             switch (alt8) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2962:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3043:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2962:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:2963:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3043:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3044:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2964:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-                    // InternalPerspectiveDsl.g:2964:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    // InternalPerspectiveDsl.g:3045:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3045:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0__0();
@@ -10252,16 +10540,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2968:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3049:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2968:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
-                    // InternalPerspectiveDsl.g:2969:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3049:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3050:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
                     }
-                    // InternalPerspectiveDsl.g:2970:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
-                    // InternalPerspectiveDsl.g:2970:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    // InternalPerspectiveDsl.g:3051:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3051:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1__0();
@@ -10298,27 +10586,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
-    // InternalPerspectiveDsl.g:2978:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    // InternalPerspectiveDsl.g:3059:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
     public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:2982:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:3063:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
             int alt9=2;
             alt9 = dfa9.predict(input);
             switch (alt9) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2983:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3064:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:2983:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:2984:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3064:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3065:3: ( rule__XAnnotationElementValue__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:2985:3: ( rule__XAnnotationElementValue__Group_0__0 )
-                    // InternalPerspectiveDsl.g:2985:4: rule__XAnnotationElementValue__Group_0__0
+                    // InternalPerspectiveDsl.g:3066:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3066:4: rule__XAnnotationElementValue__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0__0();
@@ -10338,10 +10626,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2989:2: ( ruleXAnnotationOrExpression )
+                    // InternalPerspectiveDsl.g:3070:2: ( ruleXAnnotationOrExpression )
                     {
-                    // InternalPerspectiveDsl.g:2989:2: ( ruleXAnnotationOrExpression )
-                    // InternalPerspectiveDsl.g:2990:3: ruleXAnnotationOrExpression
+                    // InternalPerspectiveDsl.g:3070:2: ( ruleXAnnotationOrExpression )
+                    // InternalPerspectiveDsl.g:3071:3: ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
@@ -10378,20 +10666,20 @@
 
 
     // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
-    // InternalPerspectiveDsl.g:2999:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    // InternalPerspectiveDsl.g:3080:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
     public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3003:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:3084:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
-            if ( (LA10_0==90) ) {
+            if ( (LA10_0==95) ) {
                 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==91||(LA10_0>=95 && LA10_0<=96)||LA10_0==99||LA10_0==101||(LA10_0>=105 && LA10_0<=113)||LA10_0==115||LA10_0==126) ) {
+            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==96||(LA10_0>=100 && LA10_0<=101)||LA10_0==104||LA10_0==106||(LA10_0>=110 && LA10_0<=118)||LA10_0==120||LA10_0==131) ) {
                 alt10=2;
             }
             else {
@@ -10403,10 +10691,10 @@
             }
             switch (alt10) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3004:2: ( ruleXAnnotation )
+                    // InternalPerspectiveDsl.g:3085:2: ( ruleXAnnotation )
                     {
-                    // InternalPerspectiveDsl.g:3004:2: ( ruleXAnnotation )
-                    // InternalPerspectiveDsl.g:3005:3: ruleXAnnotation
+                    // InternalPerspectiveDsl.g:3085:2: ( ruleXAnnotation )
+                    // InternalPerspectiveDsl.g:3086:3: ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
@@ -10426,10 +10714,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3010:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:3091:2: ( ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:3010:2: ( ruleXExpression )
-                    // InternalPerspectiveDsl.g:3011:3: ruleXExpression
+                    // InternalPerspectiveDsl.g:3091:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:3092:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -10466,13 +10754,13 @@
 
 
     // $ANTLR start "rule__XAssignment__Alternatives"
-    // InternalPerspectiveDsl.g:3020:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3101: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:3024:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3105:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
             int alt11=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
@@ -10482,7 +10770,7 @@
                 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==89||(LA11_1>=91 && LA11_1<=116)||(LA11_1>=122 && LA11_1<=123)||(LA11_1>=125 && LA11_1<=126)) ) {
+                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==94||(LA11_1>=96 && LA11_1<=121)||(LA11_1>=127 && LA11_1<=128)||(LA11_1>=130 && LA11_1<=131)) ) {
                     alt11=2;
                 }
                 else {
@@ -10498,12 +10786,12 @@
                 {
                 int LA11_2 = input.LA(2);
 
-                if ( (LA11_2==13) ) {
-                    alt11=1;
-                }
-                else if ( (LA11_2==EOF||(LA11_2>=RULE_ID && LA11_2<=RULE_DECIMAL)||(LA11_2>=14 && LA11_2<=50)||(LA11_2>=54 && LA11_2<=55)||LA11_2==89||(LA11_2>=91 && LA11_2<=116)||(LA11_2>=122 && LA11_2<=123)||(LA11_2>=125 && LA11_2<=126)) ) {
+                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==94||(LA11_2>=96 && LA11_2<=121)||(LA11_2>=127 && LA11_2<=128)||(LA11_2>=130 && LA11_2<=131)) ) {
                     alt11=2;
                 }
+                else if ( (LA11_2==13) ) {
+                    alt11=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -10520,7 +10808,7 @@
                 if ( (LA11_3==13) ) {
                     alt11=1;
                 }
-                else 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==89||(LA11_3>=91 && LA11_3<=116)||(LA11_3>=122 && LA11_3<=123)||(LA11_3>=125 && LA11_3<=126)) ) {
+                else 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==94||(LA11_3>=96 && LA11_3<=121)||(LA11_3>=127 && LA11_3<=128)||(LA11_3>=130 && LA11_3<=131)) ) {
                     alt11=2;
                 }
                 else {
@@ -10539,7 +10827,7 @@
                 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==89||(LA11_4>=91 && LA11_4<=116)||(LA11_4>=122 && LA11_4<=123)||(LA11_4>=125 && LA11_4<=126)) ) {
+                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==94||(LA11_4>=96 && LA11_4<=121)||(LA11_4>=127 && LA11_4<=128)||(LA11_4>=130 && LA11_4<=131)) ) {
                     alt11=2;
                 }
                 else {
@@ -10558,7 +10846,7 @@
                 if ( (LA11_5==13) ) {
                     alt11=1;
                 }
-                else 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==89||(LA11_5>=91 && LA11_5<=116)||(LA11_5>=122 && LA11_5<=123)||(LA11_5>=125 && LA11_5<=126)) ) {
+                else 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==94||(LA11_5>=96 && LA11_5<=121)||(LA11_5>=127 && LA11_5<=128)||(LA11_5>=130 && LA11_5<=131)) ) {
                     alt11=2;
                 }
                 else {
@@ -10581,22 +10869,22 @@
             case 49:
             case 50:
             case 54:
-            case 91:
-            case 95:
             case 96:
-            case 99:
+            case 100:
             case 101:
-            case 105:
+            case 104:
             case 106:
-            case 107:
-            case 108:
-            case 109:
             case 110:
             case 111:
             case 112:
             case 113:
+            case 114:
             case 115:
-            case 126:
+            case 116:
+            case 117:
+            case 118:
+            case 120:
+            case 131:
                 {
                 alt11=2;
                 }
@@ -10611,16 +10899,16 @@
 
             switch (alt11) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3025:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3106:2: ( ( rule__XAssignment__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3025:2: ( ( rule__XAssignment__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:3026:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3106:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3107:3: ( rule__XAssignment__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3027:3: ( rule__XAssignment__Group_0__0 )
-                    // InternalPerspectiveDsl.g:3027:4: rule__XAssignment__Group_0__0
+                    // InternalPerspectiveDsl.g:3108:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3108:4: rule__XAssignment__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_0__0();
@@ -10640,16 +10928,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3031:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3112:2: ( ( rule__XAssignment__Group_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3031:2: ( ( rule__XAssignment__Group_1__0 ) )
-                    // InternalPerspectiveDsl.g:3032:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3112:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3113:3: ( rule__XAssignment__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3033:3: ( rule__XAssignment__Group_1__0 )
-                    // InternalPerspectiveDsl.g:3033:4: rule__XAssignment__Group_1__0
+                    // InternalPerspectiveDsl.g:3114:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3114:4: rule__XAssignment__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1__0();
@@ -10686,13 +10974,13 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Alternatives"
-    // InternalPerspectiveDsl.g:3041:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
+    // InternalPerspectiveDsl.g:3122: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:3045:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            // InternalPerspectiveDsl.g:3126:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
             int alt12=7;
             switch ( input.LA(1) ) {
             case 16:
@@ -10740,10 +11028,10 @@
 
             switch (alt12) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3046:2: ( '+=' )
+                    // InternalPerspectiveDsl.g:3127:2: ( '+=' )
                     {
-                    // InternalPerspectiveDsl.g:3046:2: ( '+=' )
-                    // InternalPerspectiveDsl.g:3047:3: '+='
+                    // InternalPerspectiveDsl.g:3127:2: ( '+=' )
+                    // InternalPerspectiveDsl.g:3128:3: '+='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
@@ -10759,10 +11047,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3052:2: ( '-=' )
+                    // InternalPerspectiveDsl.g:3133:2: ( '-=' )
                     {
-                    // InternalPerspectiveDsl.g:3052:2: ( '-=' )
-                    // InternalPerspectiveDsl.g:3053:3: '-='
+                    // InternalPerspectiveDsl.g:3133:2: ( '-=' )
+                    // InternalPerspectiveDsl.g:3134:3: '-='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
@@ -10778,10 +11066,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3058:2: ( '*=' )
+                    // InternalPerspectiveDsl.g:3139:2: ( '*=' )
                     {
-                    // InternalPerspectiveDsl.g:3058:2: ( '*=' )
-                    // InternalPerspectiveDsl.g:3059:3: '*='
+                    // InternalPerspectiveDsl.g:3139:2: ( '*=' )
+                    // InternalPerspectiveDsl.g:3140:3: '*='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
@@ -10797,10 +11085,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3064:2: ( '/=' )
+                    // InternalPerspectiveDsl.g:3145:2: ( '/=' )
                     {
-                    // InternalPerspectiveDsl.g:3064:2: ( '/=' )
-                    // InternalPerspectiveDsl.g:3065:3: '/='
+                    // InternalPerspectiveDsl.g:3145:2: ( '/=' )
+                    // InternalPerspectiveDsl.g:3146:3: '/='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
@@ -10816,10 +11104,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3070:2: ( '%=' )
+                    // InternalPerspectiveDsl.g:3151:2: ( '%=' )
                     {
-                    // InternalPerspectiveDsl.g:3070:2: ( '%=' )
-                    // InternalPerspectiveDsl.g:3071:3: '%='
+                    // InternalPerspectiveDsl.g:3151:2: ( '%=' )
+                    // InternalPerspectiveDsl.g:3152:3: '%='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
@@ -10835,16 +11123,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3076:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3157:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3076:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
-                    // InternalPerspectiveDsl.g:3077:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3157:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3158:3: ( rule__OpMultiAssign__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
                     }
-                    // InternalPerspectiveDsl.g:3078:3: ( rule__OpMultiAssign__Group_5__0 )
-                    // InternalPerspectiveDsl.g:3078:4: rule__OpMultiAssign__Group_5__0
+                    // InternalPerspectiveDsl.g:3159:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3159:4: rule__OpMultiAssign__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_5__0();
@@ -10864,16 +11152,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3082:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3163:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3082:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
-                    // InternalPerspectiveDsl.g:3083:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3163:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3164:3: ( rule__OpMultiAssign__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
                     }
-                    // InternalPerspectiveDsl.g:3084:3: ( rule__OpMultiAssign__Group_6__0 )
-                    // InternalPerspectiveDsl.g:3084:4: rule__OpMultiAssign__Group_6__0
+                    // InternalPerspectiveDsl.g:3165:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3165:4: rule__OpMultiAssign__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_6__0();
@@ -10910,13 +11198,13 @@
 
 
     // $ANTLR start "rule__OpEquality__Alternatives"
-    // InternalPerspectiveDsl.g:3092:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    // InternalPerspectiveDsl.g:3173:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
     public final void rule__OpEquality__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3096:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            // InternalPerspectiveDsl.g:3177:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
             int alt13=4;
             switch ( input.LA(1) ) {
             case 21:
@@ -10949,10 +11237,10 @@
 
             switch (alt13) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3097:2: ( '==' )
+                    // InternalPerspectiveDsl.g:3178:2: ( '==' )
                     {
-                    // InternalPerspectiveDsl.g:3097:2: ( '==' )
-                    // InternalPerspectiveDsl.g:3098:3: '=='
+                    // InternalPerspectiveDsl.g:3178:2: ( '==' )
+                    // InternalPerspectiveDsl.g:3179:3: '=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
@@ -10968,10 +11256,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3103:2: ( '!=' )
+                    // InternalPerspectiveDsl.g:3184:2: ( '!=' )
                     {
-                    // InternalPerspectiveDsl.g:3103:2: ( '!=' )
-                    // InternalPerspectiveDsl.g:3104:3: '!='
+                    // InternalPerspectiveDsl.g:3184:2: ( '!=' )
+                    // InternalPerspectiveDsl.g:3185:3: '!='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
@@ -10987,10 +11275,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3109:2: ( '===' )
+                    // InternalPerspectiveDsl.g:3190:2: ( '===' )
                     {
-                    // InternalPerspectiveDsl.g:3109:2: ( '===' )
-                    // InternalPerspectiveDsl.g:3110:3: '==='
+                    // InternalPerspectiveDsl.g:3190:2: ( '===' )
+                    // InternalPerspectiveDsl.g:3191:3: '==='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
@@ -11006,10 +11294,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3115:2: ( '!==' )
+                    // InternalPerspectiveDsl.g:3196:2: ( '!==' )
                     {
-                    // InternalPerspectiveDsl.g:3115:2: ( '!==' )
-                    // InternalPerspectiveDsl.g:3116:3: '!=='
+                    // InternalPerspectiveDsl.g:3196:2: ( '!==' )
+                    // InternalPerspectiveDsl.g:3197:3: '!=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
@@ -11042,17 +11330,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Alternatives_1"
-    // InternalPerspectiveDsl.g:3125:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3206: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:3129:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3210: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==97) ) {
+            if ( (LA14_0==102) ) {
                 alt14=1;
             }
             else if ( ((LA14_0>=25 && LA14_0<=27)) ) {
@@ -11067,16 +11355,16 @@
             }
             switch (alt14) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3130:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3211:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3130:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:3131:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3211:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3212:3: ( rule__XRelationalExpression__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3132:3: ( rule__XRelationalExpression__Group_1_0__0 )
-                    // InternalPerspectiveDsl.g:3132:4: rule__XRelationalExpression__Group_1_0__0
+                    // InternalPerspectiveDsl.g:3213:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3213:4: rule__XRelationalExpression__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_0__0();
@@ -11096,16 +11384,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3136:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3217:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3136:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3137:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3217:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3218:3: ( rule__XRelationalExpression__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3138:3: ( rule__XRelationalExpression__Group_1_1__0 )
-                    // InternalPerspectiveDsl.g:3138:4: rule__XRelationalExpression__Group_1_1__0
+                    // InternalPerspectiveDsl.g:3219:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3219:4: rule__XRelationalExpression__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_1__0();
@@ -11142,13 +11430,13 @@
 
 
     // $ANTLR start "rule__OpCompare__Alternatives"
-    // InternalPerspectiveDsl.g:3146:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    // InternalPerspectiveDsl.g:3227:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
     public final void rule__OpCompare__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3150:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            // InternalPerspectiveDsl.g:3231:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
             int alt15=4;
             switch ( input.LA(1) ) {
             case 25:
@@ -11160,12 +11448,12 @@
                 {
                 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==91||(LA15_2>=95 && LA15_2<=96)||LA15_2==99||LA15_2==101||(LA15_2>=105 && LA15_2<=113)||LA15_2==115||LA15_2==126) ) {
+                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==96||(LA15_2>=100 && LA15_2<=101)||LA15_2==104||LA15_2==106||(LA15_2>=110 && LA15_2<=118)||LA15_2==120||LA15_2==131) ) {
                     alt15=4;
                 }
+                else if ( (LA15_2==13) ) {
+                    alt15=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -11190,10 +11478,10 @@
 
             switch (alt15) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3151:2: ( '>=' )
+                    // InternalPerspectiveDsl.g:3232:2: ( '>=' )
                     {
-                    // InternalPerspectiveDsl.g:3151:2: ( '>=' )
-                    // InternalPerspectiveDsl.g:3152:3: '>='
+                    // InternalPerspectiveDsl.g:3232:2: ( '>=' )
+                    // InternalPerspectiveDsl.g:3233:3: '>='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
@@ -11209,16 +11497,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3157:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3238:2: ( ( rule__OpCompare__Group_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3157:2: ( ( rule__OpCompare__Group_1__0 ) )
-                    // InternalPerspectiveDsl.g:3158:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3238:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:3239:3: ( rule__OpCompare__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGroup_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3159:3: ( rule__OpCompare__Group_1__0 )
-                    // InternalPerspectiveDsl.g:3159:4: rule__OpCompare__Group_1__0
+                    // InternalPerspectiveDsl.g:3240:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalPerspectiveDsl.g:3240:4: rule__OpCompare__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpCompare__Group_1__0();
@@ -11238,10 +11526,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3163:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3244:2: ( '>' )
                     {
-                    // InternalPerspectiveDsl.g:3163:2: ( '>' )
-                    // InternalPerspectiveDsl.g:3164:3: '>'
+                    // InternalPerspectiveDsl.g:3244:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3245:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
@@ -11257,10 +11545,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3169:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3250:2: ( '<' )
                     {
-                    // InternalPerspectiveDsl.g:3169:2: ( '<' )
-                    // InternalPerspectiveDsl.g:3170:3: '<'
+                    // InternalPerspectiveDsl.g:3250:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3251:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
@@ -11293,21 +11581,21 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives"
-    // InternalPerspectiveDsl.g:3179:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
+    // InternalPerspectiveDsl.g:3260: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:3183:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            // InternalPerspectiveDsl.g:3264: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:3184:2: ( '->' )
+                    // InternalPerspectiveDsl.g:3265:2: ( '->' )
                     {
-                    // InternalPerspectiveDsl.g:3184:2: ( '->' )
-                    // InternalPerspectiveDsl.g:3185:3: '->'
+                    // InternalPerspectiveDsl.g:3265:2: ( '->' )
+                    // InternalPerspectiveDsl.g:3266:3: '->'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
@@ -11323,10 +11611,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3190:2: ( '..<' )
+                    // InternalPerspectiveDsl.g:3271:2: ( '..<' )
                     {
-                    // InternalPerspectiveDsl.g:3190:2: ( '..<' )
-                    // InternalPerspectiveDsl.g:3191:3: '..<'
+                    // InternalPerspectiveDsl.g:3271:2: ( '..<' )
+                    // InternalPerspectiveDsl.g:3272:3: '..<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
@@ -11342,16 +11630,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3196:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalPerspectiveDsl.g:3277:2: ( ( rule__OpOther__Group_2__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3196:2: ( ( rule__OpOther__Group_2__0 ) )
-                    // InternalPerspectiveDsl.g:3197:3: ( rule__OpOther__Group_2__0 )
+                    // InternalPerspectiveDsl.g:3277:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalPerspectiveDsl.g:3278:3: ( rule__OpOther__Group_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_2()); 
                     }
-                    // InternalPerspectiveDsl.g:3198:3: ( rule__OpOther__Group_2__0 )
-                    // InternalPerspectiveDsl.g:3198:4: rule__OpOther__Group_2__0
+                    // InternalPerspectiveDsl.g:3279:3: ( rule__OpOther__Group_2__0 )
+                    // InternalPerspectiveDsl.g:3279:4: rule__OpOther__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_2__0();
@@ -11371,10 +11659,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3202:2: ( '..' )
+                    // InternalPerspectiveDsl.g:3283:2: ( '..' )
                     {
-                    // InternalPerspectiveDsl.g:3202:2: ( '..' )
-                    // InternalPerspectiveDsl.g:3203:3: '..'
+                    // InternalPerspectiveDsl.g:3283:2: ( '..' )
+                    // InternalPerspectiveDsl.g:3284:3: '..'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
@@ -11390,10 +11678,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3208:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3289:2: ( '=>' )
                     {
-                    // InternalPerspectiveDsl.g:3208:2: ( '=>' )
-                    // InternalPerspectiveDsl.g:3209:3: '=>'
+                    // InternalPerspectiveDsl.g:3289:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3290:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
@@ -11409,16 +11697,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3214:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3295:2: ( ( rule__OpOther__Group_5__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3214:2: ( ( rule__OpOther__Group_5__0 ) )
-                    // InternalPerspectiveDsl.g:3215:3: ( rule__OpOther__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3295:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalPerspectiveDsl.g:3296:3: ( rule__OpOther__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5()); 
                     }
-                    // InternalPerspectiveDsl.g:3216:3: ( rule__OpOther__Group_5__0 )
-                    // InternalPerspectiveDsl.g:3216:4: rule__OpOther__Group_5__0
+                    // InternalPerspectiveDsl.g:3297:3: ( rule__OpOther__Group_5__0 )
+                    // InternalPerspectiveDsl.g:3297:4: rule__OpOther__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5__0();
@@ -11438,16 +11726,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3220:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3301:2: ( ( rule__OpOther__Group_6__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3220:2: ( ( rule__OpOther__Group_6__0 ) )
-                    // InternalPerspectiveDsl.g:3221:3: ( rule__OpOther__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3301:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalPerspectiveDsl.g:3302:3: ( rule__OpOther__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6()); 
                     }
-                    // InternalPerspectiveDsl.g:3222:3: ( rule__OpOther__Group_6__0 )
-                    // InternalPerspectiveDsl.g:3222:4: rule__OpOther__Group_6__0
+                    // InternalPerspectiveDsl.g:3303:3: ( rule__OpOther__Group_6__0 )
+                    // InternalPerspectiveDsl.g:3303:4: rule__OpOther__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6__0();
@@ -11467,10 +11755,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:3226:2: ( '<>' )
+                    // InternalPerspectiveDsl.g:3307:2: ( '<>' )
                     {
-                    // InternalPerspectiveDsl.g:3226:2: ( '<>' )
-                    // InternalPerspectiveDsl.g:3227:3: '<>'
+                    // InternalPerspectiveDsl.g:3307:2: ( '<>' )
+                    // InternalPerspectiveDsl.g:3308:3: '<>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
@@ -11486,10 +11774,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:3232:2: ( '?:' )
+                    // InternalPerspectiveDsl.g:3313:2: ( '?:' )
                     {
-                    // InternalPerspectiveDsl.g:3232:2: ( '?:' )
-                    // InternalPerspectiveDsl.g:3233:3: '?:'
+                    // InternalPerspectiveDsl.g:3313:2: ( '?:' )
+                    // InternalPerspectiveDsl.g:3314:3: '?:'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
@@ -11522,13 +11810,13 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_5_1"
-    // InternalPerspectiveDsl.g:3242:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
+    // InternalPerspectiveDsl.g:3323: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:3246:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            // InternalPerspectiveDsl.g:3327:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -11538,7 +11826,7 @@
                 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==91||(LA17_1>=95 && LA17_1<=96)||LA17_1==99||LA17_1==101||(LA17_1>=105 && LA17_1<=113)||LA17_1==115||LA17_1==126) ) {
+                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==96||(LA17_1>=100 && LA17_1<=101)||LA17_1==104||LA17_1==106||(LA17_1>=110 && LA17_1<=118)||LA17_1==120||LA17_1==131) ) {
                     alt17=2;
                 }
                 else {
@@ -11558,16 +11846,16 @@
             }
             switch (alt17) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3247:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3328:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3247:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:3248:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalPerspectiveDsl.g:3328:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3329:3: ( rule__OpOther__Group_5_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3249:3: ( rule__OpOther__Group_5_1_0__0 )
-                    // InternalPerspectiveDsl.g:3249:4: rule__OpOther__Group_5_1_0__0
+                    // InternalPerspectiveDsl.g:3330:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalPerspectiveDsl.g:3330:4: rule__OpOther__Group_5_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5_1_0__0();
@@ -11587,10 +11875,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3253:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3334:2: ( '>' )
                     {
-                    // InternalPerspectiveDsl.g:3253:2: ( '>' )
-                    // InternalPerspectiveDsl.g:3254:3: '>'
+                    // InternalPerspectiveDsl.g:3334:2: ( '>' )
+                    // InternalPerspectiveDsl.g:3335:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
@@ -11623,23 +11911,23 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_6_1"
-    // InternalPerspectiveDsl.g:3263:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
+    // InternalPerspectiveDsl.g:3344: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:3267:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            // InternalPerspectiveDsl.g:3348: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 ( (synpred50_InternalPerspectiveDsl()) ) {
+                if ( (synpred51_InternalPerspectiveDsl()) ) {
                     alt18=1;
                 }
-                else if ( (synpred51_InternalPerspectiveDsl()) ) {
+                else if ( (synpred52_InternalPerspectiveDsl()) ) {
                     alt18=2;
                 }
                 else {
@@ -11662,16 +11950,16 @@
             }
             switch (alt18) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3268:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3349:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3268:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:3269:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalPerspectiveDsl.g:3349:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3350:3: ( rule__OpOther__Group_6_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3270:3: ( rule__OpOther__Group_6_1_0__0 )
-                    // InternalPerspectiveDsl.g:3270:4: rule__OpOther__Group_6_1_0__0
+                    // InternalPerspectiveDsl.g:3351:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalPerspectiveDsl.g:3351:4: rule__OpOther__Group_6_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6_1_0__0();
@@ -11691,10 +11979,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3274:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3355:2: ( '<' )
                     {
-                    // InternalPerspectiveDsl.g:3274:2: ( '<' )
-                    // InternalPerspectiveDsl.g:3275:3: '<'
+                    // InternalPerspectiveDsl.g:3355:2: ( '<' )
+                    // InternalPerspectiveDsl.g:3356:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
@@ -11710,10 +11998,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3280:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3361:2: ( '=>' )
                     {
-                    // InternalPerspectiveDsl.g:3280:2: ( '=>' )
-                    // InternalPerspectiveDsl.g:3281:3: '=>'
+                    // InternalPerspectiveDsl.g:3361:2: ( '=>' )
+                    // InternalPerspectiveDsl.g:3362:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
@@ -11746,13 +12034,13 @@
 
 
     // $ANTLR start "rule__OpAdd__Alternatives"
-    // InternalPerspectiveDsl.g:3290:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    // InternalPerspectiveDsl.g:3371:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
     public final void rule__OpAdd__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3294:1: ( ( '+' ) | ( '-' ) )
+            // InternalPerspectiveDsl.g:3375:1: ( ( '+' ) | ( '-' ) )
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -11771,10 +12059,10 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3295:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3376:2: ( '+' )
                     {
-                    // InternalPerspectiveDsl.g:3295:2: ( '+' )
-                    // InternalPerspectiveDsl.g:3296:3: '+'
+                    // InternalPerspectiveDsl.g:3376:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3377:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
@@ -11790,10 +12078,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3301:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3382:2: ( '-' )
                     {
-                    // InternalPerspectiveDsl.g:3301:2: ( '-' )
-                    // InternalPerspectiveDsl.g:3302:3: '-'
+                    // InternalPerspectiveDsl.g:3382:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3383:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
@@ -11826,13 +12114,13 @@
 
 
     // $ANTLR start "rule__OpMulti__Alternatives"
-    // InternalPerspectiveDsl.g:3311:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    // InternalPerspectiveDsl.g:3392:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
     public final void rule__OpMulti__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3315:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            // InternalPerspectiveDsl.g:3396:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
             int alt20=4;
             switch ( input.LA(1) ) {
             case 36:
@@ -11865,10 +12153,10 @@
 
             switch (alt20) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3316:2: ( '*' )
+                    // InternalPerspectiveDsl.g:3397:2: ( '*' )
                     {
-                    // InternalPerspectiveDsl.g:3316:2: ( '*' )
-                    // InternalPerspectiveDsl.g:3317:3: '*'
+                    // InternalPerspectiveDsl.g:3397:2: ( '*' )
+                    // InternalPerspectiveDsl.g:3398:3: '*'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
@@ -11884,10 +12172,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3322:2: ( '**' )
+                    // InternalPerspectiveDsl.g:3403:2: ( '**' )
                     {
-                    // InternalPerspectiveDsl.g:3322:2: ( '**' )
-                    // InternalPerspectiveDsl.g:3323:3: '**'
+                    // InternalPerspectiveDsl.g:3403:2: ( '**' )
+                    // InternalPerspectiveDsl.g:3404:3: '**'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
@@ -11903,10 +12191,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3328:2: ( '/' )
+                    // InternalPerspectiveDsl.g:3409:2: ( '/' )
                     {
-                    // InternalPerspectiveDsl.g:3328:2: ( '/' )
-                    // InternalPerspectiveDsl.g:3329:3: '/'
+                    // InternalPerspectiveDsl.g:3409:2: ( '/' )
+                    // InternalPerspectiveDsl.g:3410:3: '/'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
@@ -11922,10 +12210,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3334:2: ( '%' )
+                    // InternalPerspectiveDsl.g:3415:2: ( '%' )
                     {
-                    // InternalPerspectiveDsl.g:3334:2: ( '%' )
-                    // InternalPerspectiveDsl.g:3335:3: '%'
+                    // InternalPerspectiveDsl.g:3415:2: ( '%' )
+                    // InternalPerspectiveDsl.g:3416:3: '%'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
@@ -11958,20 +12246,20 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Alternatives"
-    // InternalPerspectiveDsl.g:3344:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    // InternalPerspectiveDsl.g:3425:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
     public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3348:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            // InternalPerspectiveDsl.g:3429: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==91||(LA21_0>=95 && LA21_0<=96)||LA21_0==99||LA21_0==101||(LA21_0>=105 && LA21_0<=113)||LA21_0==115||LA21_0==126) ) {
+            else if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_DECIMAL)||LA21_0==27||(LA21_0>=45 && LA21_0<=50)||LA21_0==54||LA21_0==96||(LA21_0>=100 && LA21_0<=101)||LA21_0==104||LA21_0==106||(LA21_0>=110 && LA21_0<=118)||LA21_0==120||LA21_0==131) ) {
                 alt21=2;
             }
             else {
@@ -11983,16 +12271,16 @@
             }
             switch (alt21) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3349:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3430:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3349:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:3350:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3430:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:3431:3: ( rule__XUnaryOperation__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3351:3: ( rule__XUnaryOperation__Group_0__0 )
-                    // InternalPerspectiveDsl.g:3351:4: rule__XUnaryOperation__Group_0__0
+                    // InternalPerspectiveDsl.g:3432:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalPerspectiveDsl.g:3432:4: rule__XUnaryOperation__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XUnaryOperation__Group_0__0();
@@ -12012,10 +12300,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3355:2: ( ruleXCastedExpression )
+                    // InternalPerspectiveDsl.g:3436:2: ( ruleXCastedExpression )
                     {
-                    // InternalPerspectiveDsl.g:3355:2: ( ruleXCastedExpression )
-                    // InternalPerspectiveDsl.g:3356:3: ruleXCastedExpression
+                    // InternalPerspectiveDsl.g:3436:2: ( ruleXCastedExpression )
+                    // InternalPerspectiveDsl.g:3437:3: ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
@@ -12052,13 +12340,13 @@
 
 
     // $ANTLR start "rule__OpUnary__Alternatives"
-    // InternalPerspectiveDsl.g:3365:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    // InternalPerspectiveDsl.g:3446:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
     public final void rule__OpUnary__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3369:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            // InternalPerspectiveDsl.g:3450:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
             int alt22=3;
             switch ( input.LA(1) ) {
             case 40:
@@ -12086,10 +12374,10 @@
 
             switch (alt22) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3370:2: ( '!' )
+                    // InternalPerspectiveDsl.g:3451:2: ( '!' )
                     {
-                    // InternalPerspectiveDsl.g:3370:2: ( '!' )
-                    // InternalPerspectiveDsl.g:3371:3: '!'
+                    // InternalPerspectiveDsl.g:3451:2: ( '!' )
+                    // InternalPerspectiveDsl.g:3452:3: '!'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
@@ -12105,10 +12393,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3376:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3457:2: ( '-' )
                     {
-                    // InternalPerspectiveDsl.g:3376:2: ( '-' )
-                    // InternalPerspectiveDsl.g:3377:3: '-'
+                    // InternalPerspectiveDsl.g:3457:2: ( '-' )
+                    // InternalPerspectiveDsl.g:3458:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
@@ -12124,10 +12412,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3382:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3463:2: ( '+' )
                     {
-                    // InternalPerspectiveDsl.g:3382:2: ( '+' )
-                    // InternalPerspectiveDsl.g:3383:3: '+'
+                    // InternalPerspectiveDsl.g:3463:2: ( '+' )
+                    // InternalPerspectiveDsl.g:3464:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
@@ -12160,13 +12448,13 @@
 
 
     // $ANTLR start "rule__OpPostfix__Alternatives"
-    // InternalPerspectiveDsl.g:3392:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    // InternalPerspectiveDsl.g:3473:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
     public final void rule__OpPostfix__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3396:1: ( ( '++' ) | ( '--' ) )
+            // InternalPerspectiveDsl.g:3477:1: ( ( '++' ) | ( '--' ) )
             int alt23=2;
             int LA23_0 = input.LA(1);
 
@@ -12185,10 +12473,10 @@
             }
             switch (alt23) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3397:2: ( '++' )
+                    // InternalPerspectiveDsl.g:3478:2: ( '++' )
                     {
-                    // InternalPerspectiveDsl.g:3397:2: ( '++' )
-                    // InternalPerspectiveDsl.g:3398:3: '++'
+                    // InternalPerspectiveDsl.g:3478:2: ( '++' )
+                    // InternalPerspectiveDsl.g:3479:3: '++'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
@@ -12204,10 +12492,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3403:2: ( '--' )
+                    // InternalPerspectiveDsl.g:3484:2: ( '--' )
                     {
-                    // InternalPerspectiveDsl.g:3403:2: ( '--' )
-                    // InternalPerspectiveDsl.g:3404:3: '--'
+                    // InternalPerspectiveDsl.g:3484:2: ( '--' )
+                    // InternalPerspectiveDsl.g:3485:3: '--'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
@@ -12240,27 +12528,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1"
-    // InternalPerspectiveDsl.g:3413:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3494: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:3417:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3498: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:3418:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3499:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3418:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
-                    // InternalPerspectiveDsl.g:3419:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3499:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalPerspectiveDsl.g:3500:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3420:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
-                    // InternalPerspectiveDsl.g:3420:4: rule__XMemberFeatureCall__Group_1_0__0
+                    // InternalPerspectiveDsl.g:3501:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalPerspectiveDsl.g:3501:4: rule__XMemberFeatureCall__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_0__0();
@@ -12280,16 +12568,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3424:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3505:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3424:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3425:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3505:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3506:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3426:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
-                    // InternalPerspectiveDsl.g:3426:4: rule__XMemberFeatureCall__Group_1_1__0
+                    // InternalPerspectiveDsl.g:3507:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalPerspectiveDsl.g:3507:4: rule__XMemberFeatureCall__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1__0();
@@ -12326,20 +12614,20 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1"
-    // InternalPerspectiveDsl.g:3434:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
+    // InternalPerspectiveDsl.g:3515: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:3438:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:3519: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==122) ) {
+            else if ( (LA25_0==127) ) {
                 alt25=2;
             }
             else {
@@ -12351,10 +12639,10 @@
             }
             switch (alt25) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3439:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3520:2: ( '.' )
                     {
-                    // InternalPerspectiveDsl.g:3439:2: ( '.' )
-                    // InternalPerspectiveDsl.g:3440:3: '.'
+                    // InternalPerspectiveDsl.g:3520:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3521:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
@@ -12370,16 +12658,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3445:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3526:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3445:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
-                    // InternalPerspectiveDsl.g:3446:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3526:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3527: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:3447:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
-                    // InternalPerspectiveDsl.g:3447:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
+                    // InternalPerspectiveDsl.g:3528:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3528:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1();
@@ -12416,13 +12704,13 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1"
-    // InternalPerspectiveDsl.g:3455: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 ) ) );
+    // InternalPerspectiveDsl.g:3536: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:3459:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
+            // InternalPerspectiveDsl.g:3540: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:
@@ -12430,12 +12718,12 @@
                 alt26=1;
                 }
                 break;
-            case 123:
+            case 128:
                 {
                 alt26=2;
                 }
                 break;
-            case 122:
+            case 127:
                 {
                 alt26=3;
                 }
@@ -12450,10 +12738,10 @@
 
             switch (alt26) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3460:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3541:2: ( '.' )
                     {
-                    // InternalPerspectiveDsl.g:3460:2: ( '.' )
-                    // InternalPerspectiveDsl.g:3461:3: '.'
+                    // InternalPerspectiveDsl.g:3541:2: ( '.' )
+                    // InternalPerspectiveDsl.g:3542:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); 
@@ -12469,16 +12757,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3466:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3547:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3466:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
-                    // InternalPerspectiveDsl.g:3467:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3547:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalPerspectiveDsl.g:3548: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:3468:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
-                    // InternalPerspectiveDsl.g:3468:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
+                    // InternalPerspectiveDsl.g:3549:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalPerspectiveDsl.g:3549:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1();
@@ -12498,16 +12786,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3472:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalPerspectiveDsl.g:3553:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
                     {
-                    // InternalPerspectiveDsl.g:3472:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
-                    // InternalPerspectiveDsl.g:3473:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalPerspectiveDsl.g:3553:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalPerspectiveDsl.g:3554: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:3474:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
-                    // InternalPerspectiveDsl.g:3474:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
+                    // InternalPerspectiveDsl.g:3555:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalPerspectiveDsl.g:3555:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2();
@@ -12544,27 +12832,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_3_1"
-    // InternalPerspectiveDsl.g:3482: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 ) ) );
+    // InternalPerspectiveDsl.g:3563: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:3486:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3567: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:3487:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3568:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3487:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
-                    // InternalPerspectiveDsl.g:3488:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalPerspectiveDsl.g:3568:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3569:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3489:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
-                    // InternalPerspectiveDsl.g:3489:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+                    // InternalPerspectiveDsl.g:3570:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalPerspectiveDsl.g:3570:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
@@ -12584,16 +12872,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3493:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3574:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3493:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3494:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3574:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3575: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:3495:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
-                    // InternalPerspectiveDsl.g:3495:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
+                    // InternalPerspectiveDsl.g:3576:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3576:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_3_1_1__0();
@@ -12630,21 +12918,21 @@
 
 
     // $ANTLR start "rule__XPrimaryExpression__Alternatives"
-    // InternalPerspectiveDsl.g:3503:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
+    // InternalPerspectiveDsl.g:3584: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:3507:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
+            // InternalPerspectiveDsl.g:3588: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:3508:2: ( ruleXConstructorCall )
+                    // InternalPerspectiveDsl.g:3589:2: ( ruleXConstructorCall )
                     {
-                    // InternalPerspectiveDsl.g:3508:2: ( ruleXConstructorCall )
-                    // InternalPerspectiveDsl.g:3509:3: ruleXConstructorCall
+                    // InternalPerspectiveDsl.g:3589:2: ( ruleXConstructorCall )
+                    // InternalPerspectiveDsl.g:3590:3: ruleXConstructorCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
@@ -12664,10 +12952,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3514:2: ( ruleXBlockExpression )
+                    // InternalPerspectiveDsl.g:3595:2: ( ruleXBlockExpression )
                     {
-                    // InternalPerspectiveDsl.g:3514:2: ( ruleXBlockExpression )
-                    // InternalPerspectiveDsl.g:3515:3: ruleXBlockExpression
+                    // InternalPerspectiveDsl.g:3595:2: ( ruleXBlockExpression )
+                    // InternalPerspectiveDsl.g:3596:3: ruleXBlockExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
@@ -12687,10 +12975,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3520:2: ( ruleXSwitchExpression )
+                    // InternalPerspectiveDsl.g:3601:2: ( ruleXSwitchExpression )
                     {
-                    // InternalPerspectiveDsl.g:3520:2: ( ruleXSwitchExpression )
-                    // InternalPerspectiveDsl.g:3521:3: ruleXSwitchExpression
+                    // InternalPerspectiveDsl.g:3601:2: ( ruleXSwitchExpression )
+                    // InternalPerspectiveDsl.g:3602:3: ruleXSwitchExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
@@ -12710,16 +12998,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3526:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalPerspectiveDsl.g:3607:2: ( ( ruleXSynchronizedExpression ) )
                     {
-                    // InternalPerspectiveDsl.g:3526:2: ( ( ruleXSynchronizedExpression ) )
-                    // InternalPerspectiveDsl.g:3527:3: ( ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:3607:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalPerspectiveDsl.g:3608:3: ( ruleXSynchronizedExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
                     }
-                    // InternalPerspectiveDsl.g:3528:3: ( ruleXSynchronizedExpression )
-                    // InternalPerspectiveDsl.g:3528:4: ruleXSynchronizedExpression
+                    // InternalPerspectiveDsl.g:3609:3: ( ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:3609:4: ruleXSynchronizedExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXSynchronizedExpression();
@@ -12739,10 +13027,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3532:2: ( ruleXFeatureCall )
+                    // InternalPerspectiveDsl.g:3613:2: ( ruleXFeatureCall )
                     {
-                    // InternalPerspectiveDsl.g:3532:2: ( ruleXFeatureCall )
-                    // InternalPerspectiveDsl.g:3533:3: ruleXFeatureCall
+                    // InternalPerspectiveDsl.g:3613:2: ( ruleXFeatureCall )
+                    // InternalPerspectiveDsl.g:3614:3: ruleXFeatureCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
@@ -12762,10 +13050,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3538:2: ( ruleXLiteral )
+                    // InternalPerspectiveDsl.g:3619:2: ( ruleXLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3538:2: ( ruleXLiteral )
-                    // InternalPerspectiveDsl.g:3539:3: ruleXLiteral
+                    // InternalPerspectiveDsl.g:3619:2: ( ruleXLiteral )
+                    // InternalPerspectiveDsl.g:3620:3: ruleXLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
@@ -12785,10 +13073,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3544:2: ( ruleXIfExpression )
+                    // InternalPerspectiveDsl.g:3625:2: ( ruleXIfExpression )
                     {
-                    // InternalPerspectiveDsl.g:3544:2: ( ruleXIfExpression )
-                    // InternalPerspectiveDsl.g:3545:3: ruleXIfExpression
+                    // InternalPerspectiveDsl.g:3625:2: ( ruleXIfExpression )
+                    // InternalPerspectiveDsl.g:3626:3: ruleXIfExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
@@ -12808,16 +13096,16 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:3550:2: ( ( ruleXForLoopExpression ) )
+                    // InternalPerspectiveDsl.g:3631:2: ( ( ruleXForLoopExpression ) )
                     {
-                    // InternalPerspectiveDsl.g:3550:2: ( ( ruleXForLoopExpression ) )
-                    // InternalPerspectiveDsl.g:3551:3: ( ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:3631:2: ( ( ruleXForLoopExpression ) )
+                    // InternalPerspectiveDsl.g:3632:3: ( ruleXForLoopExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
                     }
-                    // InternalPerspectiveDsl.g:3552:3: ( ruleXForLoopExpression )
-                    // InternalPerspectiveDsl.g:3552:4: ruleXForLoopExpression
+                    // InternalPerspectiveDsl.g:3633:3: ( ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:3633:4: ruleXForLoopExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXForLoopExpression();
@@ -12837,10 +13125,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:3556:2: ( ruleXBasicForLoopExpression )
+                    // InternalPerspectiveDsl.g:3637:2: ( ruleXBasicForLoopExpression )
                     {
-                    // InternalPerspectiveDsl.g:3556:2: ( ruleXBasicForLoopExpression )
-                    // InternalPerspectiveDsl.g:3557:3: ruleXBasicForLoopExpression
+                    // InternalPerspectiveDsl.g:3637:2: ( ruleXBasicForLoopExpression )
+                    // InternalPerspectiveDsl.g:3638:3: ruleXBasicForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
@@ -12860,10 +13148,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalPerspectiveDsl.g:3562:2: ( ruleXWhileExpression )
+                    // InternalPerspectiveDsl.g:3643:2: ( ruleXWhileExpression )
                     {
-                    // InternalPerspectiveDsl.g:3562:2: ( ruleXWhileExpression )
-                    // InternalPerspectiveDsl.g:3563:3: ruleXWhileExpression
+                    // InternalPerspectiveDsl.g:3643:2: ( ruleXWhileExpression )
+                    // InternalPerspectiveDsl.g:3644:3: ruleXWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
@@ -12883,10 +13171,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalPerspectiveDsl.g:3568:2: ( ruleXDoWhileExpression )
+                    // InternalPerspectiveDsl.g:3649:2: ( ruleXDoWhileExpression )
                     {
-                    // InternalPerspectiveDsl.g:3568:2: ( ruleXDoWhileExpression )
-                    // InternalPerspectiveDsl.g:3569:3: ruleXDoWhileExpression
+                    // InternalPerspectiveDsl.g:3649:2: ( ruleXDoWhileExpression )
+                    // InternalPerspectiveDsl.g:3650:3: ruleXDoWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
@@ -12906,10 +13194,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalPerspectiveDsl.g:3574:2: ( ruleXThrowExpression )
+                    // InternalPerspectiveDsl.g:3655:2: ( ruleXThrowExpression )
                     {
-                    // InternalPerspectiveDsl.g:3574:2: ( ruleXThrowExpression )
-                    // InternalPerspectiveDsl.g:3575:3: ruleXThrowExpression
+                    // InternalPerspectiveDsl.g:3655:2: ( ruleXThrowExpression )
+                    // InternalPerspectiveDsl.g:3656:3: ruleXThrowExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
@@ -12929,10 +13217,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalPerspectiveDsl.g:3580:2: ( ruleXReturnExpression )
+                    // InternalPerspectiveDsl.g:3661:2: ( ruleXReturnExpression )
                     {
-                    // InternalPerspectiveDsl.g:3580:2: ( ruleXReturnExpression )
-                    // InternalPerspectiveDsl.g:3581:3: ruleXReturnExpression
+                    // InternalPerspectiveDsl.g:3661:2: ( ruleXReturnExpression )
+                    // InternalPerspectiveDsl.g:3662:3: ruleXReturnExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
@@ -12952,10 +13240,10 @@
                     }
                     break;
                 case 14 :
-                    // InternalPerspectiveDsl.g:3586:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalPerspectiveDsl.g:3667:2: ( ruleXTryCatchFinallyExpression )
                     {
-                    // InternalPerspectiveDsl.g:3586:2: ( ruleXTryCatchFinallyExpression )
-                    // InternalPerspectiveDsl.g:3587:3: ruleXTryCatchFinallyExpression
+                    // InternalPerspectiveDsl.g:3667:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalPerspectiveDsl.g:3668:3: ruleXTryCatchFinallyExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
@@ -12975,10 +13263,10 @@
                     }
                     break;
                 case 15 :
-                    // InternalPerspectiveDsl.g:3592:2: ( ruleXParenthesizedExpression )
+                    // InternalPerspectiveDsl.g:3673:2: ( ruleXParenthesizedExpression )
                     {
-                    // InternalPerspectiveDsl.g:3592:2: ( ruleXParenthesizedExpression )
-                    // InternalPerspectiveDsl.g:3593:3: ruleXParenthesizedExpression
+                    // InternalPerspectiveDsl.g:3673:2: ( ruleXParenthesizedExpression )
+                    // InternalPerspectiveDsl.g:3674:3: ruleXParenthesizedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
@@ -13015,27 +13303,27 @@
 
 
     // $ANTLR start "rule__XLiteral__Alternatives"
-    // InternalPerspectiveDsl.g:3602:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
+    // InternalPerspectiveDsl.g:3683: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:3606:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
+            // InternalPerspectiveDsl.g:3687:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
             int alt29=7;
             switch ( input.LA(1) ) {
-            case 95:
+            case 100:
                 {
                 alt29=1;
                 }
                 break;
-            case 96:
+            case 101:
                 {
                 alt29=2;
                 }
                 break;
             case 50:
-            case 126:
+            case 131:
                 {
                 alt29=3;
                 }
@@ -13047,7 +13335,7 @@
                 alt29=4;
                 }
                 break;
-            case 109:
+            case 114:
                 {
                 alt29=5;
                 }
@@ -13057,7 +13345,7 @@
                 alt29=6;
                 }
                 break;
-            case 110:
+            case 115:
                 {
                 alt29=7;
                 }
@@ -13072,10 +13360,10 @@
 
             switch (alt29) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3607:2: ( ruleXCollectionLiteral )
+                    // InternalPerspectiveDsl.g:3688:2: ( ruleXCollectionLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3607:2: ( ruleXCollectionLiteral )
-                    // InternalPerspectiveDsl.g:3608:3: ruleXCollectionLiteral
+                    // InternalPerspectiveDsl.g:3688:2: ( ruleXCollectionLiteral )
+                    // InternalPerspectiveDsl.g:3689:3: ruleXCollectionLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
@@ -13095,16 +13383,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3613:2: ( ( ruleXClosure ) )
+                    // InternalPerspectiveDsl.g:3694:2: ( ( ruleXClosure ) )
                     {
-                    // InternalPerspectiveDsl.g:3613:2: ( ( ruleXClosure ) )
-                    // InternalPerspectiveDsl.g:3614:3: ( ruleXClosure )
+                    // InternalPerspectiveDsl.g:3694:2: ( ( ruleXClosure ) )
+                    // InternalPerspectiveDsl.g:3695:3: ( ruleXClosure )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3615:3: ( ruleXClosure )
-                    // InternalPerspectiveDsl.g:3615:4: ruleXClosure
+                    // InternalPerspectiveDsl.g:3696:3: ( ruleXClosure )
+                    // InternalPerspectiveDsl.g:3696:4: ruleXClosure
                     {
                     pushFollow(FOLLOW_2);
                     ruleXClosure();
@@ -13124,10 +13412,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3619:2: ( ruleXBooleanLiteral )
+                    // InternalPerspectiveDsl.g:3700:2: ( ruleXBooleanLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3619:2: ( ruleXBooleanLiteral )
-                    // InternalPerspectiveDsl.g:3620:3: ruleXBooleanLiteral
+                    // InternalPerspectiveDsl.g:3700:2: ( ruleXBooleanLiteral )
+                    // InternalPerspectiveDsl.g:3701:3: ruleXBooleanLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
@@ -13147,10 +13435,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3625:2: ( ruleXNumberLiteral )
+                    // InternalPerspectiveDsl.g:3706:2: ( ruleXNumberLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3625:2: ( ruleXNumberLiteral )
-                    // InternalPerspectiveDsl.g:3626:3: ruleXNumberLiteral
+                    // InternalPerspectiveDsl.g:3706:2: ( ruleXNumberLiteral )
+                    // InternalPerspectiveDsl.g:3707:3: ruleXNumberLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
@@ -13170,10 +13458,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3631:2: ( ruleXNullLiteral )
+                    // InternalPerspectiveDsl.g:3712:2: ( ruleXNullLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3631:2: ( ruleXNullLiteral )
-                    // InternalPerspectiveDsl.g:3632:3: ruleXNullLiteral
+                    // InternalPerspectiveDsl.g:3712:2: ( ruleXNullLiteral )
+                    // InternalPerspectiveDsl.g:3713:3: ruleXNullLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
@@ -13193,10 +13481,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3637:2: ( ruleXStringLiteral )
+                    // InternalPerspectiveDsl.g:3718:2: ( ruleXStringLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3637:2: ( ruleXStringLiteral )
-                    // InternalPerspectiveDsl.g:3638:3: ruleXStringLiteral
+                    // InternalPerspectiveDsl.g:3718:2: ( ruleXStringLiteral )
+                    // InternalPerspectiveDsl.g:3719:3: ruleXStringLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
@@ -13216,10 +13504,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3643:2: ( ruleXTypeLiteral )
+                    // InternalPerspectiveDsl.g:3724:2: ( ruleXTypeLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3643:2: ( ruleXTypeLiteral )
-                    // InternalPerspectiveDsl.g:3644:3: ruleXTypeLiteral
+                    // InternalPerspectiveDsl.g:3724:2: ( ruleXTypeLiteral )
+                    // InternalPerspectiveDsl.g:3725:3: ruleXTypeLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
@@ -13256,23 +13544,23 @@
 
 
     // $ANTLR start "rule__XCollectionLiteral__Alternatives"
-    // InternalPerspectiveDsl.g:3653:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
+    // InternalPerspectiveDsl.g:3734:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
     public final void rule__XCollectionLiteral__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3657:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
+            // InternalPerspectiveDsl.g:3738:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
             int alt30=2;
             int LA30_0 = input.LA(1);
 
-            if ( (LA30_0==95) ) {
+            if ( (LA30_0==100) ) {
                 int LA30_1 = input.LA(2);
 
                 if ( (LA30_1==54) ) {
                     alt30=1;
                 }
-                else if ( (LA30_1==96) ) {
+                else if ( (LA30_1==101) ) {
                     alt30=2;
                 }
                 else {
@@ -13292,10 +13580,10 @@
             }
             switch (alt30) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3658:2: ( ruleXSetLiteral )
+                    // InternalPerspectiveDsl.g:3739:2: ( ruleXSetLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3658:2: ( ruleXSetLiteral )
-                    // InternalPerspectiveDsl.g:3659:3: ruleXSetLiteral
+                    // InternalPerspectiveDsl.g:3739:2: ( ruleXSetLiteral )
+                    // InternalPerspectiveDsl.g:3740:3: ruleXSetLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
@@ -13315,10 +13603,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3664:2: ( ruleXListLiteral )
+                    // InternalPerspectiveDsl.g:3745:2: ( ruleXListLiteral )
                     {
-                    // InternalPerspectiveDsl.g:3664:2: ( ruleXListLiteral )
-                    // InternalPerspectiveDsl.g:3665:3: ruleXListLiteral
+                    // InternalPerspectiveDsl.g:3745:2: ( ruleXListLiteral )
+                    // InternalPerspectiveDsl.g:3746:3: ruleXListLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
@@ -13355,27 +13643,27 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Alternatives_2"
-    // InternalPerspectiveDsl.g:3674:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3755: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:3678:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3759: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:3679:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3760:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3679:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
-                    // InternalPerspectiveDsl.g:3680:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3760:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3761:3: ( rule__XSwitchExpression__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3681:3: ( rule__XSwitchExpression__Group_2_0__0 )
-                    // InternalPerspectiveDsl.g:3681:4: rule__XSwitchExpression__Group_2_0__0
+                    // InternalPerspectiveDsl.g:3762:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3762:4: rule__XSwitchExpression__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_0__0();
@@ -13395,16 +13683,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3685:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:3766:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3685:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
-                    // InternalPerspectiveDsl.g:3686:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:3766:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:3767:3: ( rule__XSwitchExpression__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3687:3: ( rule__XSwitchExpression__Group_2_1__0 )
-                    // InternalPerspectiveDsl.g:3687:4: rule__XSwitchExpression__Group_2_1__0
+                    // InternalPerspectiveDsl.g:3768:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:3768:4: rule__XSwitchExpression__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_1__0();
@@ -13441,20 +13729,20 @@
 
 
     // $ANTLR start "rule__XCasePart__Alternatives_3"
-    // InternalPerspectiveDsl.g:3695:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
+    // InternalPerspectiveDsl.g:3776: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:3699:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:3780:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
             int alt32=2;
             int LA32_0 = input.LA(1);
 
-            if ( (LA32_0==102) ) {
+            if ( (LA32_0==107) ) {
                 alt32=1;
             }
-            else if ( (LA32_0==93) ) {
+            else if ( (LA32_0==98) ) {
                 alt32=2;
             }
             else {
@@ -13466,16 +13754,16 @@
             }
             switch (alt32) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3700:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3781:2: ( ( rule__XCasePart__Group_3_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3700:2: ( ( rule__XCasePart__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:3701:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3781:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3782:3: ( rule__XCasePart__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3702:3: ( rule__XCasePart__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:3702:4: rule__XCasePart__Group_3_0__0
+                    // InternalPerspectiveDsl.g:3783:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3783:4: rule__XCasePart__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__Group_3_0__0();
@@ -13495,16 +13783,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3706:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalPerspectiveDsl.g:3787:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3706:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
-                    // InternalPerspectiveDsl.g:3707:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalPerspectiveDsl.g:3787:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalPerspectiveDsl.g:3788:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3708:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
-                    // InternalPerspectiveDsl.g:3708:4: rule__XCasePart__FallThroughAssignment_3_1
+                    // InternalPerspectiveDsl.g:3789:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalPerspectiveDsl.g:3789:4: rule__XCasePart__FallThroughAssignment_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__FallThroughAssignment_3_1();
@@ -13541,20 +13829,20 @@
 
 
     // $ANTLR start "rule__XExpressionOrVarDeclaration__Alternatives"
-    // InternalPerspectiveDsl.g:3716:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
+    // InternalPerspectiveDsl.g:3797:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
     public final void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3720:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:3801:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
             int alt33=2;
             int LA33_0 = input.LA(1);
 
-            if ( (LA33_0==44||LA33_0==125) ) {
+            if ( (LA33_0==44||LA33_0==130) ) {
                 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==91||(LA33_0>=95 && LA33_0<=96)||LA33_0==99||LA33_0==101||(LA33_0>=105 && LA33_0<=113)||LA33_0==115||LA33_0==126) ) {
+            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==96||(LA33_0>=100 && LA33_0<=101)||LA33_0==104||LA33_0==106||(LA33_0>=110 && LA33_0<=118)||LA33_0==120||LA33_0==131) ) {
                 alt33=2;
             }
             else {
@@ -13566,10 +13854,10 @@
             }
             switch (alt33) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3721:2: ( ruleXVariableDeclaration )
+                    // InternalPerspectiveDsl.g:3802:2: ( ruleXVariableDeclaration )
                     {
-                    // InternalPerspectiveDsl.g:3721:2: ( ruleXVariableDeclaration )
-                    // InternalPerspectiveDsl.g:3722:3: ruleXVariableDeclaration
+                    // InternalPerspectiveDsl.g:3802:2: ( ruleXVariableDeclaration )
+                    // InternalPerspectiveDsl.g:3803:3: ruleXVariableDeclaration
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
@@ -13589,10 +13877,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3727:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:3808:2: ( ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:3727:2: ( ruleXExpression )
-                    // InternalPerspectiveDsl.g:3728:3: ruleXExpression
+                    // InternalPerspectiveDsl.g:3808:2: ( ruleXExpression )
+                    // InternalPerspectiveDsl.g:3809:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
@@ -13629,17 +13917,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_1"
-    // InternalPerspectiveDsl.g:3737:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
+    // InternalPerspectiveDsl.g:3818: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:3741:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
+            // InternalPerspectiveDsl.g:3822:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
             int alt34=2;
             int LA34_0 = input.LA(1);
 
-            if ( (LA34_0==125) ) {
+            if ( (LA34_0==130) ) {
                 alt34=1;
             }
             else if ( (LA34_0==44) ) {
@@ -13654,16 +13942,16 @@
             }
             switch (alt34) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3742:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalPerspectiveDsl.g:3823:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3742:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
-                    // InternalPerspectiveDsl.g:3743:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalPerspectiveDsl.g:3823:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalPerspectiveDsl.g:3824:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3744:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
-                    // InternalPerspectiveDsl.g:3744:4: rule__XVariableDeclaration__WriteableAssignment_1_0
+                    // InternalPerspectiveDsl.g:3825:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalPerspectiveDsl.g:3825:4: rule__XVariableDeclaration__WriteableAssignment_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__WriteableAssignment_1_0();
@@ -13683,10 +13971,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3748:2: ( 'val' )
+                    // InternalPerspectiveDsl.g:3829:2: ( 'val' )
                     {
-                    // InternalPerspectiveDsl.g:3748:2: ( 'val' )
-                    // InternalPerspectiveDsl.g:3749:3: 'val'
+                    // InternalPerspectiveDsl.g:3829:2: ( 'val' )
+                    // InternalPerspectiveDsl.g:3830:3: 'val'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); 
@@ -13719,20 +14007,20 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_2"
-    // InternalPerspectiveDsl.g:3758:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
+    // InternalPerspectiveDsl.g:3839: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:3762:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
+            // InternalPerspectiveDsl.g:3843: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 ( (synpred90_InternalPerspectiveDsl()) ) {
+                if ( (synpred91_InternalPerspectiveDsl()) ) {
                     alt35=1;
                 }
                 else if ( (true) ) {
@@ -13746,7 +14034,7 @@
                     throw nvae;
                 }
             }
-            else if ( (LA35_0==31||LA35_0==91) ) {
+            else if ( (LA35_0==31||LA35_0==96) ) {
                 alt35=1;
             }
             else {
@@ -13758,16 +14046,16 @@
             }
             switch (alt35) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3763:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3844:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3763:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
-                    // InternalPerspectiveDsl.g:3764:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3844:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:3845:3: ( rule__XVariableDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3765:3: ( rule__XVariableDeclaration__Group_2_0__0 )
-                    // InternalPerspectiveDsl.g:3765:4: rule__XVariableDeclaration__Group_2_0__0
+                    // InternalPerspectiveDsl.g:3846:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:3846:4: rule__XVariableDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__Group_2_0__0();
@@ -13787,16 +14075,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3769:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:3850:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3769:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
-                    // InternalPerspectiveDsl.g:3770:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:3850:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalPerspectiveDsl.g:3851:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3771:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
-                    // InternalPerspectiveDsl.g:3771:4: rule__XVariableDeclaration__NameAssignment_2_1
+                    // InternalPerspectiveDsl.g:3852:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalPerspectiveDsl.g:3852:4: rule__XVariableDeclaration__NameAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__NameAssignment_2_1();
@@ -13833,27 +14121,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Alternatives_3_1"
-    // InternalPerspectiveDsl.g:3779:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3860: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:3783:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3864: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:3784:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3865:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3784:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
-                    // InternalPerspectiveDsl.g:3785:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalPerspectiveDsl.g:3865:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalPerspectiveDsl.g:3866:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3786:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
-                    // InternalPerspectiveDsl.g:3786:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+                    // InternalPerspectiveDsl.g:3867:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalPerspectiveDsl.g:3867:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
@@ -13873,16 +14161,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3790:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3871:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3790:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3791:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3871:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3872:3: ( rule__XFeatureCall__Group_3_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3792:3: ( rule__XFeatureCall__Group_3_1_1__0 )
-                    // InternalPerspectiveDsl.g:3792:4: rule__XFeatureCall__Group_3_1_1__0
+                    // InternalPerspectiveDsl.g:3873:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalPerspectiveDsl.g:3873:4: rule__XFeatureCall__Group_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_3_1_1__0();
@@ -13919,13 +14207,13 @@
 
 
     // $ANTLR start "rule__FeatureCallID__Alternatives"
-    // InternalPerspectiveDsl.g:3800:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
+    // InternalPerspectiveDsl.g:3881:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
     public final void rule__FeatureCallID__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3804:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
+            // InternalPerspectiveDsl.g:3885:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
             int alt37=5;
             switch ( input.LA(1) ) {
             case RULE_ID:
@@ -13963,10 +14251,10 @@
 
             switch (alt37) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3805:2: ( ruleValidID )
+                    // InternalPerspectiveDsl.g:3886:2: ( ruleValidID )
                     {
-                    // InternalPerspectiveDsl.g:3805:2: ( ruleValidID )
-                    // InternalPerspectiveDsl.g:3806:3: ruleValidID
+                    // InternalPerspectiveDsl.g:3886:2: ( ruleValidID )
+                    // InternalPerspectiveDsl.g:3887:3: ruleValidID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
@@ -13986,10 +14274,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3811:2: ( 'extends' )
+                    // InternalPerspectiveDsl.g:3892:2: ( 'extends' )
                     {
-                    // InternalPerspectiveDsl.g:3811:2: ( 'extends' )
-                    // InternalPerspectiveDsl.g:3812:3: 'extends'
+                    // InternalPerspectiveDsl.g:3892:2: ( 'extends' )
+                    // InternalPerspectiveDsl.g:3893:3: 'extends'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
@@ -14005,10 +14293,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3817:2: ( 'static' )
+                    // InternalPerspectiveDsl.g:3898:2: ( 'static' )
                     {
-                    // InternalPerspectiveDsl.g:3817:2: ( 'static' )
-                    // InternalPerspectiveDsl.g:3818:3: 'static'
+                    // InternalPerspectiveDsl.g:3898:2: ( 'static' )
+                    // InternalPerspectiveDsl.g:3899:3: 'static'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
@@ -14024,10 +14312,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3823:2: ( 'import' )
+                    // InternalPerspectiveDsl.g:3904:2: ( 'import' )
                     {
-                    // InternalPerspectiveDsl.g:3823:2: ( 'import' )
-                    // InternalPerspectiveDsl.g:3824:3: 'import'
+                    // InternalPerspectiveDsl.g:3904:2: ( 'import' )
+                    // InternalPerspectiveDsl.g:3905:3: 'import'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
@@ -14043,10 +14331,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3829:2: ( 'extension' )
+                    // InternalPerspectiveDsl.g:3910:2: ( 'extension' )
                     {
-                    // InternalPerspectiveDsl.g:3829:2: ( 'extension' )
-                    // InternalPerspectiveDsl.g:3830:3: 'extension'
+                    // InternalPerspectiveDsl.g:3910:2: ( 'extension' )
+                    // InternalPerspectiveDsl.g:3911:3: 'extension'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
@@ -14079,13 +14367,13 @@
 
 
     // $ANTLR start "rule__IdOrSuper__Alternatives"
-    // InternalPerspectiveDsl.g:3839:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
+    // InternalPerspectiveDsl.g:3920:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
     public final void rule__IdOrSuper__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3843:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
+            // InternalPerspectiveDsl.g:3924:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -14104,10 +14392,10 @@
             }
             switch (alt38) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3844:2: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:3925:2: ( ruleFeatureCallID )
                     {
-                    // InternalPerspectiveDsl.g:3844:2: ( ruleFeatureCallID )
-                    // InternalPerspectiveDsl.g:3845:3: ruleFeatureCallID
+                    // InternalPerspectiveDsl.g:3925:2: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:3926:3: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
@@ -14127,10 +14415,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3850:2: ( 'super' )
+                    // InternalPerspectiveDsl.g:3931:2: ( 'super' )
                     {
-                    // InternalPerspectiveDsl.g:3850:2: ( 'super' )
-                    // InternalPerspectiveDsl.g:3851:3: 'super'
+                    // InternalPerspectiveDsl.g:3931:2: ( 'super' )
+                    // InternalPerspectiveDsl.g:3932:3: 'super'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
@@ -14163,27 +14451,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Alternatives_4_1"
-    // InternalPerspectiveDsl.g:3860:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3941: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:3864:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3945: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:3865:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalPerspectiveDsl.g:3946:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3865:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
-                    // InternalPerspectiveDsl.g:3866:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalPerspectiveDsl.g:3946:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalPerspectiveDsl.g:3947:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3867:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
-                    // InternalPerspectiveDsl.g:3867:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+                    // InternalPerspectiveDsl.g:3948:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalPerspectiveDsl.g:3948:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__ArgumentsAssignment_4_1_0();
@@ -14203,16 +14491,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3871:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3952:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3871:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
-                    // InternalPerspectiveDsl.g:3872:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalPerspectiveDsl.g:3952:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalPerspectiveDsl.g:3953:3: ( rule__XConstructorCall__Group_4_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3873:3: ( rule__XConstructorCall__Group_4_1_1__0 )
-                    // InternalPerspectiveDsl.g:3873:4: rule__XConstructorCall__Group_4_1_1__0
+                    // InternalPerspectiveDsl.g:3954:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalPerspectiveDsl.g:3954:4: rule__XConstructorCall__Group_4_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_4_1_1__0();
@@ -14249,20 +14537,20 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Alternatives_1"
-    // InternalPerspectiveDsl.g:3881:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
+    // InternalPerspectiveDsl.g:3962: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:3885:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:3966: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==126) ) {
+            else if ( (LA40_0==131) ) {
                 alt40=2;
             }
             else {
@@ -14274,10 +14562,10 @@
             }
             switch (alt40) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3886:2: ( 'false' )
+                    // InternalPerspectiveDsl.g:3967:2: ( 'false' )
                     {
-                    // InternalPerspectiveDsl.g:3886:2: ( 'false' )
-                    // InternalPerspectiveDsl.g:3887:3: 'false'
+                    // InternalPerspectiveDsl.g:3967:2: ( 'false' )
+                    // InternalPerspectiveDsl.g:3968:3: 'false'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); 
@@ -14293,16 +14581,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3892:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalPerspectiveDsl.g:3973:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
                     {
-                    // InternalPerspectiveDsl.g:3892:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
-                    // InternalPerspectiveDsl.g:3893:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalPerspectiveDsl.g:3973:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalPerspectiveDsl.g:3974:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3894:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
-                    // InternalPerspectiveDsl.g:3894:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
+                    // InternalPerspectiveDsl.g:3975:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalPerspectiveDsl.g:3975:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBooleanLiteral__IsTrueAssignment_1_1();
@@ -14339,20 +14627,20 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Alternatives_3"
-    // InternalPerspectiveDsl.g:3902:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
+    // InternalPerspectiveDsl.g:3983: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:3906:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
+            // InternalPerspectiveDsl.g:3987: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==116) ) {
+            if ( (LA41_0==121) ) {
                 alt41=1;
             }
-            else if ( (LA41_0==114) ) {
+            else if ( (LA41_0==119) ) {
                 alt41=2;
             }
             else {
@@ -14364,16 +14652,16 @@
             }
             switch (alt41) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3907:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3988:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3907:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:3908:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3988:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:3989:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3909:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:3909:4: rule__XTryCatchFinallyExpression__Group_3_0__0
+                    // InternalPerspectiveDsl.g:3990:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:3990:4: rule__XTryCatchFinallyExpression__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_0__0();
@@ -14393,16 +14681,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3913:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:3994:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3913:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
-                    // InternalPerspectiveDsl.g:3914:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:3994:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:3995:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3915:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
-                    // InternalPerspectiveDsl.g:3915:4: rule__XTryCatchFinallyExpression__Group_3_1__0
+                    // InternalPerspectiveDsl.g:3996:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:3996:4: rule__XTryCatchFinallyExpression__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_1__0();
@@ -14439,13 +14727,13 @@
 
 
     // $ANTLR start "rule__Number__Alternatives"
-    // InternalPerspectiveDsl.g:3923:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
+    // InternalPerspectiveDsl.g:4004: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:3927:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
+            // InternalPerspectiveDsl.g:4008:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -14464,10 +14752,10 @@
             }
             switch (alt42) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3928:2: ( RULE_HEX )
+                    // InternalPerspectiveDsl.g:4009:2: ( RULE_HEX )
                     {
-                    // InternalPerspectiveDsl.g:3928:2: ( RULE_HEX )
-                    // InternalPerspectiveDsl.g:3929:3: RULE_HEX
+                    // InternalPerspectiveDsl.g:4009:2: ( RULE_HEX )
+                    // InternalPerspectiveDsl.g:4010:3: RULE_HEX
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
@@ -14483,16 +14771,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3934:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:4015:2: ( ( rule__Number__Group_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3934:2: ( ( rule__Number__Group_1__0 ) )
-                    // InternalPerspectiveDsl.g:3935:3: ( rule__Number__Group_1__0 )
+                    // InternalPerspectiveDsl.g:4015:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalPerspectiveDsl.g:4016:3: ( rule__Number__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getGroup_1()); 
                     }
-                    // InternalPerspectiveDsl.g:3936:3: ( rule__Number__Group_1__0 )
-                    // InternalPerspectiveDsl.g:3936:4: rule__Number__Group_1__0
+                    // InternalPerspectiveDsl.g:4017:3: ( rule__Number__Group_1__0 )
+                    // InternalPerspectiveDsl.g:4017:4: rule__Number__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Number__Group_1__0();
@@ -14529,13 +14817,13 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_0"
-    // InternalPerspectiveDsl.g:3944:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalPerspectiveDsl.g:4025: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:3948:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            // InternalPerspectiveDsl.g:4029:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
             int alt43=2;
             int LA43_0 = input.LA(1);
 
@@ -14554,10 +14842,10 @@
             }
             switch (alt43) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3949:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:4030:2: ( RULE_INT )
                     {
-                    // InternalPerspectiveDsl.g:3949:2: ( RULE_INT )
-                    // InternalPerspectiveDsl.g:3950:3: RULE_INT
+                    // InternalPerspectiveDsl.g:4030:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:4031:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
@@ -14573,10 +14861,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3955:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:4036:2: ( RULE_DECIMAL )
                     {
-                    // InternalPerspectiveDsl.g:3955:2: ( RULE_DECIMAL )
-                    // InternalPerspectiveDsl.g:3956:3: RULE_DECIMAL
+                    // InternalPerspectiveDsl.g:4036:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:4037:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
@@ -14609,13 +14897,13 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_1_1"
-    // InternalPerspectiveDsl.g:3965:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalPerspectiveDsl.g:4046: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:3969:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            // InternalPerspectiveDsl.g:4050:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
             int alt44=2;
             int LA44_0 = input.LA(1);
 
@@ -14634,10 +14922,10 @@
             }
             switch (alt44) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3970:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:4051:2: ( RULE_INT )
                     {
-                    // InternalPerspectiveDsl.g:3970:2: ( RULE_INT )
-                    // InternalPerspectiveDsl.g:3971:3: RULE_INT
+                    // InternalPerspectiveDsl.g:4051:2: ( RULE_INT )
+                    // InternalPerspectiveDsl.g:4052:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
@@ -14653,10 +14941,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3976:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:4057:2: ( RULE_DECIMAL )
                     {
-                    // InternalPerspectiveDsl.g:3976:2: ( RULE_DECIMAL )
-                    // InternalPerspectiveDsl.g:3977:3: RULE_DECIMAL
+                    // InternalPerspectiveDsl.g:4057:2: ( RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:4058:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
@@ -14689,20 +14977,20 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Alternatives"
-    // InternalPerspectiveDsl.g:3986:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
+    // InternalPerspectiveDsl.g:4067:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
     public final void rule__JvmTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:3990:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
+            // InternalPerspectiveDsl.g:4071: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==91) ) {
+            else if ( (LA45_0==31||LA45_0==96) ) {
                 alt45=2;
             }
             else {
@@ -14714,16 +15002,16 @@
             }
             switch (alt45) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3991:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:4072:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:3991:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
-                    // InternalPerspectiveDsl.g:3992:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalPerspectiveDsl.g:4072:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalPerspectiveDsl.g:4073:3: ( rule__JvmTypeReference__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
                     }
-                    // InternalPerspectiveDsl.g:3993:3: ( rule__JvmTypeReference__Group_0__0 )
-                    // InternalPerspectiveDsl.g:3993:4: rule__JvmTypeReference__Group_0__0
+                    // InternalPerspectiveDsl.g:4074:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalPerspectiveDsl.g:4074:4: rule__JvmTypeReference__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmTypeReference__Group_0__0();
@@ -14743,10 +15031,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3997:2: ( ruleXFunctionTypeRef )
+                    // InternalPerspectiveDsl.g:4078:2: ( ruleXFunctionTypeRef )
                     {
-                    // InternalPerspectiveDsl.g:3997:2: ( ruleXFunctionTypeRef )
-                    // InternalPerspectiveDsl.g:3998:3: ruleXFunctionTypeRef
+                    // InternalPerspectiveDsl.g:4078:2: ( ruleXFunctionTypeRef )
+                    // InternalPerspectiveDsl.g:4079:3: ruleXFunctionTypeRef
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
@@ -14783,20 +15071,20 @@
 
 
     // $ANTLR start "rule__JvmArgumentTypeReference__Alternatives"
-    // InternalPerspectiveDsl.g:4007:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
+    // InternalPerspectiveDsl.g:4088:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
     public final void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4011:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
+            // InternalPerspectiveDsl.g:4092:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
             int alt46=2;
             int LA46_0 = input.LA(1);
 
-            if ( (LA46_0==RULE_ID||LA46_0==31||LA46_0==91) ) {
+            if ( (LA46_0==RULE_ID||LA46_0==31||LA46_0==96) ) {
                 alt46=1;
             }
-            else if ( (LA46_0==117) ) {
+            else if ( (LA46_0==122) ) {
                 alt46=2;
             }
             else {
@@ -14808,10 +15096,10 @@
             }
             switch (alt46) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4012:2: ( ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:4093:2: ( ruleJvmTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:4012:2: ( ruleJvmTypeReference )
-                    // InternalPerspectiveDsl.g:4013:3: ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:4093:2: ( ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:4094:3: ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
@@ -14831,10 +15119,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4018:2: ( ruleJvmWildcardTypeReference )
+                    // InternalPerspectiveDsl.g:4099:2: ( ruleJvmWildcardTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:4018:2: ( ruleJvmWildcardTypeReference )
-                    // InternalPerspectiveDsl.g:4019:3: ruleJvmWildcardTypeReference
+                    // InternalPerspectiveDsl.g:4099:2: ( ruleJvmWildcardTypeReference )
+                    // InternalPerspectiveDsl.g:4100:3: ruleJvmWildcardTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
@@ -14871,13 +15159,13 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Alternatives_2"
-    // InternalPerspectiveDsl.g:4028:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
+    // InternalPerspectiveDsl.g:4109: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:4032:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
+            // InternalPerspectiveDsl.g:4113:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
             int alt47=2;
             int LA47_0 = input.LA(1);
 
@@ -14896,16 +15184,16 @@
             }
             switch (alt47) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4033:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:4114:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:4033:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
-                    // InternalPerspectiveDsl.g:4034:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:4114:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalPerspectiveDsl.g:4115:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
                     }
-                    // InternalPerspectiveDsl.g:4035:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
-                    // InternalPerspectiveDsl.g:4035:4: rule__JvmWildcardTypeReference__Group_2_0__0
+                    // InternalPerspectiveDsl.g:4116:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalPerspectiveDsl.g:4116:4: rule__JvmWildcardTypeReference__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_0__0();
@@ -14925,16 +15213,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4039:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:4120:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
                     {
-                    // InternalPerspectiveDsl.g:4039:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
-                    // InternalPerspectiveDsl.g:4040:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:4120:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalPerspectiveDsl.g:4121:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
                     }
-                    // InternalPerspectiveDsl.g:4041:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
-                    // InternalPerspectiveDsl.g:4041:4: rule__JvmWildcardTypeReference__Group_2_1__0
+                    // InternalPerspectiveDsl.g:4122:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalPerspectiveDsl.g:4122:4: rule__JvmWildcardTypeReference__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_1__0();
@@ -14971,13 +15259,13 @@
 
 
     // $ANTLR start "rule__SashOrientation__Alternatives"
-    // InternalPerspectiveDsl.g:4049:1: rule__SashOrientation__Alternatives : ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) );
+    // InternalPerspectiveDsl.g:4130:1: rule__SashOrientation__Alternatives : ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) );
     public final void rule__SashOrientation__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4053:1: ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) )
+            // InternalPerspectiveDsl.g:4134:1: ( ( ( 'horizontal' ) ) | ( ( 'vertical' ) ) )
             int alt48=2;
             int LA48_0 = input.LA(1);
 
@@ -14996,16 +15284,16 @@
             }
             switch (alt48) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4054:2: ( ( 'horizontal' ) )
+                    // InternalPerspectiveDsl.g:4135:2: ( ( 'horizontal' ) )
                     {
-                    // InternalPerspectiveDsl.g:4054:2: ( ( 'horizontal' ) )
-                    // InternalPerspectiveDsl.g:4055:3: ( 'horizontal' )
+                    // InternalPerspectiveDsl.g:4135:2: ( ( 'horizontal' ) )
+                    // InternalPerspectiveDsl.g:4136:3: ( 'horizontal' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0()); 
                     }
-                    // InternalPerspectiveDsl.g:4056:3: ( 'horizontal' )
-                    // InternalPerspectiveDsl.g:4056:4: 'horizontal'
+                    // InternalPerspectiveDsl.g:4137:3: ( 'horizontal' )
+                    // InternalPerspectiveDsl.g:4137:4: 'horizontal'
                     {
                     match(input,51,FOLLOW_2); if (state.failed) return ;
 
@@ -15021,16 +15309,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4060:2: ( ( 'vertical' ) )
+                    // InternalPerspectiveDsl.g:4141:2: ( ( 'vertical' ) )
                     {
-                    // InternalPerspectiveDsl.g:4060:2: ( ( 'vertical' ) )
-                    // InternalPerspectiveDsl.g:4061:3: ( 'vertical' )
+                    // InternalPerspectiveDsl.g:4141:2: ( ( 'vertical' ) )
+                    // InternalPerspectiveDsl.g:4142:3: ( 'vertical' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1()); 
                     }
-                    // InternalPerspectiveDsl.g:4062:3: ( 'vertical' )
-                    // InternalPerspectiveDsl.g:4062:4: 'vertical'
+                    // InternalPerspectiveDsl.g:4143:3: ( 'vertical' )
+                    // InternalPerspectiveDsl.g:4143:4: 'vertical'
                     {
                     match(input,52,FOLLOW_2); if (state.failed) return ;
 
@@ -15063,14 +15351,14 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__Group__0"
-    // InternalPerspectiveDsl.g:4070:1: rule__PerspectiveModel__Group__0 : rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1 ;
+    // InternalPerspectiveDsl.g:4151: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:4074:1: ( rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1 )
-            // InternalPerspectiveDsl.g:4075:2: rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1
+            // InternalPerspectiveDsl.g:4155:1: ( rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1 )
+            // InternalPerspectiveDsl.g:4156:2: rule__PerspectiveModel__Group__0__Impl rule__PerspectiveModel__Group__1
             {
             pushFollow(FOLLOW_5);
             rule__PerspectiveModel__Group__0__Impl();
@@ -15101,22 +15389,22 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__Group__0__Impl"
-    // InternalPerspectiveDsl.g:4082:1: rule__PerspectiveModel__Group__0__Impl : ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? ) ;
+    // InternalPerspectiveDsl.g:4163: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:4086:1: ( ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? ) )
-            // InternalPerspectiveDsl.g:4087:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
+            // InternalPerspectiveDsl.g:4167:1: ( ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? ) )
+            // InternalPerspectiveDsl.g:4168:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
             {
-            // InternalPerspectiveDsl.g:4087:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
-            // InternalPerspectiveDsl.g:4088:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
+            // InternalPerspectiveDsl.g:4168:1: ( ( rule__PerspectiveModel__ImportSectionAssignment_0 )? )
+            // InternalPerspectiveDsl.g:4169:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveModelAccess().getImportSectionAssignment_0()); 
             }
-            // InternalPerspectiveDsl.g:4089:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
+            // InternalPerspectiveDsl.g:4170:2: ( rule__PerspectiveModel__ImportSectionAssignment_0 )?
             int alt49=2;
             int LA49_0 = input.LA(1);
 
@@ -15125,7 +15413,7 @@
             }
             switch (alt49) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4089:3: rule__PerspectiveModel__ImportSectionAssignment_0
+                    // InternalPerspectiveDsl.g:4170:3: rule__PerspectiveModel__ImportSectionAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveModel__ImportSectionAssignment_0();
@@ -15163,14 +15451,14 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__Group__1"
-    // InternalPerspectiveDsl.g:4097:1: rule__PerspectiveModel__Group__1 : rule__PerspectiveModel__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:4178: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:4101:1: ( rule__PerspectiveModel__Group__1__Impl )
-            // InternalPerspectiveDsl.g:4102:2: rule__PerspectiveModel__Group__1__Impl
+            // InternalPerspectiveDsl.g:4182:1: ( rule__PerspectiveModel__Group__1__Impl )
+            // InternalPerspectiveDsl.g:4183:2: rule__PerspectiveModel__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveModel__Group__1__Impl();
@@ -15196,22 +15484,22 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__Group__1__Impl"
-    // InternalPerspectiveDsl.g:4108:1: rule__PerspectiveModel__Group__1__Impl : ( ( rule__PerspectiveModel__PackagesAssignment_1 )* ) ;
+    // InternalPerspectiveDsl.g:4189: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:4112:1: ( ( ( rule__PerspectiveModel__PackagesAssignment_1 )* ) )
-            // InternalPerspectiveDsl.g:4113:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
+            // InternalPerspectiveDsl.g:4193:1: ( ( ( rule__PerspectiveModel__PackagesAssignment_1 )* ) )
+            // InternalPerspectiveDsl.g:4194:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
             {
-            // InternalPerspectiveDsl.g:4113:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
-            // InternalPerspectiveDsl.g:4114:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
+            // InternalPerspectiveDsl.g:4194:1: ( ( rule__PerspectiveModel__PackagesAssignment_1 )* )
+            // InternalPerspectiveDsl.g:4195:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveModelAccess().getPackagesAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:4115:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
+            // InternalPerspectiveDsl.g:4196:2: ( rule__PerspectiveModel__PackagesAssignment_1 )*
             loop50:
             do {
                 int alt50=2;
@@ -15224,7 +15512,7 @@
 
                 switch (alt50) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4115:3: rule__PerspectiveModel__PackagesAssignment_1
+            	    // InternalPerspectiveDsl.g:4196:3: rule__PerspectiveModel__PackagesAssignment_1
             	    {
             	    pushFollow(FOLLOW_6);
             	    rule__PerspectiveModel__PackagesAssignment_1();
@@ -15265,14 +15553,14 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__0"
-    // InternalPerspectiveDsl.g:4124:1: rule__PerspectivePackage__Group__0 : rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1 ;
+    // InternalPerspectiveDsl.g:4205: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:4128:1: ( rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1 )
-            // InternalPerspectiveDsl.g:4129:2: rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1
+            // InternalPerspectiveDsl.g:4209:1: ( rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1 )
+            // InternalPerspectiveDsl.g:4210:2: rule__PerspectivePackage__Group__0__Impl rule__PerspectivePackage__Group__1
             {
             pushFollow(FOLLOW_5);
             rule__PerspectivePackage__Group__0__Impl();
@@ -15303,23 +15591,23 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__0__Impl"
-    // InternalPerspectiveDsl.g:4136:1: rule__PerspectivePackage__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:4217:1: rule__PerspectivePackage__Group__0__Impl : ( () ) ;
     public final void rule__PerspectivePackage__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4140:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:4141:1: ( () )
+            // InternalPerspectiveDsl.g:4221:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:4222:1: ( () )
             {
-            // InternalPerspectiveDsl.g:4141:1: ( () )
-            // InternalPerspectiveDsl.g:4142:2: ()
+            // InternalPerspectiveDsl.g:4222:1: ( () )
+            // InternalPerspectiveDsl.g:4223:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getPerspectivePackageAction_0()); 
             }
-            // InternalPerspectiveDsl.g:4143:2: ()
-            // InternalPerspectiveDsl.g:4143:3: 
+            // InternalPerspectiveDsl.g:4224:2: ()
+            // InternalPerspectiveDsl.g:4224:3: 
             {
             }
 
@@ -15344,14 +15632,14 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__Group__1"
-    // InternalPerspectiveDsl.g:4151:1: rule__PerspectivePackage__Group__1 : rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2 ;
+    // InternalPerspectiveDsl.g:4232: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:4155:1: ( rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2 )
-            // InternalPerspectiveDsl.g:4156:2: rule__PerspectivePackage__Group__1__Impl rule__PerspectivePackage__Group__2