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 7cfb71e..1cbc1c5 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
@@ -111,6 +111,7 @@
 					put(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0(), "rule__PerspectivePartStack__Group_3_0__0");
 					put(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1(), "rule__PerspectivePartStack__Group_3_1__0");
 					put(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2(), "rule__PerspectivePartStack__Group_3_2__0");
+					put(grammarAccess.getPerspectivePartStackAccess().getGroup_3_3(), "rule__PerspectivePartStack__Group_3_3__0");
 					put(grammarAccess.getPerspectivePartAccess().getGroup(), "rule__PerspectivePart__Group__0");
 					put(grammarAccess.getPerspectivePartAccess().getGroup_3_0(), "rule__PerspectivePart__Group_3_0__0");
 					put(grammarAccess.getPerspectivePartAccess().getGroup_3_1(), "rule__PerspectivePart__Group_3_1__0");
@@ -358,8 +359,9 @@
 					put(grammarAccess.getPerspectiveSashContainerAccess().getElementsAssignment_5(), "rule__PerspectiveSashContainer__ElementsAssignment_5");
 					put(grammarAccess.getPerspectivePartStackAccess().getElementIdAssignment_2(), "rule__PerspectivePartStack__ElementIdAssignment_2");
 					put(grammarAccess.getPerspectivePartStackAccess().getSelectedElementAssignment_3_0_1(), "rule__PerspectivePartStack__SelectedElementAssignment_3_0_1");
-					put(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1(), "rule__PerspectivePartStack__ContainerDataAssignment_3_1_1");
-					put(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1(), "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1");
+					put(grammarAccess.getPerspectivePartStackAccess().getSynchronizeAssignment_3_1_1(), "rule__PerspectivePartStack__SynchronizeAssignment_3_1_1");
+					put(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_2_1(), "rule__PerspectivePartStack__ContainerDataAssignment_3_2_1");
+					put(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_3_1(), "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1");
 					put(grammarAccess.getPerspectivePartStackAccess().getElementsAssignment_5(), "rule__PerspectivePartStack__ElementsAssignment_5");
 					put(grammarAccess.getPerspectivePartAccess().getElementIdAssignment_2(), "rule__PerspectivePart__ElementIdAssignment_2");
 					put(grammarAccess.getPerspectivePartAccess().getContainerDataAssignment_3_0_1(), "rule__PerspectivePart__ContainerDataAssignment_3_0_1");
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 a62043d..c83a3db 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
@@ -4841,9 +4841,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0()); }
-	'iconURI'
-	{ after(grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0()); }
+	{ before(grammarAccess.getPerspectiveAccess().getIconKeyword_5_0_0()); }
+	'icon'
+	{ after(grammarAccess.getPerspectiveAccess().getIconKeyword_5_0_0()); }
 )
 ;
 finally {
@@ -5705,9 +5705,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0()); }
-	'spaceVolume'
-	{ after(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0()); }
+	{ before(grammarAccess.getPerspectivePartStackAccess().getSynchronizeKeyword_3_1_0()); }
+	'synchronize'
+	{ after(grammarAccess.getPerspectivePartStackAccess().getSynchronizeKeyword_3_1_0()); }
 )
 ;
 finally {
@@ -5731,9 +5731,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1()); }
-	(rule__PerspectivePartStack__ContainerDataAssignment_3_1_1)
-	{ after(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1()); }
+	{ before(grammarAccess.getPerspectivePartStackAccess().getSynchronizeAssignment_3_1_1()); }
+	(rule__PerspectivePartStack__SynchronizeAssignment_3_1_1)
+	{ after(grammarAccess.getPerspectivePartStackAccess().getSynchronizeAssignment_3_1_1()); }
 )
 ;
 finally {
@@ -5759,9 +5759,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0()); }
-	'accessibility'
-	{ after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0()); }
+	{ before(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_2_0()); }
+	'spaceVolume'
+	{ after(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_2_0()); }
 )
 ;
 finally {
@@ -5785,9 +5785,63 @@
 	}
 :
 (
-	{ before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1()); }
-	(rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1)
-	{ after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1()); }
+	{ before(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_2_1()); }
+	(rule__PerspectivePartStack__ContainerDataAssignment_3_2_1)
+	{ after(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PerspectivePartStack__Group_3_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group_3_3__0__Impl
+	rule__PerspectivePartStack__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_3_0()); }
+	'accessibility'
+	{ after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__Group_3_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_3_1()); }
+	(rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1)
+	{ after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_3_1()); }
 )
 ;
 finally {
@@ -21241,6 +21295,21 @@
 					{ after(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2()); }
 				)
 			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_3()); }
+					(rule__PerspectivePartStack__Group_3_3__0)
+					{ after(grammarAccess.getPerspectivePartStackAccess().getGroup_3_3()); }
+				)
+			)
 		)
 		)
 ;
@@ -21280,6 +21349,18 @@
 	}
 :
 	rule__PerspectivePartStack__UnorderedGroup_3__Impl
+	rule__PerspectivePartStack__UnorderedGroup_3__3?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__UnorderedGroup_3__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__PerspectivePartStack__UnorderedGroup_3__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -21887,30 +21968,49 @@
 	restoreStackSize(stackSize);
 }
 
-rule__PerspectivePartStack__ContainerDataAssignment_3_1_1
+rule__PerspectivePartStack__SynchronizeAssignment_3_1_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); }
-		RULE_STRING
-		{ after(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); }
+		{ before(grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackCrossReference_3_1_1_0()); }
+		(
+			{ before(grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackIDTerminalRuleCall_3_1_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackIDTerminalRuleCall_3_1_1_0_1()); }
+		)
+		{ after(grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackCrossReference_3_1_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1
+rule__PerspectivePartStack__ContainerDataAssignment_3_2_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); }
+		{ before(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); }
 		RULE_STRING
-		{ after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); }
+		{ after(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); }
 	)
 ;
 finally {
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 26c022a..0edaa93 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
-'#'=100
+'#'=102
 '%'=39
 '%='=20
 '&&'=15
-'&'=123
-'('=96
-')'=97
+'&'=125
+'('=98
+')'=99
 '*'=36
 '**'=37
 '*='=18
 '+'=34
 '++'=41
 '+='=16
-','=98
+','=100
 '-'=35
 '--'=42
 '-='=17
@@ -24,9 +24,9 @@
 '..<'=29
 '/'=38
 '/='=19
-':'=107
-'::'=127
-';'=94
+':'=109
+'::'=129
+';'=96
 '<'=27
 '<>'=32
 '='=13
@@ -35,86 +35,88 @@
 '=>'=31
 '>'=26
 '>='=25
-'?'=122
-'?.'=128
+'?'=124
+'?.'=130
 '?:'=33
-'@'=95
-'['=101
-']'=99
+'@'=97
+'['=103
+']'=101
 'accessibility'=60
-'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
+'allowedSources'=73
+'as'=105
+'bpmn'=82
+'browser'=94
+'card'=85
+'case'=111
+'catch'=123
+'chart'=77
+'dataInterchange'=91
+'default'=110
+'depth'=89
+'describedBy'=126
+'dialog'=81
+'do'=114
+'editableTable'=76
+'else'=107
 'eventManager'=62
 'extends'=45
 'extension'=48
 'false'=50
-'filterColumns'=88
-'finally'=119
-'for'=110
+'filterColumns'=90
+'finally'=121
+'for'=112
 'horizontal'=51
-'iconURI'=59
-'if'=104
+'icon'=59
+'iconURI'=70
+'if'=106
 'import'=47
-'in'=86
-'instanceof'=102
-'isClosable'=125
-'kanban'=81
-'name'=91
-'new'=113
-'ns'=126
-'null'=114
-'of'=82
-'organigram'=77
+'in'=88
+'instanceof'=104
+'isClosable'=127
+'kanban'=83
+'name'=93
+'new'=115
+'ns'=128
+'null'=116
+'of'=84
+'organigram'=79
 'orientation'=64
 'package'=53
-'part'=68
+'part'=69
 'partStack'=67
 'perspective'=56
 'process'=57
-'readOnlyTable'=73
-'report'=76
-'return'=117
+'readOnlyTable'=75
+'report'=78
+'return'=119
 'sashContainer'=63
-'search'=85
-'select'=72
+'search'=87
+'select'=74
 'selectedElement'=65
 'spaceVolume'=66
 'static'=46
 'super'=49
-'switch'=106
-'synchronized'=120
-'targetPart'=70
-'throw'=116
-'title'=90
+'switch'=108
+'synchronize'=68
+'synchronized'=122
+'targetPart'=72
+'throw'=118
+'title'=92
 'toolbar'=61
-'topology'=78
-'true'=131
-'try'=118
-'typeof'=115
-'url'=93
+'topology'=80
+'true'=133
+'try'=120
+'typeof'=117
+'url'=95
 'usertask'=58
 'val'=44
-'var'=130
+'var'=132
 'vertical'=52
-'view'=69
-'welcome'=84
-'while'=111
+'view'=71
+'welcome'=86
+'while'=113
 '{'=54
-'|'=129
+'|'=131
 '||'=14
 '}'=55
 RULE_ANY_OTHER=12
@@ -158,6 +160,8 @@
 T__129=129
 T__130=130
 T__131=131
+T__132=132
+T__133=133
 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 51b2497..8a4a501 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
@@ -23,6 +23,8 @@
     public static final int T__52=52;
     public static final int T__53=53;
     public static final int T__54=54;
+    public static final int T__133=133;
+    public static final int T__132=132;
     public static final int T__60=60;
     public static final int T__61=61;
     public static final int RULE_ID=4;
@@ -1114,10 +1116,10 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:57:7: ( 'iconURI' )
-            // InternalPerspectiveDsl.g:57:9: 'iconURI'
+            // InternalPerspectiveDsl.g:57:7: ( 'icon' )
+            // InternalPerspectiveDsl.g:57:9: 'icon'
             {
-            match("iconURI"); 
+            match("icon"); 
 
 
             }
@@ -1303,10 +1305,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:66:7: ( 'part' )
-            // InternalPerspectiveDsl.g:66:9: 'part'
+            // InternalPerspectiveDsl.g:66:7: ( 'synchronize' )
+            // InternalPerspectiveDsl.g:66:9: 'synchronize'
             {
-            match("part"); 
+            match("synchronize"); 
 
 
             }
@@ -1324,10 +1326,10 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:67:7: ( 'view' )
-            // InternalPerspectiveDsl.g:67:9: 'view'
+            // InternalPerspectiveDsl.g:67:7: ( 'part' )
+            // InternalPerspectiveDsl.g:67:9: 'part'
             {
-            match("view"); 
+            match("part"); 
 
 
             }
@@ -1345,10 +1347,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:68:7: ( 'targetPart' )
-            // InternalPerspectiveDsl.g:68:9: 'targetPart'
+            // InternalPerspectiveDsl.g:68:7: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:68:9: 'iconURI'
             {
-            match("targetPart"); 
+            match("iconURI"); 
 
 
             }
@@ -1366,10 +1368,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:69:7: ( 'allowedSources' )
-            // InternalPerspectiveDsl.g:69:9: 'allowedSources'
+            // InternalPerspectiveDsl.g:69:7: ( 'view' )
+            // InternalPerspectiveDsl.g:69:9: 'view'
             {
-            match("allowedSources"); 
+            match("view"); 
 
 
             }
@@ -1387,10 +1389,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:70:7: ( 'select' )
-            // InternalPerspectiveDsl.g:70:9: 'select'
+            // InternalPerspectiveDsl.g:70:7: ( 'targetPart' )
+            // InternalPerspectiveDsl.g:70:9: 'targetPart'
             {
-            match("select"); 
+            match("targetPart"); 
 
 
             }
@@ -1408,10 +1410,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:71:7: ( 'readOnlyTable' )
-            // InternalPerspectiveDsl.g:71:9: 'readOnlyTable'
+            // InternalPerspectiveDsl.g:71:7: ( 'allowedSources' )
+            // InternalPerspectiveDsl.g:71:9: 'allowedSources'
             {
-            match("readOnlyTable"); 
+            match("allowedSources"); 
 
 
             }
@@ -1429,10 +1431,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:72:7: ( 'editableTable' )
-            // InternalPerspectiveDsl.g:72:9: 'editableTable'
+            // InternalPerspectiveDsl.g:72:7: ( 'select' )
+            // InternalPerspectiveDsl.g:72:9: 'select'
             {
-            match("editableTable"); 
+            match("select"); 
 
 
             }
@@ -1450,10 +1452,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:73:7: ( 'chart' )
-            // InternalPerspectiveDsl.g:73:9: 'chart'
+            // InternalPerspectiveDsl.g:73:7: ( 'readOnlyTable' )
+            // InternalPerspectiveDsl.g:73:9: 'readOnlyTable'
             {
-            match("chart"); 
+            match("readOnlyTable"); 
 
 
             }
@@ -1471,10 +1473,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:74:7: ( 'report' )
-            // InternalPerspectiveDsl.g:74:9: 'report'
+            // InternalPerspectiveDsl.g:74:7: ( 'editableTable' )
+            // InternalPerspectiveDsl.g:74:9: 'editableTable'
             {
-            match("report"); 
+            match("editableTable"); 
 
 
             }
@@ -1492,10 +1494,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:75:7: ( 'organigram' )
-            // InternalPerspectiveDsl.g:75:9: 'organigram'
+            // InternalPerspectiveDsl.g:75:7: ( 'chart' )
+            // InternalPerspectiveDsl.g:75:9: 'chart'
             {
-            match("organigram"); 
+            match("chart"); 
 
 
             }
@@ -1513,10 +1515,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:76:7: ( 'topology' )
-            // InternalPerspectiveDsl.g:76:9: 'topology'
+            // InternalPerspectiveDsl.g:76:7: ( 'report' )
+            // InternalPerspectiveDsl.g:76:9: 'report'
             {
-            match("topology"); 
+            match("report"); 
 
 
             }
@@ -1534,10 +1536,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:77:7: ( 'dialog' )
-            // InternalPerspectiveDsl.g:77:9: 'dialog'
+            // InternalPerspectiveDsl.g:77:7: ( 'organigram' )
+            // InternalPerspectiveDsl.g:77:9: 'organigram'
             {
-            match("dialog"); 
+            match("organigram"); 
 
 
             }
@@ -1555,10 +1557,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:78:7: ( 'bpmn' )
-            // InternalPerspectiveDsl.g:78:9: 'bpmn'
+            // InternalPerspectiveDsl.g:78:7: ( 'topology' )
+            // InternalPerspectiveDsl.g:78:9: 'topology'
             {
-            match("bpmn"); 
+            match("topology"); 
 
 
             }
@@ -1576,10 +1578,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:79:7: ( 'kanban' )
-            // InternalPerspectiveDsl.g:79:9: 'kanban'
+            // InternalPerspectiveDsl.g:79:7: ( 'dialog' )
+            // InternalPerspectiveDsl.g:79:9: 'dialog'
             {
-            match("kanban"); 
+            match("dialog"); 
 
 
             }
@@ -1597,10 +1599,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:80:7: ( 'of' )
-            // InternalPerspectiveDsl.g:80:9: 'of'
+            // InternalPerspectiveDsl.g:80:7: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:80:9: 'bpmn'
             {
-            match("of"); 
+            match("bpmn"); 
 
 
             }
@@ -1618,10 +1620,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:81:7: ( 'card' )
-            // InternalPerspectiveDsl.g:81:9: 'card'
+            // InternalPerspectiveDsl.g:81:7: ( 'kanban' )
+            // InternalPerspectiveDsl.g:81:9: 'kanban'
             {
-            match("card"); 
+            match("kanban"); 
 
 
             }
@@ -1639,10 +1641,10 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:82:7: ( 'welcome' )
-            // InternalPerspectiveDsl.g:82:9: 'welcome'
+            // InternalPerspectiveDsl.g:82:7: ( 'of' )
+            // InternalPerspectiveDsl.g:82:9: 'of'
             {
-            match("welcome"); 
+            match("of"); 
 
 
             }
@@ -1660,10 +1662,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:83:7: ( 'search' )
-            // InternalPerspectiveDsl.g:83:9: 'search'
+            // InternalPerspectiveDsl.g:83:7: ( 'card' )
+            // InternalPerspectiveDsl.g:83:9: 'card'
             {
-            match("search"); 
+            match("card"); 
 
 
             }
@@ -1681,10 +1683,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:84:7: ( 'in' )
-            // InternalPerspectiveDsl.g:84:9: 'in'
+            // InternalPerspectiveDsl.g:84:7: ( 'welcome' )
+            // InternalPerspectiveDsl.g:84:9: 'welcome'
             {
-            match("in"); 
+            match("welcome"); 
 
 
             }
@@ -1702,10 +1704,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:85:7: ( 'depth' )
-            // InternalPerspectiveDsl.g:85:9: 'depth'
+            // InternalPerspectiveDsl.g:85:7: ( 'search' )
+            // InternalPerspectiveDsl.g:85:9: 'search'
             {
-            match("depth"); 
+            match("search"); 
 
 
             }
@@ -1723,10 +1725,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:86:7: ( 'filterColumns' )
-            // InternalPerspectiveDsl.g:86:9: 'filterColumns'
+            // InternalPerspectiveDsl.g:86:7: ( 'in' )
+            // InternalPerspectiveDsl.g:86:9: 'in'
             {
-            match("filterColumns"); 
+            match("in"); 
 
 
             }
@@ -1744,10 +1746,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:87:7: ( 'dataInterchange' )
-            // InternalPerspectiveDsl.g:87:9: 'dataInterchange'
+            // InternalPerspectiveDsl.g:87:7: ( 'depth' )
+            // InternalPerspectiveDsl.g:87:9: 'depth'
             {
-            match("dataInterchange"); 
+            match("depth"); 
 
 
             }
@@ -1765,10 +1767,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:88:7: ( 'title' )
-            // InternalPerspectiveDsl.g:88:9: 'title'
+            // InternalPerspectiveDsl.g:88:7: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:88:9: 'filterColumns'
             {
-            match("title"); 
+            match("filterColumns"); 
 
 
             }
@@ -1786,10 +1788,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:89:7: ( 'name' )
-            // InternalPerspectiveDsl.g:89:9: 'name'
+            // InternalPerspectiveDsl.g:89:7: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:89:9: 'dataInterchange'
             {
-            match("name"); 
+            match("dataInterchange"); 
 
 
             }
@@ -1807,10 +1809,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:90:7: ( 'browser' )
-            // InternalPerspectiveDsl.g:90:9: 'browser'
+            // InternalPerspectiveDsl.g:90:7: ( 'title' )
+            // InternalPerspectiveDsl.g:90:9: 'title'
             {
-            match("browser"); 
+            match("title"); 
 
 
             }
@@ -1828,10 +1830,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:91:7: ( 'url' )
-            // InternalPerspectiveDsl.g:91:9: 'url'
+            // InternalPerspectiveDsl.g:91:7: ( 'name' )
+            // InternalPerspectiveDsl.g:91:9: 'name'
             {
-            match("url"); 
+            match("name"); 
 
 
             }
@@ -1849,10 +1851,11 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:92:7: ( ';' )
-            // InternalPerspectiveDsl.g:92:9: ';'
+            // InternalPerspectiveDsl.g:92:7: ( 'browser' )
+            // InternalPerspectiveDsl.g:92:9: 'browser'
             {
-            match(';'); 
+            match("browser"); 
+
 
             }
 
@@ -1869,10 +1872,11 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:93:7: ( '@' )
-            // InternalPerspectiveDsl.g:93:9: '@'
+            // InternalPerspectiveDsl.g:93:7: ( 'url' )
+            // InternalPerspectiveDsl.g:93:9: 'url'
             {
-            match('@'); 
+            match("url"); 
+
 
             }
 
@@ -1889,10 +1893,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(';'); 
 
             }
 
@@ -1909,10 +1913,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:95:7: ( ')' )
-            // InternalPerspectiveDsl.g:95:9: ')'
+            // InternalPerspectiveDsl.g:95:7: ( '@' )
+            // InternalPerspectiveDsl.g:95:9: '@'
             {
-            match(')'); 
+            match('@'); 
 
             }
 
@@ -1929,10 +1933,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:96:7: ( ',' )
-            // InternalPerspectiveDsl.g:96:9: ','
+            // InternalPerspectiveDsl.g:96:7: ( '(' )
+            // InternalPerspectiveDsl.g:96:9: '('
             {
-            match(','); 
+            match('('); 
 
             }
 
@@ -1949,10 +1953,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:97:7: ( ']' )
-            // InternalPerspectiveDsl.g:97:9: ']'
+            // InternalPerspectiveDsl.g:97:7: ( ')' )
+            // InternalPerspectiveDsl.g:97:9: ')'
             {
-            match(']'); 
+            match(')'); 
 
             }
 
@@ -1969,10 +1973,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:98:8: ( '#' )
-            // InternalPerspectiveDsl.g:98:10: '#'
+            // InternalPerspectiveDsl.g:98:8: ( ',' )
+            // InternalPerspectiveDsl.g:98:10: ','
             {
-            match('#'); 
+            match(','); 
 
             }
 
@@ -1989,10 +1993,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:99:8: ( '[' )
-            // InternalPerspectiveDsl.g:99:10: '['
+            // InternalPerspectiveDsl.g:99:8: ( ']' )
+            // InternalPerspectiveDsl.g:99:10: ']'
             {
-            match('['); 
+            match(']'); 
 
             }
 
@@ -2009,11 +2013,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:100:8: ( 'instanceof' )
-            // InternalPerspectiveDsl.g:100:10: 'instanceof'
+            // InternalPerspectiveDsl.g:100:8: ( '#' )
+            // InternalPerspectiveDsl.g:100:10: '#'
             {
-            match("instanceof"); 
-
+            match('#'); 
 
             }
 
@@ -2030,11 +2033,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:101:8: ( 'as' )
-            // InternalPerspectiveDsl.g:101:10: 'as'
+            // InternalPerspectiveDsl.g:101:8: ( '[' )
+            // InternalPerspectiveDsl.g:101:10: '['
             {
-            match("as"); 
-
+            match('['); 
 
             }
 
@@ -2051,10 +2053,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:102:8: ( 'if' )
-            // InternalPerspectiveDsl.g:102:10: 'if'
+            // InternalPerspectiveDsl.g:102:8: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:102:10: 'instanceof'
             {
-            match("if"); 
+            match("instanceof"); 
 
 
             }
@@ -2072,10 +2074,10 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:103:8: ( 'else' )
-            // InternalPerspectiveDsl.g:103:10: 'else'
+            // InternalPerspectiveDsl.g:103:8: ( 'as' )
+            // InternalPerspectiveDsl.g:103:10: 'as'
             {
-            match("else"); 
+            match("as"); 
 
 
             }
@@ -2093,10 +2095,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:104:8: ( 'switch' )
-            // InternalPerspectiveDsl.g:104:10: 'switch'
+            // InternalPerspectiveDsl.g:104:8: ( 'if' )
+            // InternalPerspectiveDsl.g:104:10: 'if'
             {
-            match("switch"); 
+            match("if"); 
 
 
             }
@@ -2114,10 +2116,11 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:105:8: ( ':' )
-            // InternalPerspectiveDsl.g:105:10: ':'
+            // InternalPerspectiveDsl.g:105:8: ( 'else' )
+            // InternalPerspectiveDsl.g:105:10: 'else'
             {
-            match(':'); 
+            match("else"); 
+
 
             }
 
@@ -2134,10 +2137,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:106:8: ( 'default' )
-            // InternalPerspectiveDsl.g:106:10: 'default'
+            // InternalPerspectiveDsl.g:106:8: ( 'switch' )
+            // InternalPerspectiveDsl.g:106:10: 'switch'
             {
-            match("default"); 
+            match("switch"); 
 
 
             }
@@ -2155,11 +2158,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:107:8: ( 'case' )
-            // InternalPerspectiveDsl.g:107:10: 'case'
+            // InternalPerspectiveDsl.g:107:8: ( ':' )
+            // InternalPerspectiveDsl.g:107:10: ':'
             {
-            match("case"); 
-
+            match(':'); 
 
             }
 
@@ -2176,10 +2178,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:108:8: ( 'for' )
-            // InternalPerspectiveDsl.g:108:10: 'for'
+            // InternalPerspectiveDsl.g:108:8: ( 'default' )
+            // InternalPerspectiveDsl.g:108:10: 'default'
             {
-            match("for"); 
+            match("default"); 
 
 
             }
@@ -2197,10 +2199,10 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:109:8: ( 'while' )
-            // InternalPerspectiveDsl.g:109:10: 'while'
+            // InternalPerspectiveDsl.g:109:8: ( 'case' )
+            // InternalPerspectiveDsl.g:109:10: 'case'
             {
-            match("while"); 
+            match("case"); 
 
 
             }
@@ -2218,10 +2220,10 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:110:8: ( 'do' )
-            // InternalPerspectiveDsl.g:110:10: 'do'
+            // InternalPerspectiveDsl.g:110:8: ( 'for' )
+            // InternalPerspectiveDsl.g:110:10: 'for'
             {
-            match("do"); 
+            match("for"); 
 
 
             }
@@ -2239,10 +2241,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:111:8: ( 'new' )
-            // InternalPerspectiveDsl.g:111:10: 'new'
+            // InternalPerspectiveDsl.g:111:8: ( 'while' )
+            // InternalPerspectiveDsl.g:111:10: 'while'
             {
-            match("new"); 
+            match("while"); 
 
 
             }
@@ -2260,10 +2262,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:112:8: ( 'null' )
-            // InternalPerspectiveDsl.g:112:10: 'null'
+            // InternalPerspectiveDsl.g:112:8: ( 'do' )
+            // InternalPerspectiveDsl.g:112:10: 'do'
             {
-            match("null"); 
+            match("do"); 
 
 
             }
@@ -2281,10 +2283,10 @@
         try {
             int _type = T__115;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:113:8: ( 'typeof' )
-            // InternalPerspectiveDsl.g:113:10: 'typeof'
+            // InternalPerspectiveDsl.g:113:8: ( 'new' )
+            // InternalPerspectiveDsl.g:113:10: 'new'
             {
-            match("typeof"); 
+            match("new"); 
 
 
             }
@@ -2302,10 +2304,10 @@
         try {
             int _type = T__116;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:114:8: ( 'throw' )
-            // InternalPerspectiveDsl.g:114:10: 'throw'
+            // InternalPerspectiveDsl.g:114:8: ( 'null' )
+            // InternalPerspectiveDsl.g:114:10: 'null'
             {
-            match("throw"); 
+            match("null"); 
 
 
             }
@@ -2323,10 +2325,10 @@
         try {
             int _type = T__117;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:115:8: ( 'return' )
-            // InternalPerspectiveDsl.g:115:10: 'return'
+            // InternalPerspectiveDsl.g:115:8: ( 'typeof' )
+            // InternalPerspectiveDsl.g:115:10: 'typeof'
             {
-            match("return"); 
+            match("typeof"); 
 
 
             }
@@ -2344,10 +2346,10 @@
         try {
             int _type = T__118;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:116:8: ( 'try' )
-            // InternalPerspectiveDsl.g:116:10: 'try'
+            // InternalPerspectiveDsl.g:116:8: ( 'throw' )
+            // InternalPerspectiveDsl.g:116:10: 'throw'
             {
-            match("try"); 
+            match("throw"); 
 
 
             }
@@ -2365,10 +2367,10 @@
         try {
             int _type = T__119;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:117:8: ( 'finally' )
-            // InternalPerspectiveDsl.g:117:10: 'finally'
+            // InternalPerspectiveDsl.g:117:8: ( 'return' )
+            // InternalPerspectiveDsl.g:117:10: 'return'
             {
-            match("finally"); 
+            match("return"); 
 
 
             }
@@ -2386,10 +2388,10 @@
         try {
             int _type = T__120;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:118:8: ( 'synchronized' )
-            // InternalPerspectiveDsl.g:118:10: 'synchronized'
+            // InternalPerspectiveDsl.g:118:8: ( 'try' )
+            // InternalPerspectiveDsl.g:118:10: 'try'
             {
-            match("synchronized"); 
+            match("try"); 
 
 
             }
@@ -2407,10 +2409,10 @@
         try {
             int _type = T__121;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:119:8: ( 'catch' )
-            // InternalPerspectiveDsl.g:119:10: 'catch'
+            // InternalPerspectiveDsl.g:119:8: ( 'finally' )
+            // InternalPerspectiveDsl.g:119:10: 'finally'
             {
-            match("catch"); 
+            match("finally"); 
 
 
             }
@@ -2428,10 +2430,11 @@
         try {
             int _type = T__122;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:120:8: ( '?' )
-            // InternalPerspectiveDsl.g:120:10: '?'
+            // InternalPerspectiveDsl.g:120:8: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:120:10: 'synchronized'
             {
-            match('?'); 
+            match("synchronized"); 
+
 
             }
 
@@ -2448,10 +2451,11 @@
         try {
             int _type = T__123;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:121:8: ( '&' )
-            // InternalPerspectiveDsl.g:121:10: '&'
+            // InternalPerspectiveDsl.g:121:8: ( 'catch' )
+            // InternalPerspectiveDsl.g:121:10: 'catch'
             {
-            match('&'); 
+            match("catch"); 
+
 
             }
 
@@ -2468,11 +2472,10 @@
         try {
             int _type = T__124;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:122:8: ( 'describedBy' )
-            // InternalPerspectiveDsl.g:122:10: 'describedBy'
+            // InternalPerspectiveDsl.g:122:8: ( '?' )
+            // InternalPerspectiveDsl.g:122:10: '?'
             {
-            match("describedBy"); 
-
+            match('?'); 
 
             }
 
@@ -2489,11 +2492,10 @@
         try {
             int _type = T__125;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:123:8: ( 'isClosable' )
-            // InternalPerspectiveDsl.g:123:10: 'isClosable'
+            // InternalPerspectiveDsl.g:123:8: ( '&' )
+            // InternalPerspectiveDsl.g:123:10: '&'
             {
-            match("isClosable"); 
-
+            match('&'); 
 
             }
 
@@ -2510,10 +2512,10 @@
         try {
             int _type = T__126;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:124:8: ( 'ns' )
-            // InternalPerspectiveDsl.g:124:10: 'ns'
+            // InternalPerspectiveDsl.g:124:8: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:124:10: 'describedBy'
             {
-            match("ns"); 
+            match("describedBy"); 
 
 
             }
@@ -2531,10 +2533,10 @@
         try {
             int _type = T__127;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:125:8: ( '::' )
-            // InternalPerspectiveDsl.g:125:10: '::'
+            // InternalPerspectiveDsl.g:125:8: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:125:10: 'isClosable'
             {
-            match("::"); 
+            match("isClosable"); 
 
 
             }
@@ -2552,10 +2554,10 @@
         try {
             int _type = T__128;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:126:8: ( '?.' )
-            // InternalPerspectiveDsl.g:126:10: '?.'
+            // InternalPerspectiveDsl.g:126:8: ( 'ns' )
+            // InternalPerspectiveDsl.g:126:10: 'ns'
             {
-            match("?."); 
+            match("ns"); 
 
 
             }
@@ -2573,10 +2575,11 @@
         try {
             int _type = T__129;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:127:8: ( '|' )
-            // InternalPerspectiveDsl.g:127:10: '|'
+            // InternalPerspectiveDsl.g:127:8: ( '::' )
+            // InternalPerspectiveDsl.g:127:10: '::'
             {
-            match('|'); 
+            match("::"); 
+
 
             }
 
@@ -2593,10 +2596,10 @@
         try {
             int _type = T__130;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:128:8: ( 'var' )
-            // InternalPerspectiveDsl.g:128:10: 'var'
+            // InternalPerspectiveDsl.g:128:8: ( '?.' )
+            // InternalPerspectiveDsl.g:128:10: '?.'
             {
-            match("var"); 
+            match("?."); 
 
 
             }
@@ -2614,8 +2617,49 @@
         try {
             int _type = T__131;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:129:8: ( 'true' )
-            // InternalPerspectiveDsl.g:129:10: 'true'
+            // InternalPerspectiveDsl.g:129:8: ( '|' )
+            // InternalPerspectiveDsl.g:129:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:130:8: ( 'var' )
+            // InternalPerspectiveDsl.g:130:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:131:8: ( 'true' )
+            // InternalPerspectiveDsl.g:131:10: 'true'
             {
             match("true"); 
 
@@ -2628,17 +2672,17 @@
         finally {
         }
     }
-    // $ANTLR end "T__131"
+    // $ANTLR end "T__133"
 
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // 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:24977:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalPerspectiveDsl.g:24977:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalPerspectiveDsl.g:24877:12: ( '0x' | '0X' )
+            // InternalPerspectiveDsl.g:24977:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2666,7 +2710,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24877:13: '0x'
+                    // InternalPerspectiveDsl.g:24977:13: '0x'
                     {
                     match("0x"); 
 
@@ -2674,7 +2718,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:24877:18: '0X'
+                    // InternalPerspectiveDsl.g:24977:18: '0X'
                     {
                     match("0X"); 
 
@@ -2684,7 +2728,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:24877:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalPerspectiveDsl.g:24977:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2722,7 +2766,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalPerspectiveDsl.g:24877:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:24977:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2731,10 +2775,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24877:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:24977:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalPerspectiveDsl.g:24877:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:24977:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2752,7 +2796,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:24877:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalPerspectiveDsl.g:24977:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2776,7 +2820,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:24877:84: ( 'l' | 'L' )
+                            // InternalPerspectiveDsl.g:24977:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2815,11 +2859,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24879:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalPerspectiveDsl.g:24879:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:24979:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalPerspectiveDsl.g:24979:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalPerspectiveDsl.g:24879:21: ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:24979:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2868,11 +2912,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // 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' ) )?
+            // InternalPerspectiveDsl.g:24981:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalPerspectiveDsl.g:24981:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalPerspectiveDsl.g:24881:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalPerspectiveDsl.g:24981:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2881,7 +2925,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24881:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalPerspectiveDsl.g:24981:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2892,7 +2936,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalPerspectiveDsl.g:24881:36: ( '+' | '-' )?
+                    // InternalPerspectiveDsl.g:24981:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2925,7 +2969,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:24881:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:24981:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2937,7 +2981,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24881:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalPerspectiveDsl.g:24981:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2961,7 +3005,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:24881:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalPerspectiveDsl.g:24981: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();
@@ -2994,10 +3038,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // 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:24983:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalPerspectiveDsl.g:24983:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalPerspectiveDsl.g:24883:11: ( '^' )?
+            // InternalPerspectiveDsl.g:24983:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -3006,7 +3050,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24883:11: '^'
+                    // InternalPerspectiveDsl.g:24983:11: '^'
                     {
                     match('^'); 
 
@@ -3024,7 +3068,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalPerspectiveDsl.g:24883:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:24983:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -3073,10 +3117,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24885:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalPerspectiveDsl.g:24885:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:24985:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalPerspectiveDsl.g:24985:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalPerspectiveDsl.g:24885:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:24985:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -3094,10 +3138,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24885:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalPerspectiveDsl.g:24985:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalPerspectiveDsl.g:24885:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalPerspectiveDsl.g:24985:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -3113,7 +3157,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:24885:21: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:24985:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3121,7 +3165,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:24885:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalPerspectiveDsl.g:24985:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3141,7 +3185,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:24885:44: ( '\"' )?
+                    // InternalPerspectiveDsl.g:24985:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -3150,7 +3194,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:24885:44: '\"'
+                            // InternalPerspectiveDsl.g:24985:44: '\"'
                             {
                             match('\"'); 
 
@@ -3163,10 +3207,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:24885:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalPerspectiveDsl.g:24985:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalPerspectiveDsl.g:24885:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalPerspectiveDsl.g:24985:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -3182,7 +3226,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:24885:55: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:24985:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3190,7 +3234,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:24885:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalPerspectiveDsl.g:24985:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3210,7 +3254,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:24885:79: ( '\\'' )?
+                    // InternalPerspectiveDsl.g:24985:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -3219,7 +3263,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:24885:79: '\\''
+                            // InternalPerspectiveDsl.g:24985:79: '\\''
                             {
                             match('\''); 
 
@@ -3250,12 +3294,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24887:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalPerspectiveDsl.g:24887:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalPerspectiveDsl.g:24987:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalPerspectiveDsl.g:24987:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalPerspectiveDsl.g:24887:24: ( options {greedy=false; } : . )*
+            // InternalPerspectiveDsl.g:24987:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -3280,7 +3324,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:24887:52: .
+            	    // InternalPerspectiveDsl.g:24987:52: .
             	    {
             	    matchAny(); 
 
@@ -3310,12 +3354,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24889:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalPerspectiveDsl.g:24889:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:24989:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalPerspectiveDsl.g:24989:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalPerspectiveDsl.g:24889:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalPerspectiveDsl.g:24989:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -3328,7 +3372,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:24889:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalPerspectiveDsl.g:24989: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();
@@ -3348,7 +3392,7 @@
                 }
             } while (true);
 
-            // InternalPerspectiveDsl.g:24889:40: ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:24989:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -3357,9 +3401,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:24889:41: ( '\\r' )? '\\n'
+                    // InternalPerspectiveDsl.g:24989:41: ( '\\r' )? '\\n'
                     {
-                    // InternalPerspectiveDsl.g:24889:41: ( '\\r' )?
+                    // InternalPerspectiveDsl.g:24989:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3368,7 +3412,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:24889:41: '\\r'
+                            // InternalPerspectiveDsl.g:24989:41: '\\r'
                             {
                             match('\r'); 
 
@@ -3400,10 +3444,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24891:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalPerspectiveDsl.g:24891:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:24991:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalPerspectiveDsl.g:24991:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalPerspectiveDsl.g:24891:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:24991:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3457,8 +3501,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:24893:16: ( . )
-            // InternalPerspectiveDsl.g:24893:18: .
+            // InternalPerspectiveDsl.g:24993:16: ( . )
+            // InternalPerspectiveDsl.g:24993:18: .
             {
             matchAny(); 
 
@@ -3473,8 +3517,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 | 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;
+        // 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 | T__132 | T__133 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=130;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -4311,63 +4355,77 @@
                 }
                 break;
             case 120 :
-                // InternalPerspectiveDsl.g:1:756: RULE_HEX
+                // InternalPerspectiveDsl.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // InternalPerspectiveDsl.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // InternalPerspectiveDsl.g:1:770: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 121 :
-                // InternalPerspectiveDsl.g:1:765: RULE_INT
+            case 123 :
+                // InternalPerspectiveDsl.g:1:779: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 122 :
-                // InternalPerspectiveDsl.g:1:774: RULE_DECIMAL
+            case 124 :
+                // InternalPerspectiveDsl.g:1:788: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 123 :
-                // InternalPerspectiveDsl.g:1:787: RULE_ID
+            case 125 :
+                // InternalPerspectiveDsl.g:1:801: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 124 :
-                // InternalPerspectiveDsl.g:1:795: RULE_STRING
+            case 126 :
+                // InternalPerspectiveDsl.g:1:809: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 125 :
-                // InternalPerspectiveDsl.g:1:807: RULE_ML_COMMENT
+            case 127 :
+                // InternalPerspectiveDsl.g:1:821: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 126 :
-                // InternalPerspectiveDsl.g:1:823: RULE_SL_COMMENT
+            case 128 :
+                // InternalPerspectiveDsl.g:1:837: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 127 :
-                // InternalPerspectiveDsl.g:1:839: RULE_WS
+            case 129 :
+                // InternalPerspectiveDsl.g:1:853: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 128 :
-                // InternalPerspectiveDsl.g:1:847: RULE_ANY_OTHER
+            case 130 :
+                // InternalPerspectiveDsl.g:1:861: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -4381,17 +4439,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\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";
+        "\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\u009a\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\14\uffff\1\u009a\11\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\11\130\1\u0139\5\130\1\uffff\2\130\1\u0142\3\130\1\uffff\10\130\1\uffff\1\u014e\6\130\1\u0155\1\u0156\6\130\1\u015d\4\130\1\u0162\1\uffff\1\u0163\1\130\1\uffff\3\130\1\uffff\1\130\1\u016a\10\130\1\uffff\2\130\1\u0175\5\130\1\uffff\10\130\1\u0183\1\130\1\u0185\1\uffff\5\130\1\u018b\2\uffff\1\u018c\1\130\1\u018e\3\130\1\uffff\3\130\1\u0195\2\uffff\5\130\1\u019b\1\uffff\1\130\1\u019e\1\u019f\2\130\1\u01a2\1\u01a3\3\130\1\uffff\15\130\1\uffff\1\u01b4\1\uffff\3\130\1\u01b8\1\u01b9\2\uffff\1\u01ba\1\uffff\4\130\1\u01bf\1\130\1\uffff\1\130\1\u01c2\3\130\1\uffff\2\130\2\uffff\2\130\2\uffff\1\u01ca\3\130\1\u01ce\1\130\1\u01d0\2\130\1\u01d3\3\130\1\u01d7\2\130\1\uffff\3\130\3\uffff\1\u01dd\2\130\1\u01e0\1\uffff\1\u01e1\1\u01e2\1\uffff\7\130\1\uffff\3\130\1\uffff\1\130\1\uffff\2\130\1\uffff\1\u01f0\2\130\1\uffff\1\u01f3\4\130\1\uffff\2\130\3\uffff\1\u01fa\12\130\1\u0205\1\130\1\uffff\2\130\1\uffff\6\130\1\uffff\6\130\1\u0215\1\u0216\1\130\1\u0218\1\uffff\3\130\1\u021c\1\130\1\u021e\7\130\1\u0226\1\u0228\2\uffff\1\130\1\uffff\1\u022a\2\130\1\uffff\1\u022d\1\uffff\1\130\1\u022f\1\130\1\u0231\3\130\1\uffff\1\u0235\1\uffff\1\130\1\uffff\2\130\1\uffff\1\130\1\uffff\1\130\1\uffff\1\u023b\1\u023c\1\130\1\uffff\1\u023e\1\u023f\1\130\1\u0241\1\130\2\uffff\1\130\2\uffff\1\u0244\1\uffff\1\130\1\u0246\1\uffff\1\u0247\2\uffff";
     static final String DFA21_eofS =
-        "\u0246\uffff";
+        "\u0248\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\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";
+        "\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\156\1\151\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\14\uffff\1\60\11\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\2\143\1\164\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\150\1\143\1\162\1\44\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\162\1\150\1\164\1\122\1\uffff\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\2\157\2\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\156\2\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\2\44\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\uffff\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\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";
+        "\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\156\1\151\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\14\uffff\1\154\11\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\2\143\1\164\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\150\1\143\1\162\1\172\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\162\1\150\1\164\1\122\1\uffff\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\2\157\2\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\156\2\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\2\172\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\uffff\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\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";
+        "\25\uffff\1\52\1\53\13\uffff\1\124\1\125\1\126\1\127\1\130\1\131\1\132\1\133\4\uffff\1\175\2\176\1\u0081\1\u0082\1\uffff\1\23\1\1\1\2\1\167\1\3\1\161\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\177\1\u0080\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\166\1\160\3\uffff\1\175\27\uffff\1\52\1\53\35\uffff\1\124\1\125\1\126\1\127\1\130\1\131\1\132\1\133\1\165\1\141\1\172\1\173\1\uffff\1\174\1\176\1\u0081\1\13\1\11\1\14\1\12\1\21\1\22\23\uffff\1\114\1\136\16\uffff\1\135\12\uffff\1\110\14\uffff\1\146\10\uffff\1\164\1\40\1\170\25\uffff\1\144\6\uffff\1\123\10\uffff\1\154\25\uffff\1\147\2\uffff\1\73\3\uffff\1\137\12\uffff\1\57\10\uffff\1\71\13\uffff\1\171\6\uffff\1\111\1\143\6\uffff\1\106\4\uffff\1\121\1\150\6\uffff\1\45\12\uffff\1\46\15\uffff\1\120\1\uffff\1\152\5\uffff\1\101\1\157\1\uffff\1\115\6\uffff\1\145\5\uffff\1\42\2\uffff\1\76\1\113\2\uffff\1\140\1\43\20\uffff\1\151\3\uffff\1\102\1\153\1\105\4\uffff\1\107\2\uffff\1\41\7\uffff\1\72\3\uffff\1\155\1\uffff\1\51\2\uffff\1\55\3\uffff\1\61\5\uffff\1\142\2\uffff\1\122\1\112\1\50\15\uffff\1\56\2\uffff\1\104\6\uffff\1\44\12\uffff\1\67\17\uffff\1\134\1\163\1\uffff\1\47\3\uffff\1\74\1\uffff\1\103\7\uffff\1\66\1\uffff\1\70\1\uffff\1\54\2\uffff\1\64\1\uffff\1\162\1\uffff\1\62\3\uffff\1\156\5\uffff\1\100\1\63\1\uffff\1\116\1\60\1\uffff\1\77\2\uffff\1\75\1\uffff\1\65\1\117";
     static final String DFA21_specialS =
-        "\1\0\u0245\uffff}>";
+        "\1\0\u0247\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",
@@ -4409,7 +4467,7 @@
             "\1\123\13\uffff\1\122",
             "\1\125\3\uffff\1\126\3\uffff\1\127",
             "\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\137\3\uffff\1\140\12\uffff\1\141\3\uffff\1\135\1\136\1\uffff\1\143\1\uffff\1\142",
             "\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",
@@ -4436,8 +4494,8 @@
             "",
             "",
             "\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",
+            "\12\u009b\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099\6\uffff\1\u009b\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099",
+            "\12\u009b\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009b\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",
             "",
             "",
@@ -4547,8 +4605,8 @@
             "",
             "",
             "",
-            "\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",
             "",
+            "\12\u009b\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009b\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
             "",
             "",
             "",
@@ -4644,21 +4702,20 @@
             "\1\u0135",
             "\1\u0136",
             "\1\u0137",
-            "\1\u0138",
-            "\1\u0139",
+            "\1\130\13\uffff\12\130\7\uffff\24\130\1\u0138\5\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u013a",
             "\1\u013b",
             "\1\u013c",
             "\1\u013d",
-            "",
             "\1\u013e",
+            "",
             "\1\u013f",
-            "\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\u0140",
+            "\1\130\13\uffff\12\130\7\uffff\22\130\1\u0141\7\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u0143",
             "\1\u0144",
-            "",
             "\1\u0145",
+            "",
             "\1\u0146",
             "\1\u0147",
             "\1\u0148",
@@ -4666,39 +4723,39 @@
             "\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\u014e",
             "\1\u014f",
             "\1\u0150",
             "\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",
             "\1\u0158",
             "\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\u0161",
             "\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\u0163",
+            "\1\u0164",
             "",
-            "\1\u0164\16\uffff\1\u0165",
-            "\1\u0166",
+            "\1\u0165\16\uffff\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\u016c",
             "\1\u016d",
@@ -4707,15 +4764,16 @@
             "\1\u0170",
             "\1\u0171",
             "\1\u0172",
+            "",
             "\1\u0173",
+            "\1\u0174",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u0175",
             "\1\u0176",
             "\1\u0177",
             "\1\u0178",
             "\1\u0179",
-            "",
             "\1\u017a",
+            "",
             "\1\u017b",
             "\1\u017c",
             "\1\u017d",
@@ -4723,50 +4781,50 @@
             "\1\u017f",
             "\1\u0180",
             "\1\u0181",
+            "\1\u0182",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u0183",
+            "\1\u0184",
             "\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\u0188",
             "\1\u0189",
+            "\1\u018a",
             "\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\u018c",
+            "\1\u018d",
             "\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\u019a",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "",
-            "\1\u019b",
-            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\4\130\1\u019c\25\130",
+            "\1\u019c",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\4\130\1\u019d\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\u01a0",
             "\1\u01a1",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u01a3",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "\1\u01a4",
             "\1\u01a5",
-            "",
             "\1\u01a6",
+            "",
             "\1\u01a7",
             "\1\u01a8",
             "\1\u01a9",
@@ -4779,104 +4837,104 @@
             "\1\u01b0",
             "\1\u01b1",
             "\1\u01b2",
+            "\1\u01b3",
             "",
             "\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\u01b7",
             "\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\u01ba",
             "\1\u01bb",
             "\1\u01bc",
             "\1\u01bd",
+            "\1\u01be",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u01bf",
-            "",
             "\1\u01c0",
+            "",
+            "\1\u01c1",
             "\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\u01cf",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u01d0",
             "\1\u01d1",
+            "\1\u01d2",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\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\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",
             "\1\u01e7",
             "\1\u01e8",
-            "",
             "\1\u01e9",
+            "",
             "\1\u01ea",
             "\1\u01eb",
-            "",
             "\1\u01ec",
             "",
             "\1\u01ed",
+            "",
             "\1\u01ee",
+            "\1\u01ef",
             "",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u01f0",
             "\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\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\u01fc",
             "\1\u01fd",
@@ -4886,90 +4944,92 @@
             "\1\u0201",
             "\1\u0202",
             "\1\u0203",
+            "\1\u0204",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u0205",
-            "",
             "\1\u0206",
-            "\1\u0207",
             "",
+            "\1\u0207",
             "\1\u0208",
+            "",
             "\1\u0209",
             "\1\u020a",
             "\1\u020b",
             "\1\u020c",
             "\1\u020d",
-            "",
             "\1\u020e",
+            "",
             "\1\u020f",
             "\1\u0210",
             "\1\u0211",
             "\1\u0212",
             "\1\u0213",
+            "\1\u0214",
             "\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\u0217",
             "\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\u021b",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u021c",
+            "\1\u021d",
             "\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\u0225",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
-            "\1\u0226",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\3\130\1\u0227\26\130",
             "",
             "",
-            "\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\u022b",
             "\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\u0232",
+            "\1\u0233",
             "\1\u0234",
             "",
-            "\1\u0235",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "",
             "\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\u0239",
+            "",
+            "\1\u023a",
             "",
             "\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\u023d",
+            "",
+            "\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\u0240",
+            "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
+            "\1\u0242",
             "",
             "",
-            "\1\u0241",
+            "\1\u0243",
             "",
             "",
             "\1\130\13\uffff\12\130\7\uffff\32\130\4\uffff\1\130\1\uffff\32\130",
             "",
-            "\1\u0243",
+            "\1\u0245",
             "\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",
@@ -5007,7 +5067,7 @@
             this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | 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 d93db7c..912ae5e 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'", "'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'"
+        "<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'", "'icon'", "'accessibility'", "'toolbar'", "'eventManager'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'synchronize'", "'part'", "'iconURI'", "'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;
@@ -53,6 +53,8 @@
     public static final int T__52=52;
     public static final int T__53=53;
     public static final int T__54=54;
+    public static final int T__133=133;
+    public static final int T__132=132;
     public static final int T__60=60;
     public static final int T__61=61;
     public static final int RULE_ID=4;
@@ -9585,7 +9587,7 @@
                 alt3=2;
                 }
                 break;
-            case 68:
+            case 69:
                 {
                 alt3=3;
                 }
@@ -9695,82 +9697,82 @@
             // 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 72:
+            case 74:
                 {
                 alt4=1;
                 }
                 break;
-            case 73:
+            case 75:
                 {
                 alt4=2;
                 }
                 break;
-            case 75:
+            case 77:
                 {
                 alt4=3;
                 }
                 break;
-            case 76:
+            case 78:
                 {
                 alt4=4;
                 }
                 break;
-            case 77:
+            case 79:
                 {
                 alt4=5;
                 }
                 break;
-            case 78:
+            case 80:
                 {
                 alt4=6;
                 }
                 break;
-            case 79:
+            case 81:
                 {
                 alt4=7;
                 }
                 break;
-            case 74:
+            case 76:
                 {
                 alt4=8;
                 }
                 break;
-            case 84:
+            case 86:
                 {
                 alt4=9;
                 }
                 break;
-            case 85:
+            case 87:
                 {
                 alt4=10;
                 }
                 break;
-            case 89:
+            case 91:
                 {
                 alt4=11;
                 }
                 break;
-            case 80:
+            case 82:
                 {
                 alt4=12;
                 }
                 break;
-            case 81:
+            case 83:
                 {
                 alt4=13;
                 }
                 break;
-            case 90:
+            case 92:
                 {
                 alt4=14;
                 }
                 break;
-            case 91:
+            case 93:
                 {
                 alt4=15;
                 }
                 break;
-            case 92:
+            case 94:
                 {
                 alt4=16;
                 }
@@ -10676,10 +10678,10 @@
             int alt10=2;
             int LA10_0 = input.LA(1);
 
-            if ( (LA10_0==95) ) {
+            if ( (LA10_0==97) ) {
                 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==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) ) {
+            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==98||(LA10_0>=102 && LA10_0<=103)||LA10_0==106||LA10_0==108||(LA10_0>=112 && LA10_0<=120)||LA10_0==122||LA10_0==133) ) {
                 alt10=2;
             }
             else {
@@ -10770,7 +10772,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==94||(LA11_1>=96 && LA11_1<=121)||(LA11_1>=127 && LA11_1<=128)||(LA11_1>=130 && LA11_1<=131)) ) {
+                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==96||(LA11_1>=98 && LA11_1<=123)||(LA11_1>=129 && LA11_1<=130)||(LA11_1>=132 && LA11_1<=133)) ) {
                     alt11=2;
                 }
                 else {
@@ -10786,7 +10788,7 @@
                 {
                 int LA11_2 = input.LA(2);
 
-                if ( (LA11_2==EOF||(LA11_2>=RULE_ID && LA11_2<=RULE_DECIMAL)||(LA11_2>=14 && LA11_2<=50)||(LA11_2>=54 && LA11_2<=55)||LA11_2==94||(LA11_2>=96 && LA11_2<=121)||(LA11_2>=127 && LA11_2<=128)||(LA11_2>=130 && LA11_2<=131)) ) {
+                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==96||(LA11_2>=98 && LA11_2<=123)||(LA11_2>=129 && LA11_2<=130)||(LA11_2>=132 && LA11_2<=133)) ) {
                     alt11=2;
                 }
                 else if ( (LA11_2==13) ) {
@@ -10808,7 +10810,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==94||(LA11_3>=96 && LA11_3<=121)||(LA11_3>=127 && LA11_3<=128)||(LA11_3>=130 && LA11_3<=131)) ) {
+                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==96||(LA11_3>=98 && LA11_3<=123)||(LA11_3>=129 && LA11_3<=130)||(LA11_3>=132 && LA11_3<=133)) ) {
                     alt11=2;
                 }
                 else {
@@ -10824,12 +10826,12 @@
                 {
                 int LA11_4 = input.LA(2);
 
-                if ( (LA11_4==13) ) {
-                    alt11=1;
-                }
-                else if ( (LA11_4==EOF||(LA11_4>=RULE_ID && LA11_4<=RULE_DECIMAL)||(LA11_4>=14 && LA11_4<=50)||(LA11_4>=54 && LA11_4<=55)||LA11_4==94||(LA11_4>=96 && LA11_4<=121)||(LA11_4>=127 && LA11_4<=128)||(LA11_4>=130 && LA11_4<=131)) ) {
+                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==96||(LA11_4>=98 && LA11_4<=123)||(LA11_4>=129 && LA11_4<=130)||(LA11_4>=132 && LA11_4<=133)) ) {
                     alt11=2;
                 }
+                else if ( (LA11_4==13) ) {
+                    alt11=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -10846,7 +10848,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==94||(LA11_5>=96 && LA11_5<=121)||(LA11_5>=127 && LA11_5<=128)||(LA11_5>=130 && LA11_5<=131)) ) {
+                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==96||(LA11_5>=98 && LA11_5<=123)||(LA11_5>=129 && LA11_5<=130)||(LA11_5>=132 && LA11_5<=133)) ) {
                     alt11=2;
                 }
                 else {
@@ -10869,13 +10871,11 @@
             case 49:
             case 50:
             case 54:
-            case 96:
-            case 100:
-            case 101:
-            case 104:
+            case 98:
+            case 102:
+            case 103:
             case 106:
-            case 110:
-            case 111:
+            case 108:
             case 112:
             case 113:
             case 114:
@@ -10883,8 +10883,10 @@
             case 116:
             case 117:
             case 118:
+            case 119:
             case 120:
-            case 131:
+            case 122:
+            case 133:
                 {
                 alt11=2;
                 }
@@ -11340,7 +11342,7 @@
             int alt14=2;
             int LA14_0 = input.LA(1);
 
-            if ( (LA14_0==102) ) {
+            if ( (LA14_0==104) ) {
                 alt14=1;
             }
             else if ( ((LA14_0>=25 && LA14_0<=27)) ) {
@@ -11448,7 +11450,7 @@
                 {
                 int LA15_2 = input.LA(2);
 
-                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) ) {
+                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==98||(LA15_2>=102 && LA15_2<=103)||LA15_2==106||LA15_2==108||(LA15_2>=112 && LA15_2<=120)||LA15_2==122||LA15_2==133) ) {
                     alt15=4;
                 }
                 else if ( (LA15_2==13) ) {
@@ -11823,12 +11825,12 @@
             if ( (LA17_0==26) ) {
                 int LA17_1 = input.LA(2);
 
-                if ( (LA17_1==26) ) {
-                    alt17=1;
-                }
-                else if ( (LA17_1==EOF||(LA17_1>=RULE_ID && LA17_1<=RULE_DECIMAL)||LA17_1==27||(LA17_1>=34 && LA17_1<=35)||LA17_1==40||(LA17_1>=45 && LA17_1<=50)||LA17_1==54||LA17_1==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) ) {
+                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==98||(LA17_1>=102 && LA17_1<=103)||LA17_1==106||LA17_1==108||(LA17_1>=112 && LA17_1<=120)||LA17_1==122||LA17_1==133) ) {
                     alt17=2;
                 }
+                else if ( (LA17_1==26) ) {
+                    alt17=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -12259,7 +12261,7 @@
             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==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) ) {
+            else if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_DECIMAL)||LA21_0==27||(LA21_0>=45 && LA21_0<=50)||LA21_0==54||LA21_0==98||(LA21_0>=102 && LA21_0<=103)||LA21_0==106||LA21_0==108||(LA21_0>=112 && LA21_0<=120)||LA21_0==122||LA21_0==133) ) {
                 alt21=2;
             }
             else {
@@ -12627,7 +12629,7 @@
             if ( (LA25_0==43) ) {
                 alt25=1;
             }
-            else if ( (LA25_0==127) ) {
+            else if ( (LA25_0==129) ) {
                 alt25=2;
             }
             else {
@@ -12718,12 +12720,12 @@
                 alt26=1;
                 }
                 break;
-            case 128:
+            case 130:
                 {
                 alt26=2;
                 }
                 break;
-            case 127:
+            case 129:
                 {
                 alt26=3;
                 }
@@ -13312,18 +13314,18 @@
             // InternalPerspectiveDsl.g:3687:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
             int alt29=7;
             switch ( input.LA(1) ) {
-            case 100:
+            case 102:
                 {
                 alt29=1;
                 }
                 break;
-            case 101:
+            case 103:
                 {
                 alt29=2;
                 }
                 break;
             case 50:
-            case 131:
+            case 133:
                 {
                 alt29=3;
                 }
@@ -13335,7 +13337,7 @@
                 alt29=4;
                 }
                 break;
-            case 114:
+            case 116:
                 {
                 alt29=5;
                 }
@@ -13345,7 +13347,7 @@
                 alt29=6;
                 }
                 break;
-            case 115:
+            case 117:
                 {
                 alt29=7;
                 }
@@ -13554,15 +13556,15 @@
             int alt30=2;
             int LA30_0 = input.LA(1);
 
-            if ( (LA30_0==100) ) {
+            if ( (LA30_0==102) ) {
                 int LA30_1 = input.LA(2);
 
-                if ( (LA30_1==54) ) {
-                    alt30=1;
-                }
-                else if ( (LA30_1==101) ) {
+                if ( (LA30_1==103) ) {
                     alt30=2;
                 }
+                else if ( (LA30_1==54) ) {
+                    alt30=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
@@ -13739,10 +13741,10 @@
             int alt32=2;
             int LA32_0 = input.LA(1);
 
-            if ( (LA32_0==107) ) {
+            if ( (LA32_0==109) ) {
                 alt32=1;
             }
-            else if ( (LA32_0==98) ) {
+            else if ( (LA32_0==100) ) {
                 alt32=2;
             }
             else {
@@ -13839,10 +13841,10 @@
             int alt33=2;
             int LA33_0 = input.LA(1);
 
-            if ( (LA33_0==44||LA33_0==130) ) {
+            if ( (LA33_0==44||LA33_0==132) ) {
                 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==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) ) {
+            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==98||(LA33_0>=102 && LA33_0<=103)||LA33_0==106||LA33_0==108||(LA33_0>=112 && LA33_0<=120)||LA33_0==122||LA33_0==133) ) {
                 alt33=2;
             }
             else {
@@ -13927,7 +13929,7 @@
             int alt34=2;
             int LA34_0 = input.LA(1);
 
-            if ( (LA34_0==130) ) {
+            if ( (LA34_0==132) ) {
                 alt34=1;
             }
             else if ( (LA34_0==44) ) {
@@ -14034,7 +14036,7 @@
                     throw nvae;
                 }
             }
-            else if ( (LA35_0==31||LA35_0==96) ) {
+            else if ( (LA35_0==31||LA35_0==98) ) {
                 alt35=1;
             }
             else {
@@ -14550,7 +14552,7 @@
             if ( (LA40_0==50) ) {
                 alt40=1;
             }
-            else if ( (LA40_0==131) ) {
+            else if ( (LA40_0==133) ) {
                 alt40=2;
             }
             else {
@@ -14637,10 +14639,10 @@
             int alt41=2;
             int LA41_0 = input.LA(1);
 
-            if ( (LA41_0==121) ) {
+            if ( (LA41_0==123) ) {
                 alt41=1;
             }
-            else if ( (LA41_0==119) ) {
+            else if ( (LA41_0==121) ) {
                 alt41=2;
             }
             else {
@@ -14990,7 +14992,7 @@
             if ( (LA45_0==RULE_ID) ) {
                 alt45=1;
             }
-            else if ( (LA45_0==31||LA45_0==96) ) {
+            else if ( (LA45_0==31||LA45_0==98) ) {
                 alt45=2;
             }
             else {
@@ -15081,10 +15083,10 @@
             int alt46=2;
             int LA46_0 = input.LA(1);
 
-            if ( (LA46_0==RULE_ID||LA46_0==31||LA46_0==96) ) {
+            if ( (LA46_0==RULE_ID||LA46_0==31||LA46_0==98) ) {
                 alt46=1;
             }
-            else if ( (LA46_0==122) ) {
+            else if ( (LA46_0==124) ) {
                 alt46=2;
             }
             else {
@@ -16459,7 +16461,7 @@
             int alt53=2;
             int LA53_0 = input.LA(1);
 
-            if ( (LA53_0==124) ) {
+            if ( (LA53_0==126) ) {
                 alt53=1;
             }
             switch (alt53) {
@@ -16829,7 +16831,7 @@
                 int alt55=2;
                 int LA55_0 = input.LA(1);
 
-                if ( (LA55_0==63||(LA55_0>=67 && LA55_0<=68)) ) {
+                if ( (LA55_0==63||LA55_0==67||LA55_0==69) ) {
                     alt55=1;
                 }
 
@@ -17593,24 +17595,24 @@
 
 
     // $ANTLR start "rule__Perspective__Group_5_0__0__Impl"
-    // InternalPerspectiveDsl.g:4838:1: rule__Perspective__Group_5_0__0__Impl : ( 'iconURI' ) ;
+    // InternalPerspectiveDsl.g:4838:1: rule__Perspective__Group_5_0__0__Impl : ( 'icon' ) ;
     public final void rule__Perspective__Group_5_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:4842:1: ( ( 'iconURI' ) )
-            // InternalPerspectiveDsl.g:4843:1: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:4842:1: ( ( 'icon' ) )
+            // InternalPerspectiveDsl.g:4843:1: ( 'icon' )
             {
-            // InternalPerspectiveDsl.g:4843:1: ( 'iconURI' )
-            // InternalPerspectiveDsl.g:4844:2: 'iconURI'
+            // InternalPerspectiveDsl.g:4843:1: ( 'icon' )
+            // InternalPerspectiveDsl.g:4844:2: 'icon'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0()); 
+               before(grammarAccess.getPerspectiveAccess().getIconKeyword_5_0_0()); 
             }
             match(input,59,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0()); 
+               after(grammarAccess.getPerspectiveAccess().getIconKeyword_5_0_0()); 
             }
 
             }
@@ -18681,7 +18683,7 @@
                 int alt57=2;
                 int LA57_0 = input.LA(1);
 
-                if ( (LA57_0==63||(LA57_0>=67 && LA57_0<=68)) ) {
+                if ( (LA57_0==63||LA57_0==67||LA57_0==69) ) {
                     alt57=1;
                 }
 
@@ -19929,7 +19931,7 @@
                 int alt58=2;
                 int LA58_0 = input.LA(1);
 
-                if ( (LA58_0==63||(LA58_0>=67 && LA58_0<=68)) ) {
+                if ( (LA58_0==63||LA58_0==67||LA58_0==69) ) {
                     alt58=1;
                 }
 
@@ -20223,7 +20225,7 @@
             // InternalPerspectiveDsl.g:5694:1: ( rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1 )
             // InternalPerspectiveDsl.g:5695:2: rule__PerspectivePartStack__Group_3_1__0__Impl rule__PerspectivePartStack__Group_3_1__1
             {
-            pushFollow(FOLLOW_15);
+            pushFollow(FOLLOW_7);
             rule__PerspectivePartStack__Group_3_1__0__Impl();
 
             state._fsp--;
@@ -20252,24 +20254,24 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:5702:1: rule__PerspectivePartStack__Group_3_1__0__Impl : ( 'spaceVolume' ) ;
+    // InternalPerspectiveDsl.g:5702:1: rule__PerspectivePartStack__Group_3_1__0__Impl : ( 'synchronize' ) ;
     public final void rule__PerspectivePartStack__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5706:1: ( ( 'spaceVolume' ) )
-            // InternalPerspectiveDsl.g:5707:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5706:1: ( ( 'synchronize' ) )
+            // InternalPerspectiveDsl.g:5707:1: ( 'synchronize' )
             {
-            // InternalPerspectiveDsl.g:5707:1: ( 'spaceVolume' )
-            // InternalPerspectiveDsl.g:5708:2: 'spaceVolume'
+            // InternalPerspectiveDsl.g:5707:1: ( 'synchronize' )
+            // InternalPerspectiveDsl.g:5708:2: 'synchronize'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0()); 
+               before(grammarAccess.getPerspectivePartStackAccess().getSynchronizeKeyword_3_1_0()); 
             }
-            match(input,66,FOLLOW_2); if (state.failed) return ;
+            match(input,68,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0()); 
+               after(grammarAccess.getPerspectivePartStackAccess().getSynchronizeKeyword_3_1_0()); 
             }
 
             }
@@ -20326,26 +20328,26 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:5728:1: rule__PerspectivePartStack__Group_3_1__1__Impl : ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:5728:1: rule__PerspectivePartStack__Group_3_1__1__Impl : ( ( rule__PerspectivePartStack__SynchronizeAssignment_3_1_1 ) ) ;
     public final void rule__PerspectivePartStack__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5732:1: ( ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:5733:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5732:1: ( ( ( rule__PerspectivePartStack__SynchronizeAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:5733:1: ( ( rule__PerspectivePartStack__SynchronizeAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:5733:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:5734:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5733:1: ( ( rule__PerspectivePartStack__SynchronizeAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:5734:2: ( rule__PerspectivePartStack__SynchronizeAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1()); 
+               before(grammarAccess.getPerspectivePartStackAccess().getSynchronizeAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:5735:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:5735:3: rule__PerspectivePartStack__ContainerDataAssignment_3_1_1
+            // InternalPerspectiveDsl.g:5735:2: ( rule__PerspectivePartStack__SynchronizeAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:5735:3: rule__PerspectivePartStack__SynchronizeAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
-            rule__PerspectivePartStack__ContainerDataAssignment_3_1_1();
+            rule__PerspectivePartStack__SynchronizeAssignment_3_1_1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -20353,7 +20355,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_1_1()); 
+               after(grammarAccess.getPerspectivePartStackAccess().getSynchronizeAssignment_3_1_1()); 
             }
 
             }
@@ -20415,24 +20417,24 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_2__0__Impl"
-    // InternalPerspectiveDsl.g:5756:1: rule__PerspectivePartStack__Group_3_2__0__Impl : ( 'accessibility' ) ;
+    // InternalPerspectiveDsl.g:5756:1: rule__PerspectivePartStack__Group_3_2__0__Impl : ( 'spaceVolume' ) ;
     public final void rule__PerspectivePartStack__Group_3_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5760:1: ( ( 'accessibility' ) )
-            // InternalPerspectiveDsl.g:5761:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5760:1: ( ( 'spaceVolume' ) )
+            // InternalPerspectiveDsl.g:5761:1: ( 'spaceVolume' )
             {
-            // InternalPerspectiveDsl.g:5761:1: ( 'accessibility' )
-            // InternalPerspectiveDsl.g:5762:2: 'accessibility'
+            // InternalPerspectiveDsl.g:5761:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5762:2: 'spaceVolume'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0()); 
+               before(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_2_0()); 
             }
-            match(input,60,FOLLOW_2); if (state.failed) return ;
+            match(input,66,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0()); 
+               after(grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_2_0()); 
             }
 
             }
@@ -20489,26 +20491,26 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__Group_3_2__1__Impl"
-    // InternalPerspectiveDsl.g:5782:1: rule__PerspectivePartStack__Group_3_2__1__Impl : ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:5782:1: rule__PerspectivePartStack__Group_3_2__1__Impl : ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_2_1 ) ) ;
     public final void rule__PerspectivePartStack__Group_3_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5786:1: ( ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) ) )
-            // InternalPerspectiveDsl.g:5787:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5786:1: ( ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:5787:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:5787:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 ) )
-            // InternalPerspectiveDsl.g:5788:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5787:1: ( ( rule__PerspectivePartStack__ContainerDataAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:5788:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_2_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1()); 
+               before(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_2_1()); 
             }
-            // InternalPerspectiveDsl.g:5789:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 )
-            // InternalPerspectiveDsl.g:5789:3: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1
+            // InternalPerspectiveDsl.g:5789:2: ( rule__PerspectivePartStack__ContainerDataAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:5789:3: rule__PerspectivePartStack__ContainerDataAssignment_3_2_1
             {
             pushFollow(FOLLOW_2);
-            rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1();
+            rule__PerspectivePartStack__ContainerDataAssignment_3_2_1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -20516,7 +20518,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_2_1()); 
+               after(grammarAccess.getPerspectivePartStackAccess().getContainerDataAssignment_3_2_1()); 
             }
 
             }
@@ -20539,15 +20541,178 @@
     // $ANTLR end "rule__PerspectivePartStack__Group_3_2__1__Impl"
 
 
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_3__0"
+    // InternalPerspectiveDsl.g:5798:1: rule__PerspectivePartStack__Group_3_3__0 : rule__PerspectivePartStack__Group_3_3__0__Impl rule__PerspectivePartStack__Group_3_3__1 ;
+    public final void rule__PerspectivePartStack__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5802:1: ( rule__PerspectivePartStack__Group_3_3__0__Impl rule__PerspectivePartStack__Group_3_3__1 )
+            // InternalPerspectiveDsl.g:5803:2: rule__PerspectivePartStack__Group_3_3__0__Impl rule__PerspectivePartStack__Group_3_3__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__PerspectivePartStack__Group_3_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group_3_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_3__0"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_3__0__Impl"
+    // InternalPerspectiveDsl.g:5810:1: rule__PerspectivePartStack__Group_3_3__0__Impl : ( 'accessibility' ) ;
+    public final void rule__PerspectivePartStack__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5814:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:5815:1: ( 'accessibility' )
+            {
+            // InternalPerspectiveDsl.g:5815:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:5816:2: 'accessibility'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_3_0()); 
+            }
+            match(input,60,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_3__1"
+    // InternalPerspectiveDsl.g:5825:1: rule__PerspectivePartStack__Group_3_3__1 : rule__PerspectivePartStack__Group_3_3__1__Impl ;
+    public final void rule__PerspectivePartStack__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5829:1: ( rule__PerspectivePartStack__Group_3_3__1__Impl )
+            // InternalPerspectiveDsl.g:5830:2: rule__PerspectivePartStack__Group_3_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__Group_3_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_3__1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__Group_3_3__1__Impl"
+    // InternalPerspectiveDsl.g:5836:1: rule__PerspectivePartStack__Group_3_3__1__Impl : ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1 ) ) ;
+    public final void rule__PerspectivePartStack__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:5840:1: ( ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1 ) ) )
+            // InternalPerspectiveDsl.g:5841:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1 ) )
+            {
+            // InternalPerspectiveDsl.g:5841:1: ( ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1 ) )
+            // InternalPerspectiveDsl.g:5842:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_3_1()); 
+            }
+            // InternalPerspectiveDsl.g:5843:2: ( rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1 )
+            // InternalPerspectiveDsl.g:5843:3: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseAssignment_3_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__Group_3_3__1__Impl"
+
+
     // $ANTLR start "rule__PerspectivePart__Group__0"
-    // InternalPerspectiveDsl.g:5798:1: rule__PerspectivePart__Group__0 : rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1 ;
+    // InternalPerspectiveDsl.g:5852:1: rule__PerspectivePart__Group__0 : rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1 ;
     public final void rule__PerspectivePart__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5802:1: ( rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1 )
-            // InternalPerspectiveDsl.g:5803:2: rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1
+            // InternalPerspectiveDsl.g:5856:1: ( rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1 )
+            // InternalPerspectiveDsl.g:5857:2: rule__PerspectivePart__Group__0__Impl rule__PerspectivePart__Group__1
             {
             pushFollow(FOLLOW_23);
             rule__PerspectivePart__Group__0__Impl();
@@ -20578,23 +20743,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__0__Impl"
-    // InternalPerspectiveDsl.g:5810:1: rule__PerspectivePart__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:5864:1: rule__PerspectivePart__Group__0__Impl : ( () ) ;
     public final void rule__PerspectivePart__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5814:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:5815:1: ( () )
+            // InternalPerspectiveDsl.g:5868:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:5869:1: ( () )
             {
-            // InternalPerspectiveDsl.g:5815:1: ( () )
-            // InternalPerspectiveDsl.g:5816:2: ()
+            // InternalPerspectiveDsl.g:5869:1: ( () )
+            // InternalPerspectiveDsl.g:5870:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getPerspectivePartAction_0()); 
             }
-            // InternalPerspectiveDsl.g:5817:2: ()
-            // InternalPerspectiveDsl.g:5817:3: 
+            // InternalPerspectiveDsl.g:5871:2: ()
+            // InternalPerspectiveDsl.g:5871:3: 
             {
             }
 
@@ -20619,14 +20784,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__1"
-    // InternalPerspectiveDsl.g:5825:1: rule__PerspectivePart__Group__1 : rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2 ;
+    // InternalPerspectiveDsl.g:5879:1: rule__PerspectivePart__Group__1 : rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2 ;
     public final void rule__PerspectivePart__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5829:1: ( rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2 )
-            // InternalPerspectiveDsl.g:5830:2: rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2
+            // InternalPerspectiveDsl.g:5883:1: ( rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2 )
+            // InternalPerspectiveDsl.g:5884:2: rule__PerspectivePart__Group__1__Impl rule__PerspectivePart__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectivePart__Group__1__Impl();
@@ -20657,22 +20822,22 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__1__Impl"
-    // InternalPerspectiveDsl.g:5837:1: rule__PerspectivePart__Group__1__Impl : ( 'part' ) ;
+    // InternalPerspectiveDsl.g:5891:1: rule__PerspectivePart__Group__1__Impl : ( 'part' ) ;
     public final void rule__PerspectivePart__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5841:1: ( ( 'part' ) )
-            // InternalPerspectiveDsl.g:5842:1: ( 'part' )
+            // InternalPerspectiveDsl.g:5895:1: ( ( 'part' ) )
+            // InternalPerspectiveDsl.g:5896:1: ( 'part' )
             {
-            // InternalPerspectiveDsl.g:5842:1: ( 'part' )
-            // InternalPerspectiveDsl.g:5843:2: 'part'
+            // InternalPerspectiveDsl.g:5896:1: ( 'part' )
+            // InternalPerspectiveDsl.g:5897:2: 'part'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getPartKeyword_1()); 
             }
-            match(input,68,FOLLOW_2); if (state.failed) return ;
+            match(input,69,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectivePartAccess().getPartKeyword_1()); 
             }
@@ -20698,14 +20863,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__2"
-    // InternalPerspectiveDsl.g:5852:1: rule__PerspectivePart__Group__2 : rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3 ;
+    // InternalPerspectiveDsl.g:5906:1: rule__PerspectivePart__Group__2 : rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3 ;
     public final void rule__PerspectivePart__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5856:1: ( rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3 )
-            // InternalPerspectiveDsl.g:5857:2: rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3
+            // InternalPerspectiveDsl.g:5910:1: ( rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3 )
+            // InternalPerspectiveDsl.g:5911:2: rule__PerspectivePart__Group__2__Impl rule__PerspectivePart__Group__3
             {
             pushFollow(FOLLOW_24);
             rule__PerspectivePart__Group__2__Impl();
@@ -20736,23 +20901,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__2__Impl"
-    // InternalPerspectiveDsl.g:5864:1: rule__PerspectivePart__Group__2__Impl : ( ( rule__PerspectivePart__ElementIdAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:5918:1: rule__PerspectivePart__Group__2__Impl : ( ( rule__PerspectivePart__ElementIdAssignment_2 ) ) ;
     public final void rule__PerspectivePart__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5868:1: ( ( ( rule__PerspectivePart__ElementIdAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:5869:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:5922:1: ( ( ( rule__PerspectivePart__ElementIdAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:5923:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:5869:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
-            // InternalPerspectiveDsl.g:5870:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:5923:1: ( ( rule__PerspectivePart__ElementIdAssignment_2 ) )
+            // InternalPerspectiveDsl.g:5924:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getElementIdAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:5871:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
-            // InternalPerspectiveDsl.g:5871:3: rule__PerspectivePart__ElementIdAssignment_2
+            // InternalPerspectiveDsl.g:5925:2: ( rule__PerspectivePart__ElementIdAssignment_2 )
+            // InternalPerspectiveDsl.g:5925:3: rule__PerspectivePart__ElementIdAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__ElementIdAssignment_2();
@@ -20787,14 +20952,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__3"
-    // InternalPerspectiveDsl.g:5879:1: rule__PerspectivePart__Group__3 : rule__PerspectivePart__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:5933:1: rule__PerspectivePart__Group__3 : rule__PerspectivePart__Group__3__Impl ;
     public final void rule__PerspectivePart__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5883:1: ( rule__PerspectivePart__Group__3__Impl )
-            // InternalPerspectiveDsl.g:5884:2: rule__PerspectivePart__Group__3__Impl
+            // InternalPerspectiveDsl.g:5937:1: ( rule__PerspectivePart__Group__3__Impl )
+            // InternalPerspectiveDsl.g:5938:2: rule__PerspectivePart__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group__3__Impl();
@@ -20820,23 +20985,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group__3__Impl"
-    // InternalPerspectiveDsl.g:5890:1: rule__PerspectivePart__Group__3__Impl : ( ( rule__PerspectivePart__UnorderedGroup_3 ) ) ;
+    // InternalPerspectiveDsl.g:5944:1: rule__PerspectivePart__Group__3__Impl : ( ( rule__PerspectivePart__UnorderedGroup_3 ) ) ;
     public final void rule__PerspectivePart__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5894:1: ( ( ( rule__PerspectivePart__UnorderedGroup_3 ) ) )
-            // InternalPerspectiveDsl.g:5895:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:5948:1: ( ( ( rule__PerspectivePart__UnorderedGroup_3 ) ) )
+            // InternalPerspectiveDsl.g:5949:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
             {
-            // InternalPerspectiveDsl.g:5895:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
-            // InternalPerspectiveDsl.g:5896:2: ( rule__PerspectivePart__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:5949:1: ( ( rule__PerspectivePart__UnorderedGroup_3 ) )
+            // InternalPerspectiveDsl.g:5950:2: ( rule__PerspectivePart__UnorderedGroup_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:5897:2: ( rule__PerspectivePart__UnorderedGroup_3 )
-            // InternalPerspectiveDsl.g:5897:3: rule__PerspectivePart__UnorderedGroup_3
+            // InternalPerspectiveDsl.g:5951:2: ( rule__PerspectivePart__UnorderedGroup_3 )
+            // InternalPerspectiveDsl.g:5951:3: rule__PerspectivePart__UnorderedGroup_3
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__UnorderedGroup_3();
@@ -20871,14 +21036,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_0__0"
-    // InternalPerspectiveDsl.g:5906:1: rule__PerspectivePart__Group_3_0__0 : rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1 ;
+    // InternalPerspectiveDsl.g:5960:1: rule__PerspectivePart__Group_3_0__0 : rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1 ;
     public final void rule__PerspectivePart__Group_3_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5910:1: ( rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1 )
-            // InternalPerspectiveDsl.g:5911:2: rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1
+            // InternalPerspectiveDsl.g:5964:1: ( rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:5965:2: rule__PerspectivePart__Group_3_0__0__Impl rule__PerspectivePart__Group_3_0__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectivePart__Group_3_0__0__Impl();
@@ -20909,17 +21074,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_0__0__Impl"
-    // InternalPerspectiveDsl.g:5918:1: rule__PerspectivePart__Group_3_0__0__Impl : ( 'spaceVolume' ) ;
+    // InternalPerspectiveDsl.g:5972:1: rule__PerspectivePart__Group_3_0__0__Impl : ( 'spaceVolume' ) ;
     public final void rule__PerspectivePart__Group_3_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5922:1: ( ( 'spaceVolume' ) )
-            // InternalPerspectiveDsl.g:5923:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5976:1: ( ( 'spaceVolume' ) )
+            // InternalPerspectiveDsl.g:5977:1: ( 'spaceVolume' )
             {
-            // InternalPerspectiveDsl.g:5923:1: ( 'spaceVolume' )
-            // InternalPerspectiveDsl.g:5924:2: 'spaceVolume'
+            // InternalPerspectiveDsl.g:5977:1: ( 'spaceVolume' )
+            // InternalPerspectiveDsl.g:5978:2: 'spaceVolume'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_0_0()); 
@@ -20950,14 +21115,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_0__1"
-    // InternalPerspectiveDsl.g:5933:1: rule__PerspectivePart__Group_3_0__1 : rule__PerspectivePart__Group_3_0__1__Impl ;
+    // InternalPerspectiveDsl.g:5987:1: rule__PerspectivePart__Group_3_0__1 : rule__PerspectivePart__Group_3_0__1__Impl ;
     public final void rule__PerspectivePart__Group_3_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5937:1: ( rule__PerspectivePart__Group_3_0__1__Impl )
-            // InternalPerspectiveDsl.g:5938:2: rule__PerspectivePart__Group_3_0__1__Impl
+            // InternalPerspectiveDsl.g:5991:1: ( rule__PerspectivePart__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:5992:2: rule__PerspectivePart__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group_3_0__1__Impl();
@@ -20983,23 +21148,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_0__1__Impl"
-    // InternalPerspectiveDsl.g:5944:1: rule__PerspectivePart__Group_3_0__1__Impl : ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:5998:1: rule__PerspectivePart__Group_3_0__1__Impl : ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) ) ;
     public final void rule__PerspectivePart__Group_3_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5948:1: ( ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) ) )
-            // InternalPerspectiveDsl.g:5949:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:6002:1: ( ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:6003:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:5949:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
-            // InternalPerspectiveDsl.g:5950:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:6003:1: ( ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:6004:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getContainerDataAssignment_3_0_1()); 
             }
-            // InternalPerspectiveDsl.g:5951:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
-            // InternalPerspectiveDsl.g:5951:3: rule__PerspectivePart__ContainerDataAssignment_3_0_1
+            // InternalPerspectiveDsl.g:6005:2: ( rule__PerspectivePart__ContainerDataAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:6005:3: rule__PerspectivePart__ContainerDataAssignment_3_0_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__ContainerDataAssignment_3_0_1();
@@ -21034,14 +21199,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_1__0"
-    // InternalPerspectiveDsl.g:5960:1: rule__PerspectivePart__Group_3_1__0 : rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:6014:1: rule__PerspectivePart__Group_3_1__0 : rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1 ;
     public final void rule__PerspectivePart__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5964:1: ( rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:5965:2: rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1
+            // InternalPerspectiveDsl.g:6018:1: ( rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:6019:2: rule__PerspectivePart__Group_3_1__0__Impl rule__PerspectivePart__Group_3_1__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectivePart__Group_3_1__0__Impl();
@@ -21072,17 +21237,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:5972:1: rule__PerspectivePart__Group_3_1__0__Impl : ( 'accessibility' ) ;
+    // InternalPerspectiveDsl.g:6026:1: rule__PerspectivePart__Group_3_1__0__Impl : ( 'accessibility' ) ;
     public final void rule__PerspectivePart__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5976:1: ( ( 'accessibility' ) )
-            // InternalPerspectiveDsl.g:5977:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:6030:1: ( ( 'accessibility' ) )
+            // InternalPerspectiveDsl.g:6031:1: ( 'accessibility' )
             {
-            // InternalPerspectiveDsl.g:5977:1: ( 'accessibility' )
-            // InternalPerspectiveDsl.g:5978:2: 'accessibility'
+            // InternalPerspectiveDsl.g:6031:1: ( 'accessibility' )
+            // InternalPerspectiveDsl.g:6032:2: 'accessibility'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_1_0()); 
@@ -21113,14 +21278,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_1__1"
-    // InternalPerspectiveDsl.g:5987:1: rule__PerspectivePart__Group_3_1__1 : rule__PerspectivePart__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:6041:1: rule__PerspectivePart__Group_3_1__1 : rule__PerspectivePart__Group_3_1__1__Impl ;
     public final void rule__PerspectivePart__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:5991:1: ( rule__PerspectivePart__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:5992:2: rule__PerspectivePart__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:6045:1: ( rule__PerspectivePart__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:6046:2: rule__PerspectivePart__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group_3_1__1__Impl();
@@ -21146,23 +21311,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:5998:1: rule__PerspectivePart__Group_3_1__1__Impl : ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:6052:1: rule__PerspectivePart__Group_3_1__1__Impl : ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) ) ;
     public final void rule__PerspectivePart__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6002:1: ( ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:6003:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:6056:1: ( ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:6057:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:6003:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:6004:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:6057:1: ( ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:6058:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:6005:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:6005:3: rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1
+            // InternalPerspectiveDsl.g:6059:2: ( rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:6059:3: rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1();
@@ -21197,14 +21362,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_2__0"
-    // InternalPerspectiveDsl.g:6014:1: rule__PerspectivePart__Group_3_2__0 : rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1 ;
+    // InternalPerspectiveDsl.g:6068:1: rule__PerspectivePart__Group_3_2__0 : rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1 ;
     public final void rule__PerspectivePart__Group_3_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6018:1: ( rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1 )
-            // InternalPerspectiveDsl.g:6019:2: rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1
+            // InternalPerspectiveDsl.g:6072:1: ( rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:6073:2: rule__PerspectivePart__Group_3_2__0__Impl rule__PerspectivePart__Group_3_2__1
             {
             pushFollow(FOLLOW_15);
             rule__PerspectivePart__Group_3_2__0__Impl();
@@ -21235,22 +21400,22 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_2__0__Impl"
-    // InternalPerspectiveDsl.g:6026:1: rule__PerspectivePart__Group_3_2__0__Impl : ( 'iconURI' ) ;
+    // InternalPerspectiveDsl.g:6080:1: rule__PerspectivePart__Group_3_2__0__Impl : ( 'iconURI' ) ;
     public final void rule__PerspectivePart__Group_3_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6030:1: ( ( 'iconURI' ) )
-            // InternalPerspectiveDsl.g:6031:1: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:6084:1: ( ( 'iconURI' ) )
+            // InternalPerspectiveDsl.g:6085:1: ( 'iconURI' )
             {
-            // InternalPerspectiveDsl.g:6031:1: ( 'iconURI' )
-            // InternalPerspectiveDsl.g:6032:2: 'iconURI'
+            // InternalPerspectiveDsl.g:6085:1: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:6086:2: 'iconURI'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0()); 
             }
-            match(input,59,FOLLOW_2); if (state.failed) return ;
+            match(input,70,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0()); 
             }
@@ -21276,14 +21441,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_2__1"
-    // InternalPerspectiveDsl.g:6041:1: rule__PerspectivePart__Group_3_2__1 : rule__PerspectivePart__Group_3_2__1__Impl ;
+    // InternalPerspectiveDsl.g:6095:1: rule__PerspectivePart__Group_3_2__1 : rule__PerspectivePart__Group_3_2__1__Impl ;
     public final void rule__PerspectivePart__Group_3_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6045:1: ( rule__PerspectivePart__Group_3_2__1__Impl )
-            // InternalPerspectiveDsl.g:6046:2: rule__PerspectivePart__Group_3_2__1__Impl
+            // InternalPerspectiveDsl.g:6099:1: ( rule__PerspectivePart__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:6100:2: rule__PerspectivePart__Group_3_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group_3_2__1__Impl();
@@ -21309,23 +21474,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_2__1__Impl"
-    // InternalPerspectiveDsl.g:6052:1: rule__PerspectivePart__Group_3_2__1__Impl : ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:6106:1: rule__PerspectivePart__Group_3_2__1__Impl : ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) ) ;
     public final void rule__PerspectivePart__Group_3_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6056:1: ( ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) ) )
-            // InternalPerspectiveDsl.g:6057:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:6110:1: ( ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:6111:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:6057:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
-            // InternalPerspectiveDsl.g:6058:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:6111:1: ( ( rule__PerspectivePart__IconURIAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:6112:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIconURIAssignment_3_2_1()); 
             }
-            // InternalPerspectiveDsl.g:6059:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
-            // InternalPerspectiveDsl.g:6059:3: rule__PerspectivePart__IconURIAssignment_3_2_1
+            // InternalPerspectiveDsl.g:6113:2: ( rule__PerspectivePart__IconURIAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:6113:3: rule__PerspectivePart__IconURIAssignment_3_2_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__IconURIAssignment_3_2_1();
@@ -21360,14 +21525,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_3__0"
-    // InternalPerspectiveDsl.g:6068:1: rule__PerspectivePart__Group_3_3__0 : rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1 ;
+    // InternalPerspectiveDsl.g:6122:1: rule__PerspectivePart__Group_3_3__0 : rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1 ;
     public final void rule__PerspectivePart__Group_3_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6072:1: ( rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1 )
-            // InternalPerspectiveDsl.g:6073:2: rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1
+            // InternalPerspectiveDsl.g:6126:1: ( rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1 )
+            // InternalPerspectiveDsl.g:6127:2: rule__PerspectivePart__Group_3_3__0__Impl rule__PerspectivePart__Group_3_3__1
             {
             pushFollow(FOLLOW_25);
             rule__PerspectivePart__Group_3_3__0__Impl();
@@ -21398,22 +21563,22 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_3__0__Impl"
-    // InternalPerspectiveDsl.g:6080:1: rule__PerspectivePart__Group_3_3__0__Impl : ( 'view' ) ;
+    // InternalPerspectiveDsl.g:6134:1: rule__PerspectivePart__Group_3_3__0__Impl : ( 'view' ) ;
     public final void rule__PerspectivePart__Group_3_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6084:1: ( ( 'view' ) )
-            // InternalPerspectiveDsl.g:6085:1: ( 'view' )
+            // InternalPerspectiveDsl.g:6138:1: ( ( 'view' ) )
+            // InternalPerspectiveDsl.g:6139:1: ( 'view' )
             {
-            // InternalPerspectiveDsl.g:6085:1: ( 'view' )
-            // InternalPerspectiveDsl.g:6086:2: 'view'
+            // InternalPerspectiveDsl.g:6139:1: ( 'view' )
+            // InternalPerspectiveDsl.g:6140:2: 'view'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0()); 
             }
-            match(input,69,FOLLOW_2); if (state.failed) return ;
+            match(input,71,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0()); 
             }
@@ -21439,14 +21604,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_3__1"
-    // InternalPerspectiveDsl.g:6095:1: rule__PerspectivePart__Group_3_3__1 : rule__PerspectivePart__Group_3_3__1__Impl ;
+    // InternalPerspectiveDsl.g:6149:1: rule__PerspectivePart__Group_3_3__1 : rule__PerspectivePart__Group_3_3__1__Impl ;
     public final void rule__PerspectivePart__Group_3_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6099:1: ( rule__PerspectivePart__Group_3_3__1__Impl )
-            // InternalPerspectiveDsl.g:6100:2: rule__PerspectivePart__Group_3_3__1__Impl
+            // InternalPerspectiveDsl.g:6153:1: ( rule__PerspectivePart__Group_3_3__1__Impl )
+            // InternalPerspectiveDsl.g:6154:2: rule__PerspectivePart__Group_3_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__Group_3_3__1__Impl();
@@ -21472,23 +21637,23 @@
 
 
     // $ANTLR start "rule__PerspectivePart__Group_3_3__1__Impl"
-    // InternalPerspectiveDsl.g:6106:1: rule__PerspectivePart__Group_3_3__1__Impl : ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:6160:1: rule__PerspectivePart__Group_3_3__1__Impl : ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) ) ;
     public final void rule__PerspectivePart__Group_3_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6110:1: ( ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) ) )
-            // InternalPerspectiveDsl.g:6111:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
+            // InternalPerspectiveDsl.g:6164:1: ( ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) ) )
+            // InternalPerspectiveDsl.g:6165:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:6111:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
-            // InternalPerspectiveDsl.g:6112:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
+            // InternalPerspectiveDsl.g:6165:1: ( ( rule__PerspectivePart__ViewAssignment_3_3_1 ) )
+            // InternalPerspectiveDsl.g:6166:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getViewAssignment_3_3_1()); 
             }
-            // InternalPerspectiveDsl.g:6113:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
-            // InternalPerspectiveDsl.g:6113:3: rule__PerspectivePart__ViewAssignment_3_3_1
+            // InternalPerspectiveDsl.g:6167:2: ( rule__PerspectivePart__ViewAssignment_3_3_1 )
+            // InternalPerspectiveDsl.g:6167:3: rule__PerspectivePart__ViewAssignment_3_3_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__ViewAssignment_3_3_1();
@@ -21523,14 +21688,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__0"
-    // InternalPerspectiveDsl.g:6122:1: rule__PerspectiveEventManager__Group__0 : rule__PerspectiveEventManager__Group__0__Impl rule__PerspectiveEventManager__Group__1 ;
+    // InternalPerspectiveDsl.g:6176:1: rule__PerspectiveEventManager__Group__0 : rule__PerspectiveEventManager__Group__0__Impl rule__PerspectiveEventManager__Group__1 ;
     public final void rule__PerspectiveEventManager__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6126:1: ( rule__PerspectiveEventManager__Group__0__Impl rule__PerspectiveEventManager__Group__1 )
-            // InternalPerspectiveDsl.g:6127:2: rule__PerspectiveEventManager__Group__0__Impl rule__PerspectiveEventManager__Group__1
+            // InternalPerspectiveDsl.g:6180:1: ( rule__PerspectiveEventManager__Group__0__Impl rule__PerspectiveEventManager__Group__1 )
+            // InternalPerspectiveDsl.g:6181:2: rule__PerspectiveEventManager__Group__0__Impl rule__PerspectiveEventManager__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveEventManager__Group__0__Impl();
@@ -21561,23 +21726,23 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6134:1: rule__PerspectiveEventManager__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6188:1: rule__PerspectiveEventManager__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveEventManager__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6138:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6139:1: ( () )
+            // InternalPerspectiveDsl.g:6192:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6193:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6139:1: ( () )
-            // InternalPerspectiveDsl.g:6140:2: ()
+            // InternalPerspectiveDsl.g:6193:1: ( () )
+            // InternalPerspectiveDsl.g:6194:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventManagerAccess().getPerspectiveEventManagerAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6141:2: ()
-            // InternalPerspectiveDsl.g:6141:3: 
+            // InternalPerspectiveDsl.g:6195:2: ()
+            // InternalPerspectiveDsl.g:6195:3: 
             {
             }
 
@@ -21602,14 +21767,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__1"
-    // InternalPerspectiveDsl.g:6149:1: rule__PerspectiveEventManager__Group__1 : rule__PerspectiveEventManager__Group__1__Impl rule__PerspectiveEventManager__Group__2 ;
+    // InternalPerspectiveDsl.g:6203:1: rule__PerspectiveEventManager__Group__1 : rule__PerspectiveEventManager__Group__1__Impl rule__PerspectiveEventManager__Group__2 ;
     public final void rule__PerspectiveEventManager__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6153:1: ( rule__PerspectiveEventManager__Group__1__Impl rule__PerspectiveEventManager__Group__2 )
-            // InternalPerspectiveDsl.g:6154:2: rule__PerspectiveEventManager__Group__1__Impl rule__PerspectiveEventManager__Group__2
+            // InternalPerspectiveDsl.g:6207:1: ( rule__PerspectiveEventManager__Group__1__Impl rule__PerspectiveEventManager__Group__2 )
+            // InternalPerspectiveDsl.g:6208:2: rule__PerspectiveEventManager__Group__1__Impl rule__PerspectiveEventManager__Group__2
             {
             pushFollow(FOLLOW_8);
             rule__PerspectiveEventManager__Group__1__Impl();
@@ -21640,23 +21805,23 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6161:1: rule__PerspectiveEventManager__Group__1__Impl : ( ( rule__PerspectiveEventManager__NameAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:6215:1: rule__PerspectiveEventManager__Group__1__Impl : ( ( rule__PerspectiveEventManager__NameAssignment_1 ) ) ;
     public final void rule__PerspectiveEventManager__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6165:1: ( ( ( rule__PerspectiveEventManager__NameAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:6166:1: ( ( rule__PerspectiveEventManager__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:6219:1: ( ( ( rule__PerspectiveEventManager__NameAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:6220:1: ( ( rule__PerspectiveEventManager__NameAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:6166:1: ( ( rule__PerspectiveEventManager__NameAssignment_1 ) )
-            // InternalPerspectiveDsl.g:6167:2: ( rule__PerspectiveEventManager__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:6220:1: ( ( rule__PerspectiveEventManager__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:6221:2: ( rule__PerspectiveEventManager__NameAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventManagerAccess().getNameAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:6168:2: ( rule__PerspectiveEventManager__NameAssignment_1 )
-            // InternalPerspectiveDsl.g:6168:3: rule__PerspectiveEventManager__NameAssignment_1
+            // InternalPerspectiveDsl.g:6222:2: ( rule__PerspectiveEventManager__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:6222:3: rule__PerspectiveEventManager__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveEventManager__NameAssignment_1();
@@ -21691,14 +21856,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__2"
-    // InternalPerspectiveDsl.g:6176:1: rule__PerspectiveEventManager__Group__2 : rule__PerspectiveEventManager__Group__2__Impl rule__PerspectiveEventManager__Group__3 ;
+    // InternalPerspectiveDsl.g:6230:1: rule__PerspectiveEventManager__Group__2 : rule__PerspectiveEventManager__Group__2__Impl rule__PerspectiveEventManager__Group__3 ;
     public final void rule__PerspectiveEventManager__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6180:1: ( rule__PerspectiveEventManager__Group__2__Impl rule__PerspectiveEventManager__Group__3 )
-            // InternalPerspectiveDsl.g:6181:2: rule__PerspectiveEventManager__Group__2__Impl rule__PerspectiveEventManager__Group__3
+            // InternalPerspectiveDsl.g:6234:1: ( rule__PerspectiveEventManager__Group__2__Impl rule__PerspectiveEventManager__Group__3 )
+            // InternalPerspectiveDsl.g:6235:2: rule__PerspectiveEventManager__Group__2__Impl rule__PerspectiveEventManager__Group__3
             {
             pushFollow(FOLLOW_26);
             rule__PerspectiveEventManager__Group__2__Impl();
@@ -21729,17 +21894,17 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6188:1: rule__PerspectiveEventManager__Group__2__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:6242:1: rule__PerspectiveEventManager__Group__2__Impl : ( '{' ) ;
     public final void rule__PerspectiveEventManager__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6192:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:6193:1: ( '{' )
+            // InternalPerspectiveDsl.g:6246:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:6247:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:6193:1: ( '{' )
-            // InternalPerspectiveDsl.g:6194:2: '{'
+            // InternalPerspectiveDsl.g:6247:1: ( '{' )
+            // InternalPerspectiveDsl.g:6248:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventManagerAccess().getLeftCurlyBracketKeyword_2()); 
@@ -21770,14 +21935,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__3"
-    // InternalPerspectiveDsl.g:6203:1: rule__PerspectiveEventManager__Group__3 : rule__PerspectiveEventManager__Group__3__Impl rule__PerspectiveEventManager__Group__4 ;
+    // InternalPerspectiveDsl.g:6257:1: rule__PerspectiveEventManager__Group__3 : rule__PerspectiveEventManager__Group__3__Impl rule__PerspectiveEventManager__Group__4 ;
     public final void rule__PerspectiveEventManager__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6207:1: ( rule__PerspectiveEventManager__Group__3__Impl rule__PerspectiveEventManager__Group__4 )
-            // InternalPerspectiveDsl.g:6208:2: rule__PerspectiveEventManager__Group__3__Impl rule__PerspectiveEventManager__Group__4
+            // InternalPerspectiveDsl.g:6261:1: ( rule__PerspectiveEventManager__Group__3__Impl rule__PerspectiveEventManager__Group__4 )
+            // InternalPerspectiveDsl.g:6262:2: rule__PerspectiveEventManager__Group__3__Impl rule__PerspectiveEventManager__Group__4
             {
             pushFollow(FOLLOW_26);
             rule__PerspectiveEventManager__Group__3__Impl();
@@ -21808,35 +21973,35 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__3__Impl"
-    // InternalPerspectiveDsl.g:6215:1: rule__PerspectiveEventManager__Group__3__Impl : ( ( rule__PerspectiveEventManager__EventsAssignment_3 )* ) ;
+    // InternalPerspectiveDsl.g:6269:1: rule__PerspectiveEventManager__Group__3__Impl : ( ( rule__PerspectiveEventManager__EventsAssignment_3 )* ) ;
     public final void rule__PerspectiveEventManager__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6219:1: ( ( ( rule__PerspectiveEventManager__EventsAssignment_3 )* ) )
-            // InternalPerspectiveDsl.g:6220:1: ( ( rule__PerspectiveEventManager__EventsAssignment_3 )* )
+            // InternalPerspectiveDsl.g:6273:1: ( ( ( rule__PerspectiveEventManager__EventsAssignment_3 )* ) )
+            // InternalPerspectiveDsl.g:6274:1: ( ( rule__PerspectiveEventManager__EventsAssignment_3 )* )
             {
-            // InternalPerspectiveDsl.g:6220:1: ( ( rule__PerspectiveEventManager__EventsAssignment_3 )* )
-            // InternalPerspectiveDsl.g:6221:2: ( rule__PerspectiveEventManager__EventsAssignment_3 )*
+            // InternalPerspectiveDsl.g:6274:1: ( ( rule__PerspectiveEventManager__EventsAssignment_3 )* )
+            // InternalPerspectiveDsl.g:6275:2: ( rule__PerspectiveEventManager__EventsAssignment_3 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventManagerAccess().getEventsAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:6222:2: ( rule__PerspectiveEventManager__EventsAssignment_3 )*
+            // InternalPerspectiveDsl.g:6276:2: ( rule__PerspectiveEventManager__EventsAssignment_3 )*
             loop59:
             do {
                 int alt59=2;
                 int LA59_0 = input.LA(1);
 
-                if ( (LA59_0==70) ) {
+                if ( (LA59_0==72) ) {
                     alt59=1;
                 }
 
 
                 switch (alt59) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:6222:3: rule__PerspectiveEventManager__EventsAssignment_3
+            	    // InternalPerspectiveDsl.g:6276:3: rule__PerspectiveEventManager__EventsAssignment_3
             	    {
             	    pushFollow(FOLLOW_27);
             	    rule__PerspectiveEventManager__EventsAssignment_3();
@@ -21877,14 +22042,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__4"
-    // InternalPerspectiveDsl.g:6230:1: rule__PerspectiveEventManager__Group__4 : rule__PerspectiveEventManager__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:6284:1: rule__PerspectiveEventManager__Group__4 : rule__PerspectiveEventManager__Group__4__Impl ;
     public final void rule__PerspectiveEventManager__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6234:1: ( rule__PerspectiveEventManager__Group__4__Impl )
-            // InternalPerspectiveDsl.g:6235:2: rule__PerspectiveEventManager__Group__4__Impl
+            // InternalPerspectiveDsl.g:6288:1: ( rule__PerspectiveEventManager__Group__4__Impl )
+            // InternalPerspectiveDsl.g:6289:2: rule__PerspectiveEventManager__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveEventManager__Group__4__Impl();
@@ -21910,17 +22075,17 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__Group__4__Impl"
-    // InternalPerspectiveDsl.g:6241:1: rule__PerspectiveEventManager__Group__4__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:6295:1: rule__PerspectiveEventManager__Group__4__Impl : ( '}' ) ;
     public final void rule__PerspectiveEventManager__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6245:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:6246:1: ( '}' )
+            // InternalPerspectiveDsl.g:6299:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:6300:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:6246:1: ( '}' )
-            // InternalPerspectiveDsl.g:6247:2: '}'
+            // InternalPerspectiveDsl.g:6300:1: ( '}' )
+            // InternalPerspectiveDsl.g:6301:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventManagerAccess().getRightCurlyBracketKeyword_4()); 
@@ -21951,14 +22116,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__0"
-    // InternalPerspectiveDsl.g:6257:1: rule__PerspectiveEvent__Group__0 : rule__PerspectiveEvent__Group__0__Impl rule__PerspectiveEvent__Group__1 ;
+    // InternalPerspectiveDsl.g:6311:1: rule__PerspectiveEvent__Group__0 : rule__PerspectiveEvent__Group__0__Impl rule__PerspectiveEvent__Group__1 ;
     public final void rule__PerspectiveEvent__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6261:1: ( rule__PerspectiveEvent__Group__0__Impl rule__PerspectiveEvent__Group__1 )
-            // InternalPerspectiveDsl.g:6262:2: rule__PerspectiveEvent__Group__0__Impl rule__PerspectiveEvent__Group__1
+            // InternalPerspectiveDsl.g:6315:1: ( rule__PerspectiveEvent__Group__0__Impl rule__PerspectiveEvent__Group__1 )
+            // InternalPerspectiveDsl.g:6316:2: rule__PerspectiveEvent__Group__0__Impl rule__PerspectiveEvent__Group__1
             {
             pushFollow(FOLLOW_28);
             rule__PerspectiveEvent__Group__0__Impl();
@@ -21989,23 +22154,23 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6269:1: rule__PerspectiveEvent__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6323:1: rule__PerspectiveEvent__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveEvent__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6273:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6274:1: ( () )
+            // InternalPerspectiveDsl.g:6327:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6328:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6274:1: ( () )
-            // InternalPerspectiveDsl.g:6275:2: ()
+            // InternalPerspectiveDsl.g:6328:1: ( () )
+            // InternalPerspectiveDsl.g:6329:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getPerspectiveEventAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6276:2: ()
-            // InternalPerspectiveDsl.g:6276:3: 
+            // InternalPerspectiveDsl.g:6330:2: ()
+            // InternalPerspectiveDsl.g:6330:3: 
             {
             }
 
@@ -22030,14 +22195,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__1"
-    // InternalPerspectiveDsl.g:6284:1: rule__PerspectiveEvent__Group__1 : rule__PerspectiveEvent__Group__1__Impl rule__PerspectiveEvent__Group__2 ;
+    // InternalPerspectiveDsl.g:6338:1: rule__PerspectiveEvent__Group__1 : rule__PerspectiveEvent__Group__1__Impl rule__PerspectiveEvent__Group__2 ;
     public final void rule__PerspectiveEvent__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6288:1: ( rule__PerspectiveEvent__Group__1__Impl rule__PerspectiveEvent__Group__2 )
-            // InternalPerspectiveDsl.g:6289:2: rule__PerspectiveEvent__Group__1__Impl rule__PerspectiveEvent__Group__2
+            // InternalPerspectiveDsl.g:6342:1: ( rule__PerspectiveEvent__Group__1__Impl rule__PerspectiveEvent__Group__2 )
+            // InternalPerspectiveDsl.g:6343:2: rule__PerspectiveEvent__Group__1__Impl rule__PerspectiveEvent__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveEvent__Group__1__Impl();
@@ -22068,22 +22233,22 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6296:1: rule__PerspectiveEvent__Group__1__Impl : ( 'targetPart' ) ;
+    // InternalPerspectiveDsl.g:6350:1: rule__PerspectiveEvent__Group__1__Impl : ( 'targetPart' ) ;
     public final void rule__PerspectiveEvent__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6300:1: ( ( 'targetPart' ) )
-            // InternalPerspectiveDsl.g:6301:1: ( 'targetPart' )
+            // InternalPerspectiveDsl.g:6354:1: ( ( 'targetPart' ) )
+            // InternalPerspectiveDsl.g:6355:1: ( 'targetPart' )
             {
-            // InternalPerspectiveDsl.g:6301:1: ( 'targetPart' )
-            // InternalPerspectiveDsl.g:6302:2: 'targetPart'
+            // InternalPerspectiveDsl.g:6355:1: ( 'targetPart' )
+            // InternalPerspectiveDsl.g:6356:2: 'targetPart'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getTargetPartKeyword_1()); 
             }
-            match(input,70,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveEventAccess().getTargetPartKeyword_1()); 
             }
@@ -22109,14 +22274,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__2"
-    // InternalPerspectiveDsl.g:6311:1: rule__PerspectiveEvent__Group__2 : rule__PerspectiveEvent__Group__2__Impl rule__PerspectiveEvent__Group__3 ;
+    // InternalPerspectiveDsl.g:6365:1: rule__PerspectiveEvent__Group__2 : rule__PerspectiveEvent__Group__2__Impl rule__PerspectiveEvent__Group__3 ;
     public final void rule__PerspectiveEvent__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6315:1: ( rule__PerspectiveEvent__Group__2__Impl rule__PerspectiveEvent__Group__3 )
-            // InternalPerspectiveDsl.g:6316:2: rule__PerspectiveEvent__Group__2__Impl rule__PerspectiveEvent__Group__3
+            // InternalPerspectiveDsl.g:6369:1: ( rule__PerspectiveEvent__Group__2__Impl rule__PerspectiveEvent__Group__3 )
+            // InternalPerspectiveDsl.g:6370:2: rule__PerspectiveEvent__Group__2__Impl rule__PerspectiveEvent__Group__3
             {
             pushFollow(FOLLOW_29);
             rule__PerspectiveEvent__Group__2__Impl();
@@ -22147,23 +22312,23 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6323:1: rule__PerspectiveEvent__Group__2__Impl : ( ( rule__PerspectiveEvent__TargetAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6377:1: rule__PerspectiveEvent__Group__2__Impl : ( ( rule__PerspectiveEvent__TargetAssignment_2 ) ) ;
     public final void rule__PerspectiveEvent__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6327:1: ( ( ( rule__PerspectiveEvent__TargetAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6328:1: ( ( rule__PerspectiveEvent__TargetAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6381:1: ( ( ( rule__PerspectiveEvent__TargetAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6382:1: ( ( rule__PerspectiveEvent__TargetAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6328:1: ( ( rule__PerspectiveEvent__TargetAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6329:2: ( rule__PerspectiveEvent__TargetAssignment_2 )
+            // InternalPerspectiveDsl.g:6382:1: ( ( rule__PerspectiveEvent__TargetAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6383:2: ( rule__PerspectiveEvent__TargetAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getTargetAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6330:2: ( rule__PerspectiveEvent__TargetAssignment_2 )
-            // InternalPerspectiveDsl.g:6330:3: rule__PerspectiveEvent__TargetAssignment_2
+            // InternalPerspectiveDsl.g:6384:2: ( rule__PerspectiveEvent__TargetAssignment_2 )
+            // InternalPerspectiveDsl.g:6384:3: rule__PerspectiveEvent__TargetAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveEvent__TargetAssignment_2();
@@ -22198,14 +22363,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__3"
-    // InternalPerspectiveDsl.g:6338:1: rule__PerspectiveEvent__Group__3 : rule__PerspectiveEvent__Group__3__Impl rule__PerspectiveEvent__Group__4 ;
+    // InternalPerspectiveDsl.g:6392:1: rule__PerspectiveEvent__Group__3 : rule__PerspectiveEvent__Group__3__Impl rule__PerspectiveEvent__Group__4 ;
     public final void rule__PerspectiveEvent__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6342:1: ( rule__PerspectiveEvent__Group__3__Impl rule__PerspectiveEvent__Group__4 )
-            // InternalPerspectiveDsl.g:6343:2: rule__PerspectiveEvent__Group__3__Impl rule__PerspectiveEvent__Group__4
+            // InternalPerspectiveDsl.g:6396:1: ( rule__PerspectiveEvent__Group__3__Impl rule__PerspectiveEvent__Group__4 )
+            // InternalPerspectiveDsl.g:6397:2: rule__PerspectiveEvent__Group__3__Impl rule__PerspectiveEvent__Group__4
             {
             pushFollow(FOLLOW_8);
             rule__PerspectiveEvent__Group__3__Impl();
@@ -22236,22 +22401,22 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__3__Impl"
-    // InternalPerspectiveDsl.g:6350:1: rule__PerspectiveEvent__Group__3__Impl : ( 'allowedSources' ) ;
+    // InternalPerspectiveDsl.g:6404:1: rule__PerspectiveEvent__Group__3__Impl : ( 'allowedSources' ) ;
     public final void rule__PerspectiveEvent__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6354:1: ( ( 'allowedSources' ) )
-            // InternalPerspectiveDsl.g:6355:1: ( 'allowedSources' )
+            // InternalPerspectiveDsl.g:6408:1: ( ( 'allowedSources' ) )
+            // InternalPerspectiveDsl.g:6409:1: ( 'allowedSources' )
             {
-            // InternalPerspectiveDsl.g:6355:1: ( 'allowedSources' )
-            // InternalPerspectiveDsl.g:6356:2: 'allowedSources'
+            // InternalPerspectiveDsl.g:6409:1: ( 'allowedSources' )
+            // InternalPerspectiveDsl.g:6410:2: 'allowedSources'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getAllowedSourcesKeyword_3()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,73,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveEventAccess().getAllowedSourcesKeyword_3()); 
             }
@@ -22277,14 +22442,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__4"
-    // InternalPerspectiveDsl.g:6365:1: rule__PerspectiveEvent__Group__4 : rule__PerspectiveEvent__Group__4__Impl rule__PerspectiveEvent__Group__5 ;
+    // InternalPerspectiveDsl.g:6419:1: rule__PerspectiveEvent__Group__4 : rule__PerspectiveEvent__Group__4__Impl rule__PerspectiveEvent__Group__5 ;
     public final void rule__PerspectiveEvent__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6369:1: ( rule__PerspectiveEvent__Group__4__Impl rule__PerspectiveEvent__Group__5 )
-            // InternalPerspectiveDsl.g:6370:2: rule__PerspectiveEvent__Group__4__Impl rule__PerspectiveEvent__Group__5
+            // InternalPerspectiveDsl.g:6423:1: ( rule__PerspectiveEvent__Group__4__Impl rule__PerspectiveEvent__Group__5 )
+            // InternalPerspectiveDsl.g:6424:2: rule__PerspectiveEvent__Group__4__Impl rule__PerspectiveEvent__Group__5
             {
             pushFollow(FOLLOW_30);
             rule__PerspectiveEvent__Group__4__Impl();
@@ -22315,17 +22480,17 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__4__Impl"
-    // InternalPerspectiveDsl.g:6377:1: rule__PerspectiveEvent__Group__4__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:6431:1: rule__PerspectiveEvent__Group__4__Impl : ( '{' ) ;
     public final void rule__PerspectiveEvent__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6381:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:6382:1: ( '{' )
+            // InternalPerspectiveDsl.g:6435:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:6436:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:6382:1: ( '{' )
-            // InternalPerspectiveDsl.g:6383:2: '{'
+            // InternalPerspectiveDsl.g:6436:1: ( '{' )
+            // InternalPerspectiveDsl.g:6437:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getLeftCurlyBracketKeyword_4()); 
@@ -22356,14 +22521,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__5"
-    // InternalPerspectiveDsl.g:6392:1: rule__PerspectiveEvent__Group__5 : rule__PerspectiveEvent__Group__5__Impl rule__PerspectiveEvent__Group__6 ;
+    // InternalPerspectiveDsl.g:6446:1: rule__PerspectiveEvent__Group__5 : rule__PerspectiveEvent__Group__5__Impl rule__PerspectiveEvent__Group__6 ;
     public final void rule__PerspectiveEvent__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6396:1: ( rule__PerspectiveEvent__Group__5__Impl rule__PerspectiveEvent__Group__6 )
-            // InternalPerspectiveDsl.g:6397:2: rule__PerspectiveEvent__Group__5__Impl rule__PerspectiveEvent__Group__6
+            // InternalPerspectiveDsl.g:6450:1: ( rule__PerspectiveEvent__Group__5__Impl rule__PerspectiveEvent__Group__6 )
+            // InternalPerspectiveDsl.g:6451:2: rule__PerspectiveEvent__Group__5__Impl rule__PerspectiveEvent__Group__6
             {
             pushFollow(FOLLOW_30);
             rule__PerspectiveEvent__Group__5__Impl();
@@ -22394,22 +22559,22 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__5__Impl"
-    // InternalPerspectiveDsl.g:6404:1: rule__PerspectiveEvent__Group__5__Impl : ( ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )* ) ;
+    // InternalPerspectiveDsl.g:6458:1: rule__PerspectiveEvent__Group__5__Impl : ( ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )* ) ;
     public final void rule__PerspectiveEvent__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6408:1: ( ( ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )* ) )
-            // InternalPerspectiveDsl.g:6409:1: ( ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )* )
+            // InternalPerspectiveDsl.g:6462:1: ( ( ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )* ) )
+            // InternalPerspectiveDsl.g:6463:1: ( ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )* )
             {
-            // InternalPerspectiveDsl.g:6409:1: ( ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )* )
-            // InternalPerspectiveDsl.g:6410:2: ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )*
+            // InternalPerspectiveDsl.g:6463:1: ( ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )* )
+            // InternalPerspectiveDsl.g:6464:2: ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:6411:2: ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )*
+            // InternalPerspectiveDsl.g:6465:2: ( rule__PerspectiveEvent__AllowedsourcesAssignment_5 )*
             loop60:
             do {
                 int alt60=2;
@@ -22422,7 +22587,7 @@
 
                 switch (alt60) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:6411:3: rule__PerspectiveEvent__AllowedsourcesAssignment_5
+            	    // InternalPerspectiveDsl.g:6465:3: rule__PerspectiveEvent__AllowedsourcesAssignment_5
             	    {
             	    pushFollow(FOLLOW_4);
             	    rule__PerspectiveEvent__AllowedsourcesAssignment_5();
@@ -22463,14 +22628,14 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__6"
-    // InternalPerspectiveDsl.g:6419:1: rule__PerspectiveEvent__Group__6 : rule__PerspectiveEvent__Group__6__Impl ;
+    // InternalPerspectiveDsl.g:6473:1: rule__PerspectiveEvent__Group__6 : rule__PerspectiveEvent__Group__6__Impl ;
     public final void rule__PerspectiveEvent__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6423:1: ( rule__PerspectiveEvent__Group__6__Impl )
-            // InternalPerspectiveDsl.g:6424:2: rule__PerspectiveEvent__Group__6__Impl
+            // InternalPerspectiveDsl.g:6477:1: ( rule__PerspectiveEvent__Group__6__Impl )
+            // InternalPerspectiveDsl.g:6478:2: rule__PerspectiveEvent__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveEvent__Group__6__Impl();
@@ -22496,17 +22661,17 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__Group__6__Impl"
-    // InternalPerspectiveDsl.g:6430:1: rule__PerspectiveEvent__Group__6__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:6484:1: rule__PerspectiveEvent__Group__6__Impl : ( '}' ) ;
     public final void rule__PerspectiveEvent__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6434:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:6435:1: ( '}' )
+            // InternalPerspectiveDsl.g:6488:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:6489:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:6435:1: ( '}' )
-            // InternalPerspectiveDsl.g:6436:2: '}'
+            // InternalPerspectiveDsl.g:6489:1: ( '}' )
+            // InternalPerspectiveDsl.g:6490:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getRightCurlyBracketKeyword_6()); 
@@ -22537,14 +22702,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__0"
-    // InternalPerspectiveDsl.g:6446:1: rule__PerspectiveSelection__Group__0 : rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1 ;
+    // InternalPerspectiveDsl.g:6500:1: rule__PerspectiveSelection__Group__0 : rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1 ;
     public final void rule__PerspectiveSelection__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6450:1: ( rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1 )
-            // InternalPerspectiveDsl.g:6451:2: rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1
+            // InternalPerspectiveDsl.g:6504:1: ( rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1 )
+            // InternalPerspectiveDsl.g:6505:2: rule__PerspectiveSelection__Group__0__Impl rule__PerspectiveSelection__Group__1
             {
             pushFollow(FOLLOW_31);
             rule__PerspectiveSelection__Group__0__Impl();
@@ -22575,23 +22740,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6458:1: rule__PerspectiveSelection__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6512:1: rule__PerspectiveSelection__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveSelection__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6462:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6463:1: ( () )
+            // InternalPerspectiveDsl.g:6516:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6517:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6463:1: ( () )
-            // InternalPerspectiveDsl.g:6464:2: ()
+            // InternalPerspectiveDsl.g:6517:1: ( () )
+            // InternalPerspectiveDsl.g:6518:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getPerspectiveSelectionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6465:2: ()
-            // InternalPerspectiveDsl.g:6465:3: 
+            // InternalPerspectiveDsl.g:6519:2: ()
+            // InternalPerspectiveDsl.g:6519:3: 
             {
             }
 
@@ -22616,14 +22781,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__1"
-    // InternalPerspectiveDsl.g:6473:1: rule__PerspectiveSelection__Group__1 : rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2 ;
+    // InternalPerspectiveDsl.g:6527:1: rule__PerspectiveSelection__Group__1 : rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2 ;
     public final void rule__PerspectiveSelection__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6477:1: ( rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2 )
-            // InternalPerspectiveDsl.g:6478:2: rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2
+            // InternalPerspectiveDsl.g:6531:1: ( rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2 )
+            // InternalPerspectiveDsl.g:6532:2: rule__PerspectiveSelection__Group__1__Impl rule__PerspectiveSelection__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveSelection__Group__1__Impl();
@@ -22654,22 +22819,22 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6485:1: rule__PerspectiveSelection__Group__1__Impl : ( 'select' ) ;
+    // InternalPerspectiveDsl.g:6539:1: rule__PerspectiveSelection__Group__1__Impl : ( 'select' ) ;
     public final void rule__PerspectiveSelection__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6489:1: ( ( 'select' ) )
-            // InternalPerspectiveDsl.g:6490:1: ( 'select' )
+            // InternalPerspectiveDsl.g:6543:1: ( ( 'select' ) )
+            // InternalPerspectiveDsl.g:6544:1: ( 'select' )
             {
-            // InternalPerspectiveDsl.g:6490:1: ( 'select' )
-            // InternalPerspectiveDsl.g:6491:2: 'select'
+            // InternalPerspectiveDsl.g:6544:1: ( 'select' )
+            // InternalPerspectiveDsl.g:6545:2: 'select'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,74,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1()); 
             }
@@ -22695,14 +22860,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__2"
-    // InternalPerspectiveDsl.g:6500:1: rule__PerspectiveSelection__Group__2 : rule__PerspectiveSelection__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6554:1: rule__PerspectiveSelection__Group__2 : rule__PerspectiveSelection__Group__2__Impl ;
     public final void rule__PerspectiveSelection__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6504:1: ( rule__PerspectiveSelection__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6505:2: rule__PerspectiveSelection__Group__2__Impl
+            // InternalPerspectiveDsl.g:6558:1: ( rule__PerspectiveSelection__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6559:2: rule__PerspectiveSelection__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSelection__Group__2__Impl();
@@ -22728,23 +22893,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6511:1: rule__PerspectiveSelection__Group__2__Impl : ( ( rule__PerspectiveSelection__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6565:1: rule__PerspectiveSelection__Group__2__Impl : ( ( rule__PerspectiveSelection__RefAssignment_2 ) ) ;
     public final void rule__PerspectiveSelection__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6515:1: ( ( ( rule__PerspectiveSelection__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6516:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6569:1: ( ( ( rule__PerspectiveSelection__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6570:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6516:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6517:2: ( rule__PerspectiveSelection__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6570:1: ( ( rule__PerspectiveSelection__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6571:2: ( rule__PerspectiveSelection__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6518:2: ( rule__PerspectiveSelection__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6518:3: rule__PerspectiveSelection__RefAssignment_2
+            // InternalPerspectiveDsl.g:6572:2: ( rule__PerspectiveSelection__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6572:3: rule__PerspectiveSelection__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSelection__RefAssignment_2();
@@ -22779,14 +22944,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__0"
-    // InternalPerspectiveDsl.g:6527:1: rule__PerspectiveTable__Group__0 : rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1 ;
+    // InternalPerspectiveDsl.g:6581:1: rule__PerspectiveTable__Group__0 : rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1 ;
     public final void rule__PerspectiveTable__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6531:1: ( rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1 )
-            // InternalPerspectiveDsl.g:6532:2: rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1
+            // InternalPerspectiveDsl.g:6585:1: ( rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1 )
+            // InternalPerspectiveDsl.g:6586:2: rule__PerspectiveTable__Group__0__Impl rule__PerspectiveTable__Group__1
             {
             pushFollow(FOLLOW_32);
             rule__PerspectiveTable__Group__0__Impl();
@@ -22817,23 +22982,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6539:1: rule__PerspectiveTable__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6593:1: rule__PerspectiveTable__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveTable__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6543:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6544:1: ( () )
+            // InternalPerspectiveDsl.g:6597:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6598:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6544:1: ( () )
-            // InternalPerspectiveDsl.g:6545:2: ()
+            // InternalPerspectiveDsl.g:6598:1: ( () )
+            // InternalPerspectiveDsl.g:6599:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getPerspectiveTableAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6546:2: ()
-            // InternalPerspectiveDsl.g:6546:3: 
+            // InternalPerspectiveDsl.g:6600:2: ()
+            // InternalPerspectiveDsl.g:6600:3: 
             {
             }
 
@@ -22858,14 +23023,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__1"
-    // InternalPerspectiveDsl.g:6554:1: rule__PerspectiveTable__Group__1 : rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2 ;
+    // InternalPerspectiveDsl.g:6608:1: rule__PerspectiveTable__Group__1 : rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2 ;
     public final void rule__PerspectiveTable__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6558:1: ( rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2 )
-            // InternalPerspectiveDsl.g:6559:2: rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2
+            // InternalPerspectiveDsl.g:6612:1: ( rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2 )
+            // InternalPerspectiveDsl.g:6613:2: rule__PerspectiveTable__Group__1__Impl rule__PerspectiveTable__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveTable__Group__1__Impl();
@@ -22896,22 +23061,22 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6566:1: rule__PerspectiveTable__Group__1__Impl : ( 'readOnlyTable' ) ;
+    // InternalPerspectiveDsl.g:6620:1: rule__PerspectiveTable__Group__1__Impl : ( 'readOnlyTable' ) ;
     public final void rule__PerspectiveTable__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6570:1: ( ( 'readOnlyTable' ) )
-            // InternalPerspectiveDsl.g:6571:1: ( 'readOnlyTable' )
+            // InternalPerspectiveDsl.g:6624:1: ( ( 'readOnlyTable' ) )
+            // InternalPerspectiveDsl.g:6625:1: ( 'readOnlyTable' )
             {
-            // InternalPerspectiveDsl.g:6571:1: ( 'readOnlyTable' )
-            // InternalPerspectiveDsl.g:6572:2: 'readOnlyTable'
+            // InternalPerspectiveDsl.g:6625:1: ( 'readOnlyTable' )
+            // InternalPerspectiveDsl.g:6626:2: 'readOnlyTable'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getReadOnlyTableKeyword_1()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,75,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveTableAccess().getReadOnlyTableKeyword_1()); 
             }
@@ -22937,14 +23102,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__2"
-    // InternalPerspectiveDsl.g:6581:1: rule__PerspectiveTable__Group__2 : rule__PerspectiveTable__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6635:1: rule__PerspectiveTable__Group__2 : rule__PerspectiveTable__Group__2__Impl ;
     public final void rule__PerspectiveTable__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6585:1: ( rule__PerspectiveTable__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6586:2: rule__PerspectiveTable__Group__2__Impl
+            // InternalPerspectiveDsl.g:6639:1: ( rule__PerspectiveTable__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6640:2: rule__PerspectiveTable__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTable__Group__2__Impl();
@@ -22970,23 +23135,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6592:1: rule__PerspectiveTable__Group__2__Impl : ( ( rule__PerspectiveTable__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6646:1: rule__PerspectiveTable__Group__2__Impl : ( ( rule__PerspectiveTable__RefAssignment_2 ) ) ;
     public final void rule__PerspectiveTable__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6596:1: ( ( ( rule__PerspectiveTable__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6597:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6650:1: ( ( ( rule__PerspectiveTable__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6651:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6597:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6598:2: ( rule__PerspectiveTable__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6651:1: ( ( rule__PerspectiveTable__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6652:2: ( rule__PerspectiveTable__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6599:2: ( rule__PerspectiveTable__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6599:3: rule__PerspectiveTable__RefAssignment_2
+            // InternalPerspectiveDsl.g:6653:2: ( rule__PerspectiveTable__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6653:3: rule__PerspectiveTable__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTable__RefAssignment_2();
@@ -23021,14 +23186,14 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__0"
-    // InternalPerspectiveDsl.g:6608:1: rule__PerspectiveGrid__Group__0 : rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1 ;
+    // InternalPerspectiveDsl.g:6662:1: rule__PerspectiveGrid__Group__0 : rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1 ;
     public final void rule__PerspectiveGrid__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6612:1: ( rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1 )
-            // InternalPerspectiveDsl.g:6613:2: rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1
+            // InternalPerspectiveDsl.g:6666:1: ( rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1 )
+            // InternalPerspectiveDsl.g:6667:2: rule__PerspectiveGrid__Group__0__Impl rule__PerspectiveGrid__Group__1
             {
             pushFollow(FOLLOW_33);
             rule__PerspectiveGrid__Group__0__Impl();
@@ -23059,23 +23224,23 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6620:1: rule__PerspectiveGrid__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6674:1: rule__PerspectiveGrid__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveGrid__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6624:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6625:1: ( () )
+            // InternalPerspectiveDsl.g:6678:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6679:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6625:1: ( () )
-            // InternalPerspectiveDsl.g:6626:2: ()
+            // InternalPerspectiveDsl.g:6679:1: ( () )
+            // InternalPerspectiveDsl.g:6680:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getPerspectiveGridAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6627:2: ()
-            // InternalPerspectiveDsl.g:6627:3: 
+            // InternalPerspectiveDsl.g:6681:2: ()
+            // InternalPerspectiveDsl.g:6681:3: 
             {
             }
 
@@ -23100,14 +23265,14 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__1"
-    // InternalPerspectiveDsl.g:6635:1: rule__PerspectiveGrid__Group__1 : rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2 ;
+    // InternalPerspectiveDsl.g:6689:1: rule__PerspectiveGrid__Group__1 : rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2 ;
     public final void rule__PerspectiveGrid__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6639:1: ( rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2 )
-            // InternalPerspectiveDsl.g:6640:2: rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2
+            // InternalPerspectiveDsl.g:6693:1: ( rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2 )
+            // InternalPerspectiveDsl.g:6694:2: rule__PerspectiveGrid__Group__1__Impl rule__PerspectiveGrid__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveGrid__Group__1__Impl();
@@ -23138,22 +23303,22 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6647:1: rule__PerspectiveGrid__Group__1__Impl : ( 'editableTable' ) ;
+    // InternalPerspectiveDsl.g:6701:1: rule__PerspectiveGrid__Group__1__Impl : ( 'editableTable' ) ;
     public final void rule__PerspectiveGrid__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6651:1: ( ( 'editableTable' ) )
-            // InternalPerspectiveDsl.g:6652:1: ( 'editableTable' )
+            // InternalPerspectiveDsl.g:6705:1: ( ( 'editableTable' ) )
+            // InternalPerspectiveDsl.g:6706:1: ( 'editableTable' )
             {
-            // InternalPerspectiveDsl.g:6652:1: ( 'editableTable' )
-            // InternalPerspectiveDsl.g:6653:2: 'editableTable'
+            // InternalPerspectiveDsl.g:6706:1: ( 'editableTable' )
+            // InternalPerspectiveDsl.g:6707:2: 'editableTable'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getEditableTableKeyword_1()); 
             }
-            match(input,74,FOLLOW_2); if (state.failed) return ;
+            match(input,76,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveGridAccess().getEditableTableKeyword_1()); 
             }
@@ -23179,14 +23344,14 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__2"
-    // InternalPerspectiveDsl.g:6662:1: rule__PerspectiveGrid__Group__2 : rule__PerspectiveGrid__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6716:1: rule__PerspectiveGrid__Group__2 : rule__PerspectiveGrid__Group__2__Impl ;
     public final void rule__PerspectiveGrid__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6666:1: ( rule__PerspectiveGrid__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6667:2: rule__PerspectiveGrid__Group__2__Impl
+            // InternalPerspectiveDsl.g:6720:1: ( rule__PerspectiveGrid__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6721:2: rule__PerspectiveGrid__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveGrid__Group__2__Impl();
@@ -23212,23 +23377,23 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6673:1: rule__PerspectiveGrid__Group__2__Impl : ( ( rule__PerspectiveGrid__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6727:1: rule__PerspectiveGrid__Group__2__Impl : ( ( rule__PerspectiveGrid__RefAssignment_2 ) ) ;
     public final void rule__PerspectiveGrid__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6677:1: ( ( ( rule__PerspectiveGrid__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6678:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6731:1: ( ( ( rule__PerspectiveGrid__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6732:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6678:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6679:2: ( rule__PerspectiveGrid__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6732:1: ( ( rule__PerspectiveGrid__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6733:2: ( rule__PerspectiveGrid__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6680:2: ( rule__PerspectiveGrid__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6680:3: rule__PerspectiveGrid__RefAssignment_2
+            // InternalPerspectiveDsl.g:6734:2: ( rule__PerspectiveGrid__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6734:3: rule__PerspectiveGrid__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveGrid__RefAssignment_2();
@@ -23263,14 +23428,14 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__0"
-    // InternalPerspectiveDsl.g:6689:1: rule__PerspectiveChart__Group__0 : rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1 ;
+    // InternalPerspectiveDsl.g:6743:1: rule__PerspectiveChart__Group__0 : rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1 ;
     public final void rule__PerspectiveChart__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6693:1: ( rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1 )
-            // InternalPerspectiveDsl.g:6694:2: rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1
+            // InternalPerspectiveDsl.g:6747:1: ( rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1 )
+            // InternalPerspectiveDsl.g:6748:2: rule__PerspectiveChart__Group__0__Impl rule__PerspectiveChart__Group__1
             {
             pushFollow(FOLLOW_34);
             rule__PerspectiveChart__Group__0__Impl();
@@ -23301,23 +23466,23 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6701:1: rule__PerspectiveChart__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6755:1: rule__PerspectiveChart__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveChart__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6705:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6706:1: ( () )
+            // InternalPerspectiveDsl.g:6759:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6760:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6706:1: ( () )
-            // InternalPerspectiveDsl.g:6707:2: ()
+            // InternalPerspectiveDsl.g:6760:1: ( () )
+            // InternalPerspectiveDsl.g:6761:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getPerspectiveChartAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6708:2: ()
-            // InternalPerspectiveDsl.g:6708:3: 
+            // InternalPerspectiveDsl.g:6762:2: ()
+            // InternalPerspectiveDsl.g:6762:3: 
             {
             }
 
@@ -23342,14 +23507,14 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__1"
-    // InternalPerspectiveDsl.g:6716:1: rule__PerspectiveChart__Group__1 : rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2 ;
+    // InternalPerspectiveDsl.g:6770:1: rule__PerspectiveChart__Group__1 : rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2 ;
     public final void rule__PerspectiveChart__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6720:1: ( rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2 )
-            // InternalPerspectiveDsl.g:6721:2: rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2
+            // InternalPerspectiveDsl.g:6774:1: ( rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2 )
+            // InternalPerspectiveDsl.g:6775:2: rule__PerspectiveChart__Group__1__Impl rule__PerspectiveChart__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveChart__Group__1__Impl();
@@ -23380,22 +23545,22 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6728:1: rule__PerspectiveChart__Group__1__Impl : ( 'chart' ) ;
+    // InternalPerspectiveDsl.g:6782:1: rule__PerspectiveChart__Group__1__Impl : ( 'chart' ) ;
     public final void rule__PerspectiveChart__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6732:1: ( ( 'chart' ) )
-            // InternalPerspectiveDsl.g:6733:1: ( 'chart' )
+            // InternalPerspectiveDsl.g:6786:1: ( ( 'chart' ) )
+            // InternalPerspectiveDsl.g:6787:1: ( 'chart' )
             {
-            // InternalPerspectiveDsl.g:6733:1: ( 'chart' )
-            // InternalPerspectiveDsl.g:6734:2: 'chart'
+            // InternalPerspectiveDsl.g:6787:1: ( 'chart' )
+            // InternalPerspectiveDsl.g:6788:2: 'chart'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getChartKeyword_1()); 
             }
-            match(input,75,FOLLOW_2); if (state.failed) return ;
+            match(input,77,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveChartAccess().getChartKeyword_1()); 
             }
@@ -23421,14 +23586,14 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__2"
-    // InternalPerspectiveDsl.g:6743:1: rule__PerspectiveChart__Group__2 : rule__PerspectiveChart__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6797:1: rule__PerspectiveChart__Group__2 : rule__PerspectiveChart__Group__2__Impl ;
     public final void rule__PerspectiveChart__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6747:1: ( rule__PerspectiveChart__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6748:2: rule__PerspectiveChart__Group__2__Impl
+            // InternalPerspectiveDsl.g:6801:1: ( rule__PerspectiveChart__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6802:2: rule__PerspectiveChart__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveChart__Group__2__Impl();
@@ -23454,23 +23619,23 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6754:1: rule__PerspectiveChart__Group__2__Impl : ( ( rule__PerspectiveChart__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6808:1: rule__PerspectiveChart__Group__2__Impl : ( ( rule__PerspectiveChart__RefAssignment_2 ) ) ;
     public final void rule__PerspectiveChart__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6758:1: ( ( ( rule__PerspectiveChart__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6759:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6812:1: ( ( ( rule__PerspectiveChart__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6813:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6759:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6760:2: ( rule__PerspectiveChart__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6813:1: ( ( rule__PerspectiveChart__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6814:2: ( rule__PerspectiveChart__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6761:2: ( rule__PerspectiveChart__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6761:3: rule__PerspectiveChart__RefAssignment_2
+            // InternalPerspectiveDsl.g:6815:2: ( rule__PerspectiveChart__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6815:3: rule__PerspectiveChart__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveChart__RefAssignment_2();
@@ -23505,14 +23670,14 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__0"
-    // InternalPerspectiveDsl.g:6770:1: rule__PerspectiveReport__Group__0 : rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1 ;
+    // InternalPerspectiveDsl.g:6824:1: rule__PerspectiveReport__Group__0 : rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1 ;
     public final void rule__PerspectiveReport__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6774:1: ( rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1 )
-            // InternalPerspectiveDsl.g:6775:2: rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1
+            // InternalPerspectiveDsl.g:6828:1: ( rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1 )
+            // InternalPerspectiveDsl.g:6829:2: rule__PerspectiveReport__Group__0__Impl rule__PerspectiveReport__Group__1
             {
             pushFollow(FOLLOW_35);
             rule__PerspectiveReport__Group__0__Impl();
@@ -23543,23 +23708,23 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6782:1: rule__PerspectiveReport__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6836:1: rule__PerspectiveReport__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveReport__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6786:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6787:1: ( () )
+            // InternalPerspectiveDsl.g:6840:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6841:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6787:1: ( () )
-            // InternalPerspectiveDsl.g:6788:2: ()
+            // InternalPerspectiveDsl.g:6841:1: ( () )
+            // InternalPerspectiveDsl.g:6842:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getPerspectiveReportAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6789:2: ()
-            // InternalPerspectiveDsl.g:6789:3: 
+            // InternalPerspectiveDsl.g:6843:2: ()
+            // InternalPerspectiveDsl.g:6843:3: 
             {
             }
 
@@ -23584,14 +23749,14 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__1"
-    // InternalPerspectiveDsl.g:6797:1: rule__PerspectiveReport__Group__1 : rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2 ;
+    // InternalPerspectiveDsl.g:6851:1: rule__PerspectiveReport__Group__1 : rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2 ;
     public final void rule__PerspectiveReport__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6801:1: ( rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2 )
-            // InternalPerspectiveDsl.g:6802:2: rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2
+            // InternalPerspectiveDsl.g:6855:1: ( rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2 )
+            // InternalPerspectiveDsl.g:6856:2: rule__PerspectiveReport__Group__1__Impl rule__PerspectiveReport__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveReport__Group__1__Impl();
@@ -23622,22 +23787,22 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6809:1: rule__PerspectiveReport__Group__1__Impl : ( 'report' ) ;
+    // InternalPerspectiveDsl.g:6863:1: rule__PerspectiveReport__Group__1__Impl : ( 'report' ) ;
     public final void rule__PerspectiveReport__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6813:1: ( ( 'report' ) )
-            // InternalPerspectiveDsl.g:6814:1: ( 'report' )
+            // InternalPerspectiveDsl.g:6867:1: ( ( 'report' ) )
+            // InternalPerspectiveDsl.g:6868:1: ( 'report' )
             {
-            // InternalPerspectiveDsl.g:6814:1: ( 'report' )
-            // InternalPerspectiveDsl.g:6815:2: 'report'
+            // InternalPerspectiveDsl.g:6868:1: ( 'report' )
+            // InternalPerspectiveDsl.g:6869:2: 'report'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getReportKeyword_1()); 
             }
-            match(input,76,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveReportAccess().getReportKeyword_1()); 
             }
@@ -23663,14 +23828,14 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__2"
-    // InternalPerspectiveDsl.g:6824:1: rule__PerspectiveReport__Group__2 : rule__PerspectiveReport__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6878:1: rule__PerspectiveReport__Group__2 : rule__PerspectiveReport__Group__2__Impl ;
     public final void rule__PerspectiveReport__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6828:1: ( rule__PerspectiveReport__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6829:2: rule__PerspectiveReport__Group__2__Impl
+            // InternalPerspectiveDsl.g:6882:1: ( rule__PerspectiveReport__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6883:2: rule__PerspectiveReport__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveReport__Group__2__Impl();
@@ -23696,23 +23861,23 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6835:1: rule__PerspectiveReport__Group__2__Impl : ( ( rule__PerspectiveReport__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6889:1: rule__PerspectiveReport__Group__2__Impl : ( ( rule__PerspectiveReport__RefAssignment_2 ) ) ;
     public final void rule__PerspectiveReport__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6839:1: ( ( ( rule__PerspectiveReport__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6840:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6893:1: ( ( ( rule__PerspectiveReport__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6894:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6840:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6841:2: ( rule__PerspectiveReport__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6894:1: ( ( rule__PerspectiveReport__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6895:2: ( rule__PerspectiveReport__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6842:2: ( rule__PerspectiveReport__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6842:3: rule__PerspectiveReport__RefAssignment_2
+            // InternalPerspectiveDsl.g:6896:2: ( rule__PerspectiveReport__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6896:3: rule__PerspectiveReport__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveReport__RefAssignment_2();
@@ -23747,14 +23912,14 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__0"
-    // InternalPerspectiveDsl.g:6851:1: rule__PerspectiveOrganization__Group__0 : rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1 ;
+    // InternalPerspectiveDsl.g:6905:1: rule__PerspectiveOrganization__Group__0 : rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1 ;
     public final void rule__PerspectiveOrganization__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6855:1: ( rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1 )
-            // InternalPerspectiveDsl.g:6856:2: rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1
+            // InternalPerspectiveDsl.g:6909:1: ( rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1 )
+            // InternalPerspectiveDsl.g:6910:2: rule__PerspectiveOrganization__Group__0__Impl rule__PerspectiveOrganization__Group__1
             {
             pushFollow(FOLLOW_36);
             rule__PerspectiveOrganization__Group__0__Impl();
@@ -23785,23 +23950,23 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6863:1: rule__PerspectiveOrganization__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6917:1: rule__PerspectiveOrganization__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveOrganization__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6867:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6868:1: ( () )
+            // InternalPerspectiveDsl.g:6921:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:6922:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6868:1: ( () )
-            // InternalPerspectiveDsl.g:6869:2: ()
+            // InternalPerspectiveDsl.g:6922:1: ( () )
+            // InternalPerspectiveDsl.g:6923:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getPerspectiveOrganizationAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6870:2: ()
-            // InternalPerspectiveDsl.g:6870:3: 
+            // InternalPerspectiveDsl.g:6924:2: ()
+            // InternalPerspectiveDsl.g:6924:3: 
             {
             }
 
@@ -23826,14 +23991,14 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__1"
-    // InternalPerspectiveDsl.g:6878:1: rule__PerspectiveOrganization__Group__1 : rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2 ;
+    // InternalPerspectiveDsl.g:6932:1: rule__PerspectiveOrganization__Group__1 : rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2 ;
     public final void rule__PerspectiveOrganization__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6882:1: ( rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2 )
-            // InternalPerspectiveDsl.g:6883:2: rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2
+            // InternalPerspectiveDsl.g:6936:1: ( rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2 )
+            // InternalPerspectiveDsl.g:6937:2: rule__PerspectiveOrganization__Group__1__Impl rule__PerspectiveOrganization__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveOrganization__Group__1__Impl();
@@ -23864,22 +24029,22 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6890:1: rule__PerspectiveOrganization__Group__1__Impl : ( 'organigram' ) ;
+    // InternalPerspectiveDsl.g:6944:1: rule__PerspectiveOrganization__Group__1__Impl : ( 'organigram' ) ;
     public final void rule__PerspectiveOrganization__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6894:1: ( ( 'organigram' ) )
-            // InternalPerspectiveDsl.g:6895:1: ( 'organigram' )
+            // InternalPerspectiveDsl.g:6948:1: ( ( 'organigram' ) )
+            // InternalPerspectiveDsl.g:6949:1: ( 'organigram' )
             {
-            // InternalPerspectiveDsl.g:6895:1: ( 'organigram' )
-            // InternalPerspectiveDsl.g:6896:2: 'organigram'
+            // InternalPerspectiveDsl.g:6949:1: ( 'organigram' )
+            // InternalPerspectiveDsl.g:6950:2: 'organigram'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1()); 
             }
-            match(input,77,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1()); 
             }
@@ -23905,14 +24070,14 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__2"
-    // InternalPerspectiveDsl.g:6905:1: rule__PerspectiveOrganization__Group__2 : rule__PerspectiveOrganization__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:6959:1: rule__PerspectiveOrganization__Group__2 : rule__PerspectiveOrganization__Group__2__Impl ;
     public final void rule__PerspectiveOrganization__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6909:1: ( rule__PerspectiveOrganization__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6910:2: rule__PerspectiveOrganization__Group__2__Impl
+            // InternalPerspectiveDsl.g:6963:1: ( rule__PerspectiveOrganization__Group__2__Impl )
+            // InternalPerspectiveDsl.g:6964:2: rule__PerspectiveOrganization__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveOrganization__Group__2__Impl();
@@ -23938,23 +24103,23 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6916:1: rule__PerspectiveOrganization__Group__2__Impl : ( ( rule__PerspectiveOrganization__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:6970:1: rule__PerspectiveOrganization__Group__2__Impl : ( ( rule__PerspectiveOrganization__RefAssignment_2 ) ) ;
     public final void rule__PerspectiveOrganization__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6920:1: ( ( ( rule__PerspectiveOrganization__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:6921:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6974:1: ( ( ( rule__PerspectiveOrganization__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:6975:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:6921:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:6922:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6975:1: ( ( rule__PerspectiveOrganization__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:6976:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:6923:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:6923:3: rule__PerspectiveOrganization__RefAssignment_2
+            // InternalPerspectiveDsl.g:6977:2: ( rule__PerspectiveOrganization__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:6977:3: rule__PerspectiveOrganization__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveOrganization__RefAssignment_2();
@@ -23989,14 +24154,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__0"
-    // InternalPerspectiveDsl.g:6932:1: rule__PerspectiveTopology__Group__0 : rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1 ;
+    // InternalPerspectiveDsl.g:6986:1: rule__PerspectiveTopology__Group__0 : rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1 ;
     public final void rule__PerspectiveTopology__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6936:1: ( rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1 )
-            // InternalPerspectiveDsl.g:6937:2: rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1
+            // InternalPerspectiveDsl.g:6990:1: ( rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1 )
+            // InternalPerspectiveDsl.g:6991:2: rule__PerspectiveTopology__Group__0__Impl rule__PerspectiveTopology__Group__1
             {
             pushFollow(FOLLOW_37);
             rule__PerspectiveTopology__Group__0__Impl();
@@ -24027,23 +24192,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__0__Impl"
-    // InternalPerspectiveDsl.g:6944:1: rule__PerspectiveTopology__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:6998:1: rule__PerspectiveTopology__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveTopology__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6948:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:6949:1: ( () )
+            // InternalPerspectiveDsl.g:7002:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7003:1: ( () )
             {
-            // InternalPerspectiveDsl.g:6949:1: ( () )
-            // InternalPerspectiveDsl.g:6950:2: ()
+            // InternalPerspectiveDsl.g:7003:1: ( () )
+            // InternalPerspectiveDsl.g:7004:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getPerspectiveTopologyAction_0()); 
             }
-            // InternalPerspectiveDsl.g:6951:2: ()
-            // InternalPerspectiveDsl.g:6951:3: 
+            // InternalPerspectiveDsl.g:7005:2: ()
+            // InternalPerspectiveDsl.g:7005:3: 
             {
             }
 
@@ -24068,14 +24233,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__1"
-    // InternalPerspectiveDsl.g:6959:1: rule__PerspectiveTopology__Group__1 : rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2 ;
+    // InternalPerspectiveDsl.g:7013:1: rule__PerspectiveTopology__Group__1 : rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2 ;
     public final void rule__PerspectiveTopology__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6963:1: ( rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2 )
-            // InternalPerspectiveDsl.g:6964:2: rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2
+            // InternalPerspectiveDsl.g:7017:1: ( rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2 )
+            // InternalPerspectiveDsl.g:7018:2: rule__PerspectiveTopology__Group__1__Impl rule__PerspectiveTopology__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveTopology__Group__1__Impl();
@@ -24106,22 +24271,22 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__1__Impl"
-    // InternalPerspectiveDsl.g:6971:1: rule__PerspectiveTopology__Group__1__Impl : ( 'topology' ) ;
+    // InternalPerspectiveDsl.g:7025:1: rule__PerspectiveTopology__Group__1__Impl : ( 'topology' ) ;
     public final void rule__PerspectiveTopology__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6975:1: ( ( 'topology' ) )
-            // InternalPerspectiveDsl.g:6976:1: ( 'topology' )
+            // InternalPerspectiveDsl.g:7029:1: ( ( 'topology' ) )
+            // InternalPerspectiveDsl.g:7030:1: ( 'topology' )
             {
-            // InternalPerspectiveDsl.g:6976:1: ( 'topology' )
-            // InternalPerspectiveDsl.g:6977:2: 'topology'
+            // InternalPerspectiveDsl.g:7030:1: ( 'topology' )
+            // InternalPerspectiveDsl.g:7031:2: 'topology'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1()); 
             }
-            match(input,78,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1()); 
             }
@@ -24147,14 +24312,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__2"
-    // InternalPerspectiveDsl.g:6986:1: rule__PerspectiveTopology__Group__2 : rule__PerspectiveTopology__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:7040:1: rule__PerspectiveTopology__Group__2 : rule__PerspectiveTopology__Group__2__Impl ;
     public final void rule__PerspectiveTopology__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:6990:1: ( rule__PerspectiveTopology__Group__2__Impl )
-            // InternalPerspectiveDsl.g:6991:2: rule__PerspectiveTopology__Group__2__Impl
+            // InternalPerspectiveDsl.g:7044:1: ( rule__PerspectiveTopology__Group__2__Impl )
+            // InternalPerspectiveDsl.g:7045:2: rule__PerspectiveTopology__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTopology__Group__2__Impl();
@@ -24180,23 +24345,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__Group__2__Impl"
-    // InternalPerspectiveDsl.g:6997:1: rule__PerspectiveTopology__Group__2__Impl : ( ( rule__PerspectiveTopology__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:7051:1: rule__PerspectiveTopology__Group__2__Impl : ( ( rule__PerspectiveTopology__RefAssignment_2 ) ) ;
     public final void rule__PerspectiveTopology__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7001:1: ( ( ( rule__PerspectiveTopology__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:7002:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7055:1: ( ( ( rule__PerspectiveTopology__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7056:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:7002:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:7003:2: ( rule__PerspectiveTopology__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:7056:1: ( ( rule__PerspectiveTopology__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7057:2: ( rule__PerspectiveTopology__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:7004:2: ( rule__PerspectiveTopology__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:7004:3: rule__PerspectiveTopology__RefAssignment_2
+            // InternalPerspectiveDsl.g:7058:2: ( rule__PerspectiveTopology__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:7058:3: rule__PerspectiveTopology__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTopology__RefAssignment_2();
@@ -24231,14 +24396,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__0"
-    // InternalPerspectiveDsl.g:7013:1: rule__PerspectiveDialog__Group__0 : rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1 ;
+    // InternalPerspectiveDsl.g:7067:1: rule__PerspectiveDialog__Group__0 : rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1 ;
     public final void rule__PerspectiveDialog__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7017:1: ( rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1 )
-            // InternalPerspectiveDsl.g:7018:2: rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1
+            // InternalPerspectiveDsl.g:7071:1: ( rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1 )
+            // InternalPerspectiveDsl.g:7072:2: rule__PerspectiveDialog__Group__0__Impl rule__PerspectiveDialog__Group__1
             {
             pushFollow(FOLLOW_38);
             rule__PerspectiveDialog__Group__0__Impl();
@@ -24269,23 +24434,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7025:1: rule__PerspectiveDialog__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7079:1: rule__PerspectiveDialog__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveDialog__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7029:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7030:1: ( () )
+            // InternalPerspectiveDsl.g:7083:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7084:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7030:1: ( () )
-            // InternalPerspectiveDsl.g:7031:2: ()
+            // InternalPerspectiveDsl.g:7084:1: ( () )
+            // InternalPerspectiveDsl.g:7085:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getPerspectiveDialogAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7032:2: ()
-            // InternalPerspectiveDsl.g:7032:3: 
+            // InternalPerspectiveDsl.g:7086:2: ()
+            // InternalPerspectiveDsl.g:7086:3: 
             {
             }
 
@@ -24310,14 +24475,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__1"
-    // InternalPerspectiveDsl.g:7040:1: rule__PerspectiveDialog__Group__1 : rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2 ;
+    // InternalPerspectiveDsl.g:7094:1: rule__PerspectiveDialog__Group__1 : rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2 ;
     public final void rule__PerspectiveDialog__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7044:1: ( rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2 )
-            // InternalPerspectiveDsl.g:7045:2: rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2
+            // InternalPerspectiveDsl.g:7098:1: ( rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2 )
+            // InternalPerspectiveDsl.g:7099:2: rule__PerspectiveDialog__Group__1__Impl rule__PerspectiveDialog__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveDialog__Group__1__Impl();
@@ -24348,22 +24513,22 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7052:1: rule__PerspectiveDialog__Group__1__Impl : ( 'dialog' ) ;
+    // InternalPerspectiveDsl.g:7106:1: rule__PerspectiveDialog__Group__1__Impl : ( 'dialog' ) ;
     public final void rule__PerspectiveDialog__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7056:1: ( ( 'dialog' ) )
-            // InternalPerspectiveDsl.g:7057:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:7110:1: ( ( 'dialog' ) )
+            // InternalPerspectiveDsl.g:7111:1: ( 'dialog' )
             {
-            // InternalPerspectiveDsl.g:7057:1: ( 'dialog' )
-            // InternalPerspectiveDsl.g:7058:2: 'dialog'
+            // InternalPerspectiveDsl.g:7111:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:7112:2: 'dialog'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1()); 
             }
-            match(input,79,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1()); 
             }
@@ -24389,14 +24554,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__2"
-    // InternalPerspectiveDsl.g:7067:1: rule__PerspectiveDialog__Group__2 : rule__PerspectiveDialog__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:7121:1: rule__PerspectiveDialog__Group__2 : rule__PerspectiveDialog__Group__2__Impl ;
     public final void rule__PerspectiveDialog__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7071:1: ( rule__PerspectiveDialog__Group__2__Impl )
-            // InternalPerspectiveDsl.g:7072:2: rule__PerspectiveDialog__Group__2__Impl
+            // InternalPerspectiveDsl.g:7125:1: ( rule__PerspectiveDialog__Group__2__Impl )
+            // InternalPerspectiveDsl.g:7126:2: rule__PerspectiveDialog__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDialog__Group__2__Impl();
@@ -24422,23 +24587,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7078:1: rule__PerspectiveDialog__Group__2__Impl : ( ( rule__PerspectiveDialog__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:7132:1: rule__PerspectiveDialog__Group__2__Impl : ( ( rule__PerspectiveDialog__RefAssignment_2 ) ) ;
     public final void rule__PerspectiveDialog__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7082:1: ( ( ( rule__PerspectiveDialog__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:7083:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7136:1: ( ( ( rule__PerspectiveDialog__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7137:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:7083:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:7084:2: ( rule__PerspectiveDialog__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:7137:1: ( ( rule__PerspectiveDialog__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7138:2: ( rule__PerspectiveDialog__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:7085:2: ( rule__PerspectiveDialog__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:7085:3: rule__PerspectiveDialog__RefAssignment_2
+            // InternalPerspectiveDsl.g:7139:2: ( rule__PerspectiveDialog__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:7139:3: rule__PerspectiveDialog__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDialog__RefAssignment_2();
@@ -24473,14 +24638,14 @@
 
 
     // $ANTLR start "rule__PerspectiveBPMN__Group__0"
-    // InternalPerspectiveDsl.g:7094:1: rule__PerspectiveBPMN__Group__0 : rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1 ;
+    // InternalPerspectiveDsl.g:7148:1: rule__PerspectiveBPMN__Group__0 : rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1 ;
     public final void rule__PerspectiveBPMN__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7098:1: ( rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1 )
-            // InternalPerspectiveDsl.g:7099:2: rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1
+            // InternalPerspectiveDsl.g:7152:1: ( rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1 )
+            // InternalPerspectiveDsl.g:7153:2: rule__PerspectiveBPMN__Group__0__Impl rule__PerspectiveBPMN__Group__1
             {
             pushFollow(FOLLOW_39);
             rule__PerspectiveBPMN__Group__0__Impl();
@@ -24511,23 +24676,23 @@
 
 
     // $ANTLR start "rule__PerspectiveBPMN__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7106:1: rule__PerspectiveBPMN__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7160:1: rule__PerspectiveBPMN__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveBPMN__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7110:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7111:1: ( () )
+            // InternalPerspectiveDsl.g:7164:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7165:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7111:1: ( () )
-            // InternalPerspectiveDsl.g:7112:2: ()
+            // InternalPerspectiveDsl.g:7165:1: ( () )
+            // InternalPerspectiveDsl.g:7166:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveBPMNAccess().getPerspectiveBPMNAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7113:2: ()
-            // InternalPerspectiveDsl.g:7113:3: 
+            // InternalPerspectiveDsl.g:7167:2: ()
+            // InternalPerspectiveDsl.g:7167:3: 
             {
             }
 
@@ -24552,14 +24717,14 @@
 
 
     // $ANTLR start "rule__PerspectiveBPMN__Group__1"
-    // InternalPerspectiveDsl.g:7121:1: rule__PerspectiveBPMN__Group__1 : rule__PerspectiveBPMN__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:7175:1: rule__PerspectiveBPMN__Group__1 : rule__PerspectiveBPMN__Group__1__Impl ;
     public final void rule__PerspectiveBPMN__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7125:1: ( rule__PerspectiveBPMN__Group__1__Impl )
-            // InternalPerspectiveDsl.g:7126:2: rule__PerspectiveBPMN__Group__1__Impl
+            // InternalPerspectiveDsl.g:7179:1: ( rule__PerspectiveBPMN__Group__1__Impl )
+            // InternalPerspectiveDsl.g:7180:2: rule__PerspectiveBPMN__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveBPMN__Group__1__Impl();
@@ -24585,22 +24750,22 @@
 
 
     // $ANTLR start "rule__PerspectiveBPMN__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7132:1: rule__PerspectiveBPMN__Group__1__Impl : ( 'bpmn' ) ;
+    // InternalPerspectiveDsl.g:7186:1: rule__PerspectiveBPMN__Group__1__Impl : ( 'bpmn' ) ;
     public final void rule__PerspectiveBPMN__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7136:1: ( ( 'bpmn' ) )
-            // InternalPerspectiveDsl.g:7137:1: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:7190:1: ( ( 'bpmn' ) )
+            // InternalPerspectiveDsl.g:7191:1: ( 'bpmn' )
             {
-            // InternalPerspectiveDsl.g:7137:1: ( 'bpmn' )
-            // InternalPerspectiveDsl.g:7138:2: 'bpmn'
+            // InternalPerspectiveDsl.g:7191:1: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:7192:2: 'bpmn'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1()); 
             }
@@ -24626,14 +24791,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__0"
-    // InternalPerspectiveDsl.g:7148:1: rule__PerspectiveKanban__Group__0 : rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1 ;
+    // InternalPerspectiveDsl.g:7202:1: rule__PerspectiveKanban__Group__0 : rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1 ;
     public final void rule__PerspectiveKanban__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7152:1: ( rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1 )
-            // InternalPerspectiveDsl.g:7153:2: rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1
+            // InternalPerspectiveDsl.g:7206:1: ( rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1 )
+            // InternalPerspectiveDsl.g:7207:2: rule__PerspectiveKanban__Group__0__Impl rule__PerspectiveKanban__Group__1
             {
             pushFollow(FOLLOW_40);
             rule__PerspectiveKanban__Group__0__Impl();
@@ -24664,23 +24829,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7160:1: rule__PerspectiveKanban__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7214:1: rule__PerspectiveKanban__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveKanban__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7164:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7165:1: ( () )
+            // InternalPerspectiveDsl.g:7218:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7219:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7165:1: ( () )
-            // InternalPerspectiveDsl.g:7166:2: ()
+            // InternalPerspectiveDsl.g:7219:1: ( () )
+            // InternalPerspectiveDsl.g:7220:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getPerspectiveKanbanAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7167:2: ()
-            // InternalPerspectiveDsl.g:7167:3: 
+            // InternalPerspectiveDsl.g:7221:2: ()
+            // InternalPerspectiveDsl.g:7221:3: 
             {
             }
 
@@ -24705,14 +24870,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__1"
-    // InternalPerspectiveDsl.g:7175:1: rule__PerspectiveKanban__Group__1 : rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2 ;
+    // InternalPerspectiveDsl.g:7229:1: rule__PerspectiveKanban__Group__1 : rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2 ;
     public final void rule__PerspectiveKanban__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7179:1: ( rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2 )
-            // InternalPerspectiveDsl.g:7180:2: rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2
+            // InternalPerspectiveDsl.g:7233:1: ( rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2 )
+            // InternalPerspectiveDsl.g:7234:2: rule__PerspectiveKanban__Group__1__Impl rule__PerspectiveKanban__Group__2
             {
             pushFollow(FOLLOW_41);
             rule__PerspectiveKanban__Group__1__Impl();
@@ -24743,22 +24908,22 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7187:1: rule__PerspectiveKanban__Group__1__Impl : ( 'kanban' ) ;
+    // InternalPerspectiveDsl.g:7241:1: rule__PerspectiveKanban__Group__1__Impl : ( 'kanban' ) ;
     public final void rule__PerspectiveKanban__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7191:1: ( ( 'kanban' ) )
-            // InternalPerspectiveDsl.g:7192:1: ( 'kanban' )
+            // InternalPerspectiveDsl.g:7245:1: ( ( 'kanban' ) )
+            // InternalPerspectiveDsl.g:7246:1: ( 'kanban' )
             {
-            // InternalPerspectiveDsl.g:7192:1: ( 'kanban' )
-            // InternalPerspectiveDsl.g:7193:2: 'kanban'
+            // InternalPerspectiveDsl.g:7246:1: ( 'kanban' )
+            // InternalPerspectiveDsl.g:7247:2: 'kanban'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1()); 
             }
@@ -24784,14 +24949,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__2"
-    // InternalPerspectiveDsl.g:7202:1: rule__PerspectiveKanban__Group__2 : rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3 ;
+    // InternalPerspectiveDsl.g:7256:1: rule__PerspectiveKanban__Group__2 : rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3 ;
     public final void rule__PerspectiveKanban__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7206:1: ( rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3 )
-            // InternalPerspectiveDsl.g:7207:2: rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3
+            // InternalPerspectiveDsl.g:7260:1: ( rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3 )
+            // InternalPerspectiveDsl.g:7261:2: rule__PerspectiveKanban__Group__2__Impl rule__PerspectiveKanban__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveKanban__Group__2__Impl();
@@ -24822,22 +24987,22 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7214:1: rule__PerspectiveKanban__Group__2__Impl : ( 'of' ) ;
+    // InternalPerspectiveDsl.g:7268:1: rule__PerspectiveKanban__Group__2__Impl : ( 'of' ) ;
     public final void rule__PerspectiveKanban__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7218:1: ( ( 'of' ) )
-            // InternalPerspectiveDsl.g:7219:1: ( 'of' )
+            // InternalPerspectiveDsl.g:7272:1: ( ( 'of' ) )
+            // InternalPerspectiveDsl.g:7273:1: ( 'of' )
             {
-            // InternalPerspectiveDsl.g:7219:1: ( 'of' )
-            // InternalPerspectiveDsl.g:7220:2: 'of'
+            // InternalPerspectiveDsl.g:7273:1: ( 'of' )
+            // InternalPerspectiveDsl.g:7274:2: 'of'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,84,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2()); 
             }
@@ -24863,14 +25028,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__3"
-    // InternalPerspectiveDsl.g:7229:1: rule__PerspectiveKanban__Group__3 : rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4 ;
+    // InternalPerspectiveDsl.g:7283:1: rule__PerspectiveKanban__Group__3 : rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4 ;
     public final void rule__PerspectiveKanban__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7233:1: ( rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4 )
-            // InternalPerspectiveDsl.g:7234:2: rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4
+            // InternalPerspectiveDsl.g:7287:1: ( rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4 )
+            // InternalPerspectiveDsl.g:7288:2: rule__PerspectiveKanban__Group__3__Impl rule__PerspectiveKanban__Group__4
             {
             pushFollow(FOLLOW_42);
             rule__PerspectiveKanban__Group__3__Impl();
@@ -24901,23 +25066,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__3__Impl"
-    // InternalPerspectiveDsl.g:7241:1: rule__PerspectiveKanban__Group__3__Impl : ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:7295:1: rule__PerspectiveKanban__Group__3__Impl : ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) ) ;
     public final void rule__PerspectiveKanban__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7245:1: ( ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:7246:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:7299:1: ( ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:7300:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:7246:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
-            // InternalPerspectiveDsl.g:7247:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:7300:1: ( ( rule__PerspectiveKanban__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:7301:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:7248:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
-            // InternalPerspectiveDsl.g:7248:3: rule__PerspectiveKanban__DtoRefAssignment_3
+            // InternalPerspectiveDsl.g:7302:2: ( rule__PerspectiveKanban__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:7302:3: rule__PerspectiveKanban__DtoRefAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveKanban__DtoRefAssignment_3();
@@ -24952,14 +25117,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__4"
-    // InternalPerspectiveDsl.g:7256:1: rule__PerspectiveKanban__Group__4 : rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5 ;
+    // InternalPerspectiveDsl.g:7310:1: rule__PerspectiveKanban__Group__4 : rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5 ;
     public final void rule__PerspectiveKanban__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7260:1: ( rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5 )
-            // InternalPerspectiveDsl.g:7261:2: rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5
+            // InternalPerspectiveDsl.g:7314:1: ( rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5 )
+            // InternalPerspectiveDsl.g:7315:2: rule__PerspectiveKanban__Group__4__Impl rule__PerspectiveKanban__Group__5
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveKanban__Group__4__Impl();
@@ -24990,22 +25155,22 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__4__Impl"
-    // InternalPerspectiveDsl.g:7268:1: rule__PerspectiveKanban__Group__4__Impl : ( 'card' ) ;
+    // InternalPerspectiveDsl.g:7322:1: rule__PerspectiveKanban__Group__4__Impl : ( 'card' ) ;
     public final void rule__PerspectiveKanban__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7272:1: ( ( 'card' ) )
-            // InternalPerspectiveDsl.g:7273:1: ( 'card' )
+            // InternalPerspectiveDsl.g:7326:1: ( ( 'card' ) )
+            // InternalPerspectiveDsl.g:7327:1: ( 'card' )
             {
-            // InternalPerspectiveDsl.g:7273:1: ( 'card' )
-            // InternalPerspectiveDsl.g:7274:2: 'card'
+            // InternalPerspectiveDsl.g:7327:1: ( 'card' )
+            // InternalPerspectiveDsl.g:7328:2: 'card'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4()); 
             }
-            match(input,83,FOLLOW_2); if (state.failed) return ;
+            match(input,85,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4()); 
             }
@@ -25031,14 +25196,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__5"
-    // InternalPerspectiveDsl.g:7283:1: rule__PerspectiveKanban__Group__5 : rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6 ;
+    // InternalPerspectiveDsl.g:7337:1: rule__PerspectiveKanban__Group__5 : rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6 ;
     public final void rule__PerspectiveKanban__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7287:1: ( rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6 )
-            // InternalPerspectiveDsl.g:7288:2: rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6
+            // InternalPerspectiveDsl.g:7341:1: ( rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6 )
+            // InternalPerspectiveDsl.g:7342:2: rule__PerspectiveKanban__Group__5__Impl rule__PerspectiveKanban__Group__6
             {
             pushFollow(FOLLOW_38);
             rule__PerspectiveKanban__Group__5__Impl();
@@ -25069,23 +25234,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__5__Impl"
-    // InternalPerspectiveDsl.g:7295:1: rule__PerspectiveKanban__Group__5__Impl : ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) ) ;
+    // InternalPerspectiveDsl.g:7349:1: rule__PerspectiveKanban__Group__5__Impl : ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) ) ;
     public final void rule__PerspectiveKanban__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7299:1: ( ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) ) )
-            // InternalPerspectiveDsl.g:7300:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
+            // InternalPerspectiveDsl.g:7353:1: ( ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:7354:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
             {
-            // InternalPerspectiveDsl.g:7300:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
-            // InternalPerspectiveDsl.g:7301:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
+            // InternalPerspectiveDsl.g:7354:1: ( ( rule__PerspectiveKanban__CardRefAssignment_5 ) )
+            // InternalPerspectiveDsl.g:7355:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getCardRefAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:7302:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
-            // InternalPerspectiveDsl.g:7302:3: rule__PerspectiveKanban__CardRefAssignment_5
+            // InternalPerspectiveDsl.g:7356:2: ( rule__PerspectiveKanban__CardRefAssignment_5 )
+            // InternalPerspectiveDsl.g:7356:3: rule__PerspectiveKanban__CardRefAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveKanban__CardRefAssignment_5();
@@ -25120,14 +25285,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__6"
-    // InternalPerspectiveDsl.g:7310:1: rule__PerspectiveKanban__Group__6 : rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7 ;
+    // InternalPerspectiveDsl.g:7364:1: rule__PerspectiveKanban__Group__6 : rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7 ;
     public final void rule__PerspectiveKanban__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7314:1: ( rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7 )
-            // InternalPerspectiveDsl.g:7315:2: rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7
+            // InternalPerspectiveDsl.g:7368:1: ( rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7 )
+            // InternalPerspectiveDsl.g:7369:2: rule__PerspectiveKanban__Group__6__Impl rule__PerspectiveKanban__Group__7
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveKanban__Group__6__Impl();
@@ -25158,22 +25323,22 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__6__Impl"
-    // InternalPerspectiveDsl.g:7322:1: rule__PerspectiveKanban__Group__6__Impl : ( 'dialog' ) ;
+    // InternalPerspectiveDsl.g:7376:1: rule__PerspectiveKanban__Group__6__Impl : ( 'dialog' ) ;
     public final void rule__PerspectiveKanban__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7326:1: ( ( 'dialog' ) )
-            // InternalPerspectiveDsl.g:7327:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:7380:1: ( ( 'dialog' ) )
+            // InternalPerspectiveDsl.g:7381:1: ( 'dialog' )
             {
-            // InternalPerspectiveDsl.g:7327:1: ( 'dialog' )
-            // InternalPerspectiveDsl.g:7328:2: 'dialog'
+            // InternalPerspectiveDsl.g:7381:1: ( 'dialog' )
+            // InternalPerspectiveDsl.g:7382:2: 'dialog'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6()); 
             }
-            match(input,79,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6()); 
             }
@@ -25199,14 +25364,14 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__7"
-    // InternalPerspectiveDsl.g:7337:1: rule__PerspectiveKanban__Group__7 : rule__PerspectiveKanban__Group__7__Impl ;
+    // InternalPerspectiveDsl.g:7391:1: rule__PerspectiveKanban__Group__7 : rule__PerspectiveKanban__Group__7__Impl ;
     public final void rule__PerspectiveKanban__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7341:1: ( rule__PerspectiveKanban__Group__7__Impl )
-            // InternalPerspectiveDsl.g:7342:2: rule__PerspectiveKanban__Group__7__Impl
+            // InternalPerspectiveDsl.g:7395:1: ( rule__PerspectiveKanban__Group__7__Impl )
+            // InternalPerspectiveDsl.g:7396:2: rule__PerspectiveKanban__Group__7__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveKanban__Group__7__Impl();
@@ -25232,23 +25397,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__Group__7__Impl"
-    // InternalPerspectiveDsl.g:7348:1: rule__PerspectiveKanban__Group__7__Impl : ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) ) ;
+    // InternalPerspectiveDsl.g:7402:1: rule__PerspectiveKanban__Group__7__Impl : ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) ) ;
     public final void rule__PerspectiveKanban__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7352:1: ( ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) ) )
-            // InternalPerspectiveDsl.g:7353:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
+            // InternalPerspectiveDsl.g:7406:1: ( ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) ) )
+            // InternalPerspectiveDsl.g:7407:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
             {
-            // InternalPerspectiveDsl.g:7353:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
-            // InternalPerspectiveDsl.g:7354:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
+            // InternalPerspectiveDsl.g:7407:1: ( ( rule__PerspectiveKanban__DialogRefAssignment_7 ) )
+            // InternalPerspectiveDsl.g:7408:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefAssignment_7()); 
             }
-            // InternalPerspectiveDsl.g:7355:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
-            // InternalPerspectiveDsl.g:7355:3: rule__PerspectiveKanban__DialogRefAssignment_7
+            // InternalPerspectiveDsl.g:7409:2: ( rule__PerspectiveKanban__DialogRefAssignment_7 )
+            // InternalPerspectiveDsl.g:7409:3: rule__PerspectiveKanban__DialogRefAssignment_7
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveKanban__DialogRefAssignment_7();
@@ -25283,14 +25448,14 @@
 
 
     // $ANTLR start "rule__PerspectiveWelcome__Group__0"
-    // InternalPerspectiveDsl.g:7364:1: rule__PerspectiveWelcome__Group__0 : rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1 ;
+    // InternalPerspectiveDsl.g:7418:1: rule__PerspectiveWelcome__Group__0 : rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1 ;
     public final void rule__PerspectiveWelcome__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7368:1: ( rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1 )
-            // InternalPerspectiveDsl.g:7369:2: rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1
+            // InternalPerspectiveDsl.g:7422:1: ( rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1 )
+            // InternalPerspectiveDsl.g:7423:2: rule__PerspectiveWelcome__Group__0__Impl rule__PerspectiveWelcome__Group__1
             {
             pushFollow(FOLLOW_43);
             rule__PerspectiveWelcome__Group__0__Impl();
@@ -25321,23 +25486,23 @@
 
 
     // $ANTLR start "rule__PerspectiveWelcome__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7376:1: rule__PerspectiveWelcome__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7430:1: rule__PerspectiveWelcome__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveWelcome__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7380:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7381:1: ( () )
+            // InternalPerspectiveDsl.g:7434:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7435:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7381:1: ( () )
-            // InternalPerspectiveDsl.g:7382:2: ()
+            // InternalPerspectiveDsl.g:7435:1: ( () )
+            // InternalPerspectiveDsl.g:7436:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveWelcomeAccess().getPerspectiveWelcomeAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7383:2: ()
-            // InternalPerspectiveDsl.g:7383:3: 
+            // InternalPerspectiveDsl.g:7437:2: ()
+            // InternalPerspectiveDsl.g:7437:3: 
             {
             }
 
@@ -25362,14 +25527,14 @@
 
 
     // $ANTLR start "rule__PerspectiveWelcome__Group__1"
-    // InternalPerspectiveDsl.g:7391:1: rule__PerspectiveWelcome__Group__1 : rule__PerspectiveWelcome__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:7445:1: rule__PerspectiveWelcome__Group__1 : rule__PerspectiveWelcome__Group__1__Impl ;
     public final void rule__PerspectiveWelcome__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7395:1: ( rule__PerspectiveWelcome__Group__1__Impl )
-            // InternalPerspectiveDsl.g:7396:2: rule__PerspectiveWelcome__Group__1__Impl
+            // InternalPerspectiveDsl.g:7449:1: ( rule__PerspectiveWelcome__Group__1__Impl )
+            // InternalPerspectiveDsl.g:7450:2: rule__PerspectiveWelcome__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveWelcome__Group__1__Impl();
@@ -25395,22 +25560,22 @@
 
 
     // $ANTLR start "rule__PerspectiveWelcome__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7402:1: rule__PerspectiveWelcome__Group__1__Impl : ( 'welcome' ) ;
+    // InternalPerspectiveDsl.g:7456:1: rule__PerspectiveWelcome__Group__1__Impl : ( 'welcome' ) ;
     public final void rule__PerspectiveWelcome__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7406:1: ( ( 'welcome' ) )
-            // InternalPerspectiveDsl.g:7407:1: ( 'welcome' )
+            // InternalPerspectiveDsl.g:7460:1: ( ( 'welcome' ) )
+            // InternalPerspectiveDsl.g:7461:1: ( 'welcome' )
             {
-            // InternalPerspectiveDsl.g:7407:1: ( 'welcome' )
-            // InternalPerspectiveDsl.g:7408:2: 'welcome'
+            // InternalPerspectiveDsl.g:7461:1: ( 'welcome' )
+            // InternalPerspectiveDsl.g:7462:2: 'welcome'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1()); 
             }
-            match(input,84,FOLLOW_2); if (state.failed) return ;
+            match(input,86,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1()); 
             }
@@ -25436,14 +25601,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__0"
-    // InternalPerspectiveDsl.g:7418:1: rule__PerspectiveSearch__Group__0 : rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1 ;
+    // InternalPerspectiveDsl.g:7472:1: rule__PerspectiveSearch__Group__0 : rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1 ;
     public final void rule__PerspectiveSearch__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7422:1: ( rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1 )
-            // InternalPerspectiveDsl.g:7423:2: rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1
+            // InternalPerspectiveDsl.g:7476:1: ( rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1 )
+            // InternalPerspectiveDsl.g:7477:2: rule__PerspectiveSearch__Group__0__Impl rule__PerspectiveSearch__Group__1
             {
             pushFollow(FOLLOW_44);
             rule__PerspectiveSearch__Group__0__Impl();
@@ -25474,23 +25639,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7430:1: rule__PerspectiveSearch__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7484:1: rule__PerspectiveSearch__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveSearch__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7434:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7435:1: ( () )
+            // InternalPerspectiveDsl.g:7488:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7489:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7435:1: ( () )
-            // InternalPerspectiveDsl.g:7436:2: ()
+            // InternalPerspectiveDsl.g:7489:1: ( () )
+            // InternalPerspectiveDsl.g:7490:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getPerspectiveSearchAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7437:2: ()
-            // InternalPerspectiveDsl.g:7437:3: 
+            // InternalPerspectiveDsl.g:7491:2: ()
+            // InternalPerspectiveDsl.g:7491:3: 
             {
             }
 
@@ -25515,14 +25680,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__1"
-    // InternalPerspectiveDsl.g:7445:1: rule__PerspectiveSearch__Group__1 : rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2 ;
+    // InternalPerspectiveDsl.g:7499:1: rule__PerspectiveSearch__Group__1 : rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2 ;
     public final void rule__PerspectiveSearch__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7449:1: ( rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2 )
-            // InternalPerspectiveDsl.g:7450:2: rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2
+            // InternalPerspectiveDsl.g:7503:1: ( rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2 )
+            // InternalPerspectiveDsl.g:7504:2: rule__PerspectiveSearch__Group__1__Impl rule__PerspectiveSearch__Group__2
             {
             pushFollow(FOLLOW_45);
             rule__PerspectiveSearch__Group__1__Impl();
@@ -25553,22 +25718,22 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7457:1: rule__PerspectiveSearch__Group__1__Impl : ( 'search' ) ;
+    // InternalPerspectiveDsl.g:7511:1: rule__PerspectiveSearch__Group__1__Impl : ( 'search' ) ;
     public final void rule__PerspectiveSearch__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7461:1: ( ( 'search' ) )
-            // InternalPerspectiveDsl.g:7462:1: ( 'search' )
+            // InternalPerspectiveDsl.g:7515:1: ( ( 'search' ) )
+            // InternalPerspectiveDsl.g:7516:1: ( 'search' )
             {
-            // InternalPerspectiveDsl.g:7462:1: ( 'search' )
-            // InternalPerspectiveDsl.g:7463:2: 'search'
+            // InternalPerspectiveDsl.g:7516:1: ( 'search' )
+            // InternalPerspectiveDsl.g:7517:2: 'search'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1()); 
             }
-            match(input,85,FOLLOW_2); if (state.failed) return ;
+            match(input,87,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1()); 
             }
@@ -25594,14 +25759,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__2"
-    // InternalPerspectiveDsl.g:7472:1: rule__PerspectiveSearch__Group__2 : rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3 ;
+    // InternalPerspectiveDsl.g:7526:1: rule__PerspectiveSearch__Group__2 : rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3 ;
     public final void rule__PerspectiveSearch__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7476:1: ( rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3 )
-            // InternalPerspectiveDsl.g:7477:2: rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3
+            // InternalPerspectiveDsl.g:7530:1: ( rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3 )
+            // InternalPerspectiveDsl.g:7531:2: rule__PerspectiveSearch__Group__2__Impl rule__PerspectiveSearch__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveSearch__Group__2__Impl();
@@ -25632,22 +25797,22 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7484:1: rule__PerspectiveSearch__Group__2__Impl : ( 'in' ) ;
+    // InternalPerspectiveDsl.g:7538:1: rule__PerspectiveSearch__Group__2__Impl : ( 'in' ) ;
     public final void rule__PerspectiveSearch__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7488:1: ( ( 'in' ) )
-            // InternalPerspectiveDsl.g:7489:1: ( 'in' )
+            // InternalPerspectiveDsl.g:7542:1: ( ( 'in' ) )
+            // InternalPerspectiveDsl.g:7543:1: ( 'in' )
             {
-            // InternalPerspectiveDsl.g:7489:1: ( 'in' )
-            // InternalPerspectiveDsl.g:7490:2: 'in'
+            // InternalPerspectiveDsl.g:7543:1: ( 'in' )
+            // InternalPerspectiveDsl.g:7544:2: 'in'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getInKeyword_2()); 
             }
-            match(input,86,FOLLOW_2); if (state.failed) return ;
+            match(input,88,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveSearchAccess().getInKeyword_2()); 
             }
@@ -25673,14 +25838,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__3"
-    // InternalPerspectiveDsl.g:7499:1: rule__PerspectiveSearch__Group__3 : rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4 ;
+    // InternalPerspectiveDsl.g:7553:1: rule__PerspectiveSearch__Group__3 : rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4 ;
     public final void rule__PerspectiveSearch__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7503:1: ( rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4 )
-            // InternalPerspectiveDsl.g:7504:2: rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4
+            // InternalPerspectiveDsl.g:7557:1: ( rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4 )
+            // InternalPerspectiveDsl.g:7558:2: rule__PerspectiveSearch__Group__3__Impl rule__PerspectiveSearch__Group__4
             {
             pushFollow(FOLLOW_46);
             rule__PerspectiveSearch__Group__3__Impl();
@@ -25711,23 +25876,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__3__Impl"
-    // InternalPerspectiveDsl.g:7511:1: rule__PerspectiveSearch__Group__3__Impl : ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:7565:1: rule__PerspectiveSearch__Group__3__Impl : ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) ) ;
     public final void rule__PerspectiveSearch__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7515:1: ( ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:7516:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:7569:1: ( ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:7570:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:7516:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
-            // InternalPerspectiveDsl.g:7517:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:7570:1: ( ( rule__PerspectiveSearch__DtoRefAssignment_3 ) )
+            // InternalPerspectiveDsl.g:7571:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDtoRefAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:7518:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
-            // InternalPerspectiveDsl.g:7518:3: rule__PerspectiveSearch__DtoRefAssignment_3
+            // InternalPerspectiveDsl.g:7572:2: ( rule__PerspectiveSearch__DtoRefAssignment_3 )
+            // InternalPerspectiveDsl.g:7572:3: rule__PerspectiveSearch__DtoRefAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__DtoRefAssignment_3();
@@ -25762,14 +25927,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__4"
-    // InternalPerspectiveDsl.g:7526:1: rule__PerspectiveSearch__Group__4 : rule__PerspectiveSearch__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:7580:1: rule__PerspectiveSearch__Group__4 : rule__PerspectiveSearch__Group__4__Impl ;
     public final void rule__PerspectiveSearch__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7530:1: ( rule__PerspectiveSearch__Group__4__Impl )
-            // InternalPerspectiveDsl.g:7531:2: rule__PerspectiveSearch__Group__4__Impl
+            // InternalPerspectiveDsl.g:7584:1: ( rule__PerspectiveSearch__Group__4__Impl )
+            // InternalPerspectiveDsl.g:7585:2: rule__PerspectiveSearch__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__Group__4__Impl();
@@ -25795,23 +25960,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group__4__Impl"
-    // InternalPerspectiveDsl.g:7537:1: rule__PerspectiveSearch__Group__4__Impl : ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) ) ;
+    // InternalPerspectiveDsl.g:7591:1: rule__PerspectiveSearch__Group__4__Impl : ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) ) ;
     public final void rule__PerspectiveSearch__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7541:1: ( ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) ) )
-            // InternalPerspectiveDsl.g:7542:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
+            // InternalPerspectiveDsl.g:7595:1: ( ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) ) )
+            // InternalPerspectiveDsl.g:7596:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
             {
-            // InternalPerspectiveDsl.g:7542:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
-            // InternalPerspectiveDsl.g:7543:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
+            // InternalPerspectiveDsl.g:7596:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4 ) )
+            // InternalPerspectiveDsl.g:7597:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4()); 
             }
-            // InternalPerspectiveDsl.g:7544:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
-            // InternalPerspectiveDsl.g:7544:3: rule__PerspectiveSearch__UnorderedGroup_4
+            // InternalPerspectiveDsl.g:7598:2: ( rule__PerspectiveSearch__UnorderedGroup_4 )
+            // InternalPerspectiveDsl.g:7598:3: rule__PerspectiveSearch__UnorderedGroup_4
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__UnorderedGroup_4();
@@ -25846,14 +26011,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_0__0"
-    // InternalPerspectiveDsl.g:7553:1: rule__PerspectiveSearch__Group_4_0__0 : rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1 ;
+    // InternalPerspectiveDsl.g:7607:1: rule__PerspectiveSearch__Group_4_0__0 : rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1 ;
     public final void rule__PerspectiveSearch__Group_4_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7557:1: ( rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1 )
-            // InternalPerspectiveDsl.g:7558:2: rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1
+            // InternalPerspectiveDsl.g:7611:1: ( rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1 )
+            // InternalPerspectiveDsl.g:7612:2: rule__PerspectiveSearch__Group_4_0__0__Impl rule__PerspectiveSearch__Group_4_0__1
             {
             pushFollow(FOLLOW_47);
             rule__PerspectiveSearch__Group_4_0__0__Impl();
@@ -25884,22 +26049,22 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_0__0__Impl"
-    // InternalPerspectiveDsl.g:7565:1: rule__PerspectiveSearch__Group_4_0__0__Impl : ( 'depth' ) ;
+    // InternalPerspectiveDsl.g:7619:1: rule__PerspectiveSearch__Group_4_0__0__Impl : ( 'depth' ) ;
     public final void rule__PerspectiveSearch__Group_4_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7569:1: ( ( 'depth' ) )
-            // InternalPerspectiveDsl.g:7570:1: ( 'depth' )
+            // InternalPerspectiveDsl.g:7623:1: ( ( 'depth' ) )
+            // InternalPerspectiveDsl.g:7624:1: ( 'depth' )
             {
-            // InternalPerspectiveDsl.g:7570:1: ( 'depth' )
-            // InternalPerspectiveDsl.g:7571:2: 'depth'
+            // InternalPerspectiveDsl.g:7624:1: ( 'depth' )
+            // InternalPerspectiveDsl.g:7625:2: 'depth'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0()); 
             }
-            match(input,87,FOLLOW_2); if (state.failed) return ;
+            match(input,89,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0()); 
             }
@@ -25925,14 +26090,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_0__1"
-    // InternalPerspectiveDsl.g:7580:1: rule__PerspectiveSearch__Group_4_0__1 : rule__PerspectiveSearch__Group_4_0__1__Impl ;
+    // InternalPerspectiveDsl.g:7634:1: rule__PerspectiveSearch__Group_4_0__1 : rule__PerspectiveSearch__Group_4_0__1__Impl ;
     public final void rule__PerspectiveSearch__Group_4_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7584:1: ( rule__PerspectiveSearch__Group_4_0__1__Impl )
-            // InternalPerspectiveDsl.g:7585:2: rule__PerspectiveSearch__Group_4_0__1__Impl
+            // InternalPerspectiveDsl.g:7638:1: ( rule__PerspectiveSearch__Group_4_0__1__Impl )
+            // InternalPerspectiveDsl.g:7639:2: rule__PerspectiveSearch__Group_4_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__Group_4_0__1__Impl();
@@ -25958,23 +26123,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_0__1__Impl"
-    // InternalPerspectiveDsl.g:7591:1: rule__PerspectiveSearch__Group_4_0__1__Impl : ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:7645:1: rule__PerspectiveSearch__Group_4_0__1__Impl : ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) ) ;
     public final void rule__PerspectiveSearch__Group_4_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7595:1: ( ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) ) )
-            // InternalPerspectiveDsl.g:7596:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
+            // InternalPerspectiveDsl.g:7649:1: ( ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) ) )
+            // InternalPerspectiveDsl.g:7650:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:7596:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
-            // InternalPerspectiveDsl.g:7597:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
+            // InternalPerspectiveDsl.g:7650:1: ( ( rule__PerspectiveSearch__DepthAssignment_4_0_1 ) )
+            // InternalPerspectiveDsl.g:7651:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDepthAssignment_4_0_1()); 
             }
-            // InternalPerspectiveDsl.g:7598:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
-            // InternalPerspectiveDsl.g:7598:3: rule__PerspectiveSearch__DepthAssignment_4_0_1
+            // InternalPerspectiveDsl.g:7652:2: ( rule__PerspectiveSearch__DepthAssignment_4_0_1 )
+            // InternalPerspectiveDsl.g:7652:3: rule__PerspectiveSearch__DepthAssignment_4_0_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__DepthAssignment_4_0_1();
@@ -26009,14 +26174,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_1__0"
-    // InternalPerspectiveDsl.g:7607:1: rule__PerspectiveSearch__Group_4_1__0 : rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1 ;
+    // InternalPerspectiveDsl.g:7661:1: rule__PerspectiveSearch__Group_4_1__0 : rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1 ;
     public final void rule__PerspectiveSearch__Group_4_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7611:1: ( rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1 )
-            // InternalPerspectiveDsl.g:7612:2: rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1
+            // InternalPerspectiveDsl.g:7665:1: ( rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1 )
+            // InternalPerspectiveDsl.g:7666:2: rule__PerspectiveSearch__Group_4_1__0__Impl rule__PerspectiveSearch__Group_4_1__1
             {
             pushFollow(FOLLOW_47);
             rule__PerspectiveSearch__Group_4_1__0__Impl();
@@ -26047,22 +26212,22 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_1__0__Impl"
-    // InternalPerspectiveDsl.g:7619:1: rule__PerspectiveSearch__Group_4_1__0__Impl : ( 'filterColumns' ) ;
+    // InternalPerspectiveDsl.g:7673:1: rule__PerspectiveSearch__Group_4_1__0__Impl : ( 'filterColumns' ) ;
     public final void rule__PerspectiveSearch__Group_4_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7623:1: ( ( 'filterColumns' ) )
-            // InternalPerspectiveDsl.g:7624:1: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:7677:1: ( ( 'filterColumns' ) )
+            // InternalPerspectiveDsl.g:7678:1: ( 'filterColumns' )
             {
-            // InternalPerspectiveDsl.g:7624:1: ( 'filterColumns' )
-            // InternalPerspectiveDsl.g:7625:2: 'filterColumns'
+            // InternalPerspectiveDsl.g:7678:1: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:7679:2: 'filterColumns'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0()); 
             }
-            match(input,88,FOLLOW_2); if (state.failed) return ;
+            match(input,90,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0()); 
             }
@@ -26088,14 +26253,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_1__1"
-    // InternalPerspectiveDsl.g:7634:1: rule__PerspectiveSearch__Group_4_1__1 : rule__PerspectiveSearch__Group_4_1__1__Impl ;
+    // InternalPerspectiveDsl.g:7688:1: rule__PerspectiveSearch__Group_4_1__1 : rule__PerspectiveSearch__Group_4_1__1__Impl ;
     public final void rule__PerspectiveSearch__Group_4_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7638:1: ( rule__PerspectiveSearch__Group_4_1__1__Impl )
-            // InternalPerspectiveDsl.g:7639:2: rule__PerspectiveSearch__Group_4_1__1__Impl
+            // InternalPerspectiveDsl.g:7692:1: ( rule__PerspectiveSearch__Group_4_1__1__Impl )
+            // InternalPerspectiveDsl.g:7693:2: rule__PerspectiveSearch__Group_4_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__Group_4_1__1__Impl();
@@ -26121,23 +26286,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__Group_4_1__1__Impl"
-    // InternalPerspectiveDsl.g:7645:1: rule__PerspectiveSearch__Group_4_1__1__Impl : ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:7699:1: rule__PerspectiveSearch__Group_4_1__1__Impl : ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) ) ;
     public final void rule__PerspectiveSearch__Group_4_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7649:1: ( ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) ) )
-            // InternalPerspectiveDsl.g:7650:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
+            // InternalPerspectiveDsl.g:7703:1: ( ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) ) )
+            // InternalPerspectiveDsl.g:7704:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:7650:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
-            // InternalPerspectiveDsl.g:7651:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
+            // InternalPerspectiveDsl.g:7704:1: ( ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 ) )
+            // InternalPerspectiveDsl.g:7705:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getFilterColsAssignment_4_1_1()); 
             }
-            // InternalPerspectiveDsl.g:7652:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
-            // InternalPerspectiveDsl.g:7652:3: rule__PerspectiveSearch__FilterColsAssignment_4_1_1
+            // InternalPerspectiveDsl.g:7706:2: ( rule__PerspectiveSearch__FilterColsAssignment_4_1_1 )
+            // InternalPerspectiveDsl.g:7706:3: rule__PerspectiveSearch__FilterColsAssignment_4_1_1
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__FilterColsAssignment_4_1_1();
@@ -26172,14 +26337,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__0"
-    // InternalPerspectiveDsl.g:7661:1: rule__PerspectiveDataInterchange__Group__0 : rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1 ;
+    // InternalPerspectiveDsl.g:7715:1: rule__PerspectiveDataInterchange__Group__0 : rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1 ;
     public final void rule__PerspectiveDataInterchange__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7665:1: ( rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1 )
-            // InternalPerspectiveDsl.g:7666:2: rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1
+            // InternalPerspectiveDsl.g:7719:1: ( rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1 )
+            // InternalPerspectiveDsl.g:7720:2: rule__PerspectiveDataInterchange__Group__0__Impl rule__PerspectiveDataInterchange__Group__1
             {
             pushFollow(FOLLOW_48);
             rule__PerspectiveDataInterchange__Group__0__Impl();
@@ -26210,23 +26375,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7673:1: rule__PerspectiveDataInterchange__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7727:1: rule__PerspectiveDataInterchange__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveDataInterchange__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7677:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7678:1: ( () )
+            // InternalPerspectiveDsl.g:7731:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7732:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7678:1: ( () )
-            // InternalPerspectiveDsl.g:7679:2: ()
+            // InternalPerspectiveDsl.g:7732:1: ( () )
+            // InternalPerspectiveDsl.g:7733:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getPerspectiveDataInterchangeAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7680:2: ()
-            // InternalPerspectiveDsl.g:7680:3: 
+            // InternalPerspectiveDsl.g:7734:2: ()
+            // InternalPerspectiveDsl.g:7734:3: 
             {
             }
 
@@ -26251,14 +26416,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__1"
-    // InternalPerspectiveDsl.g:7688:1: rule__PerspectiveDataInterchange__Group__1 : rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2 ;
+    // InternalPerspectiveDsl.g:7742:1: rule__PerspectiveDataInterchange__Group__1 : rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2 ;
     public final void rule__PerspectiveDataInterchange__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7692:1: ( rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2 )
-            // InternalPerspectiveDsl.g:7693:2: rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2
+            // InternalPerspectiveDsl.g:7746:1: ( rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2 )
+            // InternalPerspectiveDsl.g:7747:2: rule__PerspectiveDataInterchange__Group__1__Impl rule__PerspectiveDataInterchange__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__PerspectiveDataInterchange__Group__1__Impl();
@@ -26289,22 +26454,22 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7700:1: rule__PerspectiveDataInterchange__Group__1__Impl : ( 'dataInterchange' ) ;
+    // InternalPerspectiveDsl.g:7754:1: rule__PerspectiveDataInterchange__Group__1__Impl : ( 'dataInterchange' ) ;
     public final void rule__PerspectiveDataInterchange__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7704:1: ( ( 'dataInterchange' ) )
-            // InternalPerspectiveDsl.g:7705:1: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:7758:1: ( ( 'dataInterchange' ) )
+            // InternalPerspectiveDsl.g:7759:1: ( 'dataInterchange' )
             {
-            // InternalPerspectiveDsl.g:7705:1: ( 'dataInterchange' )
-            // InternalPerspectiveDsl.g:7706:2: 'dataInterchange'
+            // InternalPerspectiveDsl.g:7759:1: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:7760:2: 'dataInterchange'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1()); 
             }
@@ -26330,14 +26495,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__2"
-    // InternalPerspectiveDsl.g:7715:1: rule__PerspectiveDataInterchange__Group__2 : rule__PerspectiveDataInterchange__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:7769:1: rule__PerspectiveDataInterchange__Group__2 : rule__PerspectiveDataInterchange__Group__2__Impl ;
     public final void rule__PerspectiveDataInterchange__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7719:1: ( rule__PerspectiveDataInterchange__Group__2__Impl )
-            // InternalPerspectiveDsl.g:7720:2: rule__PerspectiveDataInterchange__Group__2__Impl
+            // InternalPerspectiveDsl.g:7773:1: ( rule__PerspectiveDataInterchange__Group__2__Impl )
+            // InternalPerspectiveDsl.g:7774:2: rule__PerspectiveDataInterchange__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDataInterchange__Group__2__Impl();
@@ -26363,23 +26528,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7726:1: rule__PerspectiveDataInterchange__Group__2__Impl : ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:7780:1: rule__PerspectiveDataInterchange__Group__2__Impl : ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) ) ;
     public final void rule__PerspectiveDataInterchange__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7730:1: ( ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:7731:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7784:1: ( ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7785:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:7731:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
-            // InternalPerspectiveDsl.g:7732:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:7785:1: ( ( rule__PerspectiveDataInterchange__RefAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7786:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:7733:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
-            // InternalPerspectiveDsl.g:7733:3: rule__PerspectiveDataInterchange__RefAssignment_2
+            // InternalPerspectiveDsl.g:7787:2: ( rule__PerspectiveDataInterchange__RefAssignment_2 )
+            // InternalPerspectiveDsl.g:7787:3: rule__PerspectiveDataInterchange__RefAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDataInterchange__RefAssignment_2();
@@ -26414,14 +26579,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTitle__Group__0"
-    // InternalPerspectiveDsl.g:7742:1: rule__PerspectiveTitle__Group__0 : rule__PerspectiveTitle__Group__0__Impl rule__PerspectiveTitle__Group__1 ;
+    // InternalPerspectiveDsl.g:7796:1: rule__PerspectiveTitle__Group__0 : rule__PerspectiveTitle__Group__0__Impl rule__PerspectiveTitle__Group__1 ;
     public final void rule__PerspectiveTitle__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7746:1: ( rule__PerspectiveTitle__Group__0__Impl rule__PerspectiveTitle__Group__1 )
-            // InternalPerspectiveDsl.g:7747:2: rule__PerspectiveTitle__Group__0__Impl rule__PerspectiveTitle__Group__1
+            // InternalPerspectiveDsl.g:7800:1: ( rule__PerspectiveTitle__Group__0__Impl rule__PerspectiveTitle__Group__1 )
+            // InternalPerspectiveDsl.g:7801:2: rule__PerspectiveTitle__Group__0__Impl rule__PerspectiveTitle__Group__1
             {
             pushFollow(FOLLOW_49);
             rule__PerspectiveTitle__Group__0__Impl();
@@ -26452,23 +26617,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTitle__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7754:1: rule__PerspectiveTitle__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7808:1: rule__PerspectiveTitle__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveTitle__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7758:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7759:1: ( () )
+            // InternalPerspectiveDsl.g:7812:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7813:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7759:1: ( () )
-            // InternalPerspectiveDsl.g:7760:2: ()
+            // InternalPerspectiveDsl.g:7813:1: ( () )
+            // InternalPerspectiveDsl.g:7814:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTitleAccess().getPerspectiveTitleAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7761:2: ()
-            // InternalPerspectiveDsl.g:7761:3: 
+            // InternalPerspectiveDsl.g:7815:2: ()
+            // InternalPerspectiveDsl.g:7815:3: 
             {
             }
 
@@ -26493,14 +26658,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTitle__Group__1"
-    // InternalPerspectiveDsl.g:7769:1: rule__PerspectiveTitle__Group__1 : rule__PerspectiveTitle__Group__1__Impl rule__PerspectiveTitle__Group__2 ;
+    // InternalPerspectiveDsl.g:7823:1: rule__PerspectiveTitle__Group__1 : rule__PerspectiveTitle__Group__1__Impl rule__PerspectiveTitle__Group__2 ;
     public final void rule__PerspectiveTitle__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7773:1: ( rule__PerspectiveTitle__Group__1__Impl rule__PerspectiveTitle__Group__2 )
-            // InternalPerspectiveDsl.g:7774:2: rule__PerspectiveTitle__Group__1__Impl rule__PerspectiveTitle__Group__2
+            // InternalPerspectiveDsl.g:7827:1: ( rule__PerspectiveTitle__Group__1__Impl rule__PerspectiveTitle__Group__2 )
+            // InternalPerspectiveDsl.g:7828:2: rule__PerspectiveTitle__Group__1__Impl rule__PerspectiveTitle__Group__2
             {
             pushFollow(FOLLOW_15);
             rule__PerspectiveTitle__Group__1__Impl();
@@ -26531,22 +26696,22 @@
 
 
     // $ANTLR start "rule__PerspectiveTitle__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7781:1: rule__PerspectiveTitle__Group__1__Impl : ( 'title' ) ;
+    // InternalPerspectiveDsl.g:7835:1: rule__PerspectiveTitle__Group__1__Impl : ( 'title' ) ;
     public final void rule__PerspectiveTitle__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7785:1: ( ( 'title' ) )
-            // InternalPerspectiveDsl.g:7786:1: ( 'title' )
+            // InternalPerspectiveDsl.g:7839:1: ( ( 'title' ) )
+            // InternalPerspectiveDsl.g:7840:1: ( 'title' )
             {
-            // InternalPerspectiveDsl.g:7786:1: ( 'title' )
-            // InternalPerspectiveDsl.g:7787:2: 'title'
+            // InternalPerspectiveDsl.g:7840:1: ( 'title' )
+            // InternalPerspectiveDsl.g:7841:2: 'title'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTitleAccess().getTitleKeyword_1()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveTitleAccess().getTitleKeyword_1()); 
             }
@@ -26572,14 +26737,14 @@
 
 
     // $ANTLR start "rule__PerspectiveTitle__Group__2"
-    // InternalPerspectiveDsl.g:7796:1: rule__PerspectiveTitle__Group__2 : rule__PerspectiveTitle__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:7850:1: rule__PerspectiveTitle__Group__2 : rule__PerspectiveTitle__Group__2__Impl ;
     public final void rule__PerspectiveTitle__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7800:1: ( rule__PerspectiveTitle__Group__2__Impl )
-            // InternalPerspectiveDsl.g:7801:2: rule__PerspectiveTitle__Group__2__Impl
+            // InternalPerspectiveDsl.g:7854:1: ( rule__PerspectiveTitle__Group__2__Impl )
+            // InternalPerspectiveDsl.g:7855:2: rule__PerspectiveTitle__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTitle__Group__2__Impl();
@@ -26605,23 +26770,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTitle__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7807:1: rule__PerspectiveTitle__Group__2__Impl : ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:7861:1: rule__PerspectiveTitle__Group__2__Impl : ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) ) ;
     public final void rule__PerspectiveTitle__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7811:1: ( ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:7812:1: ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7865:1: ( ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7866:1: ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:7812:1: ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) )
-            // InternalPerspectiveDsl.g:7813:2: ( rule__PerspectiveTitle__HtmlNameAssignment_2 )
+            // InternalPerspectiveDsl.g:7866:1: ( ( rule__PerspectiveTitle__HtmlNameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7867:2: ( rule__PerspectiveTitle__HtmlNameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTitleAccess().getHtmlNameAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:7814:2: ( rule__PerspectiveTitle__HtmlNameAssignment_2 )
-            // InternalPerspectiveDsl.g:7814:3: rule__PerspectiveTitle__HtmlNameAssignment_2
+            // InternalPerspectiveDsl.g:7868:2: ( rule__PerspectiveTitle__HtmlNameAssignment_2 )
+            // InternalPerspectiveDsl.g:7868:3: rule__PerspectiveTitle__HtmlNameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveTitle__HtmlNameAssignment_2();
@@ -26656,14 +26821,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDashboard__Group__0"
-    // InternalPerspectiveDsl.g:7823:1: rule__PerspectiveDashboard__Group__0 : rule__PerspectiveDashboard__Group__0__Impl rule__PerspectiveDashboard__Group__1 ;
+    // InternalPerspectiveDsl.g:7877:1: rule__PerspectiveDashboard__Group__0 : rule__PerspectiveDashboard__Group__0__Impl rule__PerspectiveDashboard__Group__1 ;
     public final void rule__PerspectiveDashboard__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7827:1: ( rule__PerspectiveDashboard__Group__0__Impl rule__PerspectiveDashboard__Group__1 )
-            // InternalPerspectiveDsl.g:7828:2: rule__PerspectiveDashboard__Group__0__Impl rule__PerspectiveDashboard__Group__1
+            // InternalPerspectiveDsl.g:7881:1: ( rule__PerspectiveDashboard__Group__0__Impl rule__PerspectiveDashboard__Group__1 )
+            // InternalPerspectiveDsl.g:7882:2: rule__PerspectiveDashboard__Group__0__Impl rule__PerspectiveDashboard__Group__1
             {
             pushFollow(FOLLOW_50);
             rule__PerspectiveDashboard__Group__0__Impl();
@@ -26694,23 +26859,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDashboard__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7835:1: rule__PerspectiveDashboard__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7889:1: rule__PerspectiveDashboard__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveDashboard__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7839:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7840:1: ( () )
+            // InternalPerspectiveDsl.g:7893:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7894:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7840:1: ( () )
-            // InternalPerspectiveDsl.g:7841:2: ()
+            // InternalPerspectiveDsl.g:7894:1: ( () )
+            // InternalPerspectiveDsl.g:7895:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDashboardAccess().getPerspectiveDashboardAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7842:2: ()
-            // InternalPerspectiveDsl.g:7842:3: 
+            // InternalPerspectiveDsl.g:7896:2: ()
+            // InternalPerspectiveDsl.g:7896:3: 
             {
             }
 
@@ -26735,14 +26900,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDashboard__Group__1"
-    // InternalPerspectiveDsl.g:7850:1: rule__PerspectiveDashboard__Group__1 : rule__PerspectiveDashboard__Group__1__Impl rule__PerspectiveDashboard__Group__2 ;
+    // InternalPerspectiveDsl.g:7904:1: rule__PerspectiveDashboard__Group__1 : rule__PerspectiveDashboard__Group__1__Impl rule__PerspectiveDashboard__Group__2 ;
     public final void rule__PerspectiveDashboard__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7854:1: ( rule__PerspectiveDashboard__Group__1__Impl rule__PerspectiveDashboard__Group__2 )
-            // InternalPerspectiveDsl.g:7855:2: rule__PerspectiveDashboard__Group__1__Impl rule__PerspectiveDashboard__Group__2
+            // InternalPerspectiveDsl.g:7908:1: ( rule__PerspectiveDashboard__Group__1__Impl rule__PerspectiveDashboard__Group__2 )
+            // InternalPerspectiveDsl.g:7909:2: rule__PerspectiveDashboard__Group__1__Impl rule__PerspectiveDashboard__Group__2
             {
             pushFollow(FOLLOW_15);
             rule__PerspectiveDashboard__Group__1__Impl();
@@ -26773,22 +26938,22 @@
 
 
     // $ANTLR start "rule__PerspectiveDashboard__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7862:1: rule__PerspectiveDashboard__Group__1__Impl : ( 'name' ) ;
+    // InternalPerspectiveDsl.g:7916:1: rule__PerspectiveDashboard__Group__1__Impl : ( 'name' ) ;
     public final void rule__PerspectiveDashboard__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7866:1: ( ( 'name' ) )
-            // InternalPerspectiveDsl.g:7867:1: ( 'name' )
+            // InternalPerspectiveDsl.g:7920:1: ( ( 'name' ) )
+            // InternalPerspectiveDsl.g:7921:1: ( 'name' )
             {
-            // InternalPerspectiveDsl.g:7867:1: ( 'name' )
-            // InternalPerspectiveDsl.g:7868:2: 'name'
+            // InternalPerspectiveDsl.g:7921:1: ( 'name' )
+            // InternalPerspectiveDsl.g:7922:2: 'name'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDashboardAccess().getNameKeyword_1()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveDashboardAccess().getNameKeyword_1()); 
             }
@@ -26814,14 +26979,14 @@
 
 
     // $ANTLR start "rule__PerspectiveDashboard__Group__2"
-    // InternalPerspectiveDsl.g:7877:1: rule__PerspectiveDashboard__Group__2 : rule__PerspectiveDashboard__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:7931:1: rule__PerspectiveDashboard__Group__2 : rule__PerspectiveDashboard__Group__2__Impl ;
     public final void rule__PerspectiveDashboard__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7881:1: ( rule__PerspectiveDashboard__Group__2__Impl )
-            // InternalPerspectiveDsl.g:7882:2: rule__PerspectiveDashboard__Group__2__Impl
+            // InternalPerspectiveDsl.g:7935:1: ( rule__PerspectiveDashboard__Group__2__Impl )
+            // InternalPerspectiveDsl.g:7936:2: rule__PerspectiveDashboard__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDashboard__Group__2__Impl();
@@ -26847,23 +27012,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDashboard__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7888:1: rule__PerspectiveDashboard__Group__2__Impl : ( ( rule__PerspectiveDashboard__NameAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:7942:1: rule__PerspectiveDashboard__Group__2__Impl : ( ( rule__PerspectiveDashboard__NameAssignment_2 ) ) ;
     public final void rule__PerspectiveDashboard__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7892:1: ( ( ( rule__PerspectiveDashboard__NameAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:7893:1: ( ( rule__PerspectiveDashboard__NameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7946:1: ( ( ( rule__PerspectiveDashboard__NameAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:7947:1: ( ( rule__PerspectiveDashboard__NameAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:7893:1: ( ( rule__PerspectiveDashboard__NameAssignment_2 ) )
-            // InternalPerspectiveDsl.g:7894:2: ( rule__PerspectiveDashboard__NameAssignment_2 )
+            // InternalPerspectiveDsl.g:7947:1: ( ( rule__PerspectiveDashboard__NameAssignment_2 ) )
+            // InternalPerspectiveDsl.g:7948:2: ( rule__PerspectiveDashboard__NameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDashboardAccess().getNameAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:7895:2: ( rule__PerspectiveDashboard__NameAssignment_2 )
-            // InternalPerspectiveDsl.g:7895:3: rule__PerspectiveDashboard__NameAssignment_2
+            // InternalPerspectiveDsl.g:7949:2: ( rule__PerspectiveDashboard__NameAssignment_2 )
+            // InternalPerspectiveDsl.g:7949:3: rule__PerspectiveDashboard__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveDashboard__NameAssignment_2();
@@ -26898,14 +27063,14 @@
 
 
     // $ANTLR start "rule__PerspectiveBrowser__Group__0"
-    // InternalPerspectiveDsl.g:7904:1: rule__PerspectiveBrowser__Group__0 : rule__PerspectiveBrowser__Group__0__Impl rule__PerspectiveBrowser__Group__1 ;
+    // InternalPerspectiveDsl.g:7958:1: rule__PerspectiveBrowser__Group__0 : rule__PerspectiveBrowser__Group__0__Impl rule__PerspectiveBrowser__Group__1 ;
     public final void rule__PerspectiveBrowser__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7908:1: ( rule__PerspectiveBrowser__Group__0__Impl rule__PerspectiveBrowser__Group__1 )
-            // InternalPerspectiveDsl.g:7909:2: rule__PerspectiveBrowser__Group__0__Impl rule__PerspectiveBrowser__Group__1
+            // InternalPerspectiveDsl.g:7962:1: ( rule__PerspectiveBrowser__Group__0__Impl rule__PerspectiveBrowser__Group__1 )
+            // InternalPerspectiveDsl.g:7963:2: rule__PerspectiveBrowser__Group__0__Impl rule__PerspectiveBrowser__Group__1
             {
             pushFollow(FOLLOW_25);
             rule__PerspectiveBrowser__Group__0__Impl();
@@ -26936,23 +27101,23 @@
 
 
     // $ANTLR start "rule__PerspectiveBrowser__Group__0__Impl"
-    // InternalPerspectiveDsl.g:7916:1: rule__PerspectiveBrowser__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:7970:1: rule__PerspectiveBrowser__Group__0__Impl : ( () ) ;
     public final void rule__PerspectiveBrowser__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7920:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:7921:1: ( () )
+            // InternalPerspectiveDsl.g:7974:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:7975:1: ( () )
             {
-            // InternalPerspectiveDsl.g:7921:1: ( () )
-            // InternalPerspectiveDsl.g:7922:2: ()
+            // InternalPerspectiveDsl.g:7975:1: ( () )
+            // InternalPerspectiveDsl.g:7976:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveBrowserAccess().getPerspectiveBrowserAction_0()); 
             }
-            // InternalPerspectiveDsl.g:7923:2: ()
-            // InternalPerspectiveDsl.g:7923:3: 
+            // InternalPerspectiveDsl.g:7977:2: ()
+            // InternalPerspectiveDsl.g:7977:3: 
             {
             }
 
@@ -26977,14 +27142,14 @@
 
 
     // $ANTLR start "rule__PerspectiveBrowser__Group__1"
-    // InternalPerspectiveDsl.g:7931:1: rule__PerspectiveBrowser__Group__1 : rule__PerspectiveBrowser__Group__1__Impl rule__PerspectiveBrowser__Group__2 ;
+    // InternalPerspectiveDsl.g:7985:1: rule__PerspectiveBrowser__Group__1 : rule__PerspectiveBrowser__Group__1__Impl rule__PerspectiveBrowser__Group__2 ;
     public final void rule__PerspectiveBrowser__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7935:1: ( rule__PerspectiveBrowser__Group__1__Impl rule__PerspectiveBrowser__Group__2 )
-            // InternalPerspectiveDsl.g:7936:2: rule__PerspectiveBrowser__Group__1__Impl rule__PerspectiveBrowser__Group__2
+            // InternalPerspectiveDsl.g:7989:1: ( rule__PerspectiveBrowser__Group__1__Impl rule__PerspectiveBrowser__Group__2 )
+            // InternalPerspectiveDsl.g:7990:2: rule__PerspectiveBrowser__Group__1__Impl rule__PerspectiveBrowser__Group__2
             {
             pushFollow(FOLLOW_51);
             rule__PerspectiveBrowser__Group__1__Impl();
@@ -27015,22 +27180,22 @@
 
 
     // $ANTLR start "rule__PerspectiveBrowser__Group__1__Impl"
-    // InternalPerspectiveDsl.g:7943:1: rule__PerspectiveBrowser__Group__1__Impl : ( 'browser' ) ;
+    // InternalPerspectiveDsl.g:7997:1: rule__PerspectiveBrowser__Group__1__Impl : ( 'browser' ) ;
     public final void rule__PerspectiveBrowser__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7947:1: ( ( 'browser' ) )
-            // InternalPerspectiveDsl.g:7948:1: ( 'browser' )
+            // InternalPerspectiveDsl.g:8001:1: ( ( 'browser' ) )
+            // InternalPerspectiveDsl.g:8002:1: ( 'browser' )
             {
-            // InternalPerspectiveDsl.g:7948:1: ( 'browser' )
-            // InternalPerspectiveDsl.g:7949:2: 'browser'
+            // InternalPerspectiveDsl.g:8002:1: ( 'browser' )
+            // InternalPerspectiveDsl.g:8003:2: 'browser'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveBrowserAccess().getBrowserKeyword_1()); 
             }
-            match(input,92,FOLLOW_2); if (state.failed) return ;
+            match(input,94,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveBrowserAccess().getBrowserKeyword_1()); 
             }
@@ -27056,14 +27221,14 @@
 
 
     // $ANTLR start "rule__PerspectiveBrowser__Group__2"
-    // InternalPerspectiveDsl.g:7958:1: rule__PerspectiveBrowser__Group__2 : rule__PerspectiveBrowser__Group__2__Impl rule__PerspectiveBrowser__Group__3 ;
+    // InternalPerspectiveDsl.g:8012:1: rule__PerspectiveBrowser__Group__2 : rule__PerspectiveBrowser__Group__2__Impl rule__PerspectiveBrowser__Group__3 ;
     public final void rule__PerspectiveBrowser__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7962:1: ( rule__PerspectiveBrowser__Group__2__Impl rule__PerspectiveBrowser__Group__3 )
-            // InternalPerspectiveDsl.g:7963:2: rule__PerspectiveBrowser__Group__2__Impl rule__PerspectiveBrowser__Group__3
+            // InternalPerspectiveDsl.g:8016:1: ( rule__PerspectiveBrowser__Group__2__Impl rule__PerspectiveBrowser__Group__3 )
+            // InternalPerspectiveDsl.g:8017:2: rule__PerspectiveBrowser__Group__2__Impl rule__PerspectiveBrowser__Group__3
             {
             pushFollow(FOLLOW_15);
             rule__PerspectiveBrowser__Group__2__Impl();
@@ -27094,22 +27259,22 @@
 
 
     // $ANTLR start "rule__PerspectiveBrowser__Group__2__Impl"
-    // InternalPerspectiveDsl.g:7970:1: rule__PerspectiveBrowser__Group__2__Impl : ( 'url' ) ;
+    // InternalPerspectiveDsl.g:8024:1: rule__PerspectiveBrowser__Group__2__Impl : ( 'url' ) ;
     public final void rule__PerspectiveBrowser__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7974:1: ( ( 'url' ) )
-            // InternalPerspectiveDsl.g:7975:1: ( 'url' )
+            // InternalPerspectiveDsl.g:8028:1: ( ( 'url' ) )
+            // InternalPerspectiveDsl.g:8029:1: ( 'url' )
             {
-            // InternalPerspectiveDsl.g:7975:1: ( 'url' )
-            // InternalPerspectiveDsl.g:7976:2: 'url'
+            // InternalPerspectiveDsl.g:8029:1: ( 'url' )
+            // InternalPerspectiveDsl.g:8030:2: 'url'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveBrowserAccess().getUrlKeyword_2()); 
             }
-            match(input,93,FOLLOW_2); if (state.failed) return ;
+            match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveBrowserAccess().getUrlKeyword_2()); 
             }
@@ -27135,14 +27300,14 @@
 
 
     // $ANTLR start "rule__PerspectiveBrowser__Group__3"
-    // InternalPerspectiveDsl.g:7985:1: rule__PerspectiveBrowser__Group__3 : rule__PerspectiveBrowser__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:8039:1: rule__PerspectiveBrowser__Group__3 : rule__PerspectiveBrowser__Group__3__Impl ;
     public final void rule__PerspectiveBrowser__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:7989:1: ( rule__PerspectiveBrowser__Group__3__Impl )
-            // InternalPerspectiveDsl.g:7990:2: rule__PerspectiveBrowser__Group__3__Impl
+            // InternalPerspectiveDsl.g:8043:1: ( rule__PerspectiveBrowser__Group__3__Impl )
+            // InternalPerspectiveDsl.g:8044:2: rule__PerspectiveBrowser__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveBrowser__Group__3__Impl();
@@ -27168,23 +27333,23 @@
 
 
     // $ANTLR start "rule__PerspectiveBrowser__Group__3__Impl"
-    // InternalPerspectiveDsl.g:7996:1: rule__PerspectiveBrowser__Group__3__Impl : ( ( rule__PerspectiveBrowser__UrlAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:8050:1: rule__PerspectiveBrowser__Group__3__Impl : ( ( rule__PerspectiveBrowser__UrlAssignment_3 ) ) ;
     public final void rule__PerspectiveBrowser__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8000:1: ( ( ( rule__PerspectiveBrowser__UrlAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:8001:1: ( ( rule__PerspectiveBrowser__UrlAssignment_3 ) )
+            // InternalPerspectiveDsl.g:8054:1: ( ( ( rule__PerspectiveBrowser__UrlAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:8055:1: ( ( rule__PerspectiveBrowser__UrlAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:8001:1: ( ( rule__PerspectiveBrowser__UrlAssignment_3 ) )
-            // InternalPerspectiveDsl.g:8002:2: ( rule__PerspectiveBrowser__UrlAssignment_3 )
+            // InternalPerspectiveDsl.g:8055:1: ( ( rule__PerspectiveBrowser__UrlAssignment_3 ) )
+            // InternalPerspectiveDsl.g:8056:2: ( rule__PerspectiveBrowser__UrlAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveBrowserAccess().getUrlAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:8003:2: ( rule__PerspectiveBrowser__UrlAssignment_3 )
-            // InternalPerspectiveDsl.g:8003:3: rule__PerspectiveBrowser__UrlAssignment_3
+            // InternalPerspectiveDsl.g:8057:2: ( rule__PerspectiveBrowser__UrlAssignment_3 )
+            // InternalPerspectiveDsl.g:8057:3: rule__PerspectiveBrowser__UrlAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveBrowser__UrlAssignment_3();
@@ -27219,14 +27384,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__0"
-    // InternalPerspectiveDsl.g:8012:1: rule__XImportDeclaration__Group__0 : rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 ;
+    // InternalPerspectiveDsl.g:8066:1: rule__XImportDeclaration__Group__0 : rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 ;
     public final void rule__XImportDeclaration__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8016:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
-            // InternalPerspectiveDsl.g:8017:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
+            // InternalPerspectiveDsl.g:8070:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
+            // InternalPerspectiveDsl.g:8071:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
             {
             pushFollow(FOLLOW_52);
             rule__XImportDeclaration__Group__0__Impl();
@@ -27257,23 +27422,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__0__Impl"
-    // InternalPerspectiveDsl.g:8024:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:8078:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
     public final void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8028:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:8029:1: ( () )
+            // InternalPerspectiveDsl.g:8082:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8083:1: ( () )
             {
-            // InternalPerspectiveDsl.g:8029:1: ( () )
-            // InternalPerspectiveDsl.g:8030:2: ()
+            // InternalPerspectiveDsl.g:8083:1: ( () )
+            // InternalPerspectiveDsl.g:8084:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); 
             }
-            // InternalPerspectiveDsl.g:8031:2: ()
-            // InternalPerspectiveDsl.g:8031:3: 
+            // InternalPerspectiveDsl.g:8085:2: ()
+            // InternalPerspectiveDsl.g:8085:3: 
             {
             }
 
@@ -27298,14 +27463,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__1"
-    // InternalPerspectiveDsl.g:8039:1: rule__XImportDeclaration__Group__1 : rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 ;
+    // InternalPerspectiveDsl.g:8093:1: rule__XImportDeclaration__Group__1 : rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 ;
     public final void rule__XImportDeclaration__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8043:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
-            // InternalPerspectiveDsl.g:8044:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
+            // InternalPerspectiveDsl.g:8097:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
+            // InternalPerspectiveDsl.g:8098:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
             {
             pushFollow(FOLLOW_53);
             rule__XImportDeclaration__Group__1__Impl();
@@ -27336,17 +27501,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__1__Impl"
-    // InternalPerspectiveDsl.g:8051:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
+    // InternalPerspectiveDsl.g:8105:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
     public final void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8055:1: ( ( 'import' ) )
-            // InternalPerspectiveDsl.g:8056:1: ( 'import' )
+            // InternalPerspectiveDsl.g:8109:1: ( ( 'import' ) )
+            // InternalPerspectiveDsl.g:8110:1: ( 'import' )
             {
-            // InternalPerspectiveDsl.g:8056:1: ( 'import' )
-            // InternalPerspectiveDsl.g:8057:2: 'import'
+            // InternalPerspectiveDsl.g:8110:1: ( 'import' )
+            // InternalPerspectiveDsl.g:8111:2: 'import'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); 
@@ -27377,14 +27542,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__2"
-    // InternalPerspectiveDsl.g:8066:1: rule__XImportDeclaration__Group__2 : rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 ;
+    // InternalPerspectiveDsl.g:8120:1: rule__XImportDeclaration__Group__2 : rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 ;
     public final void rule__XImportDeclaration__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8070:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
-            // InternalPerspectiveDsl.g:8071:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
+            // InternalPerspectiveDsl.g:8124:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
+            // InternalPerspectiveDsl.g:8125:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
             {
             pushFollow(FOLLOW_54);
             rule__XImportDeclaration__Group__2__Impl();
@@ -27415,23 +27580,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__2__Impl"
-    // InternalPerspectiveDsl.g:8078:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
+    // InternalPerspectiveDsl.g:8132:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
     public final void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8082:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
-            // InternalPerspectiveDsl.g:8083:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:8136:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
+            // InternalPerspectiveDsl.g:8137:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
             {
-            // InternalPerspectiveDsl.g:8083:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
-            // InternalPerspectiveDsl.g:8084:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:8137:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:8138:2: ( rule__XImportDeclaration__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); 
             }
-            // InternalPerspectiveDsl.g:8085:2: ( rule__XImportDeclaration__Alternatives_2 )
-            // InternalPerspectiveDsl.g:8085:3: rule__XImportDeclaration__Alternatives_2
+            // InternalPerspectiveDsl.g:8139:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:8139:3: rule__XImportDeclaration__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Alternatives_2();
@@ -27466,14 +27631,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__3"
-    // InternalPerspectiveDsl.g:8093:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:8147:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
     public final void rule__XImportDeclaration__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8097:1: ( rule__XImportDeclaration__Group__3__Impl )
-            // InternalPerspectiveDsl.g:8098:2: rule__XImportDeclaration__Group__3__Impl
+            // InternalPerspectiveDsl.g:8151:1: ( rule__XImportDeclaration__Group__3__Impl )
+            // InternalPerspectiveDsl.g:8152:2: rule__XImportDeclaration__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group__3__Impl();
@@ -27499,33 +27664,33 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__3__Impl"
-    // InternalPerspectiveDsl.g:8104:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
+    // InternalPerspectiveDsl.g:8158:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
     public final void rule__XImportDeclaration__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8108:1: ( ( ( ';' )? ) )
-            // InternalPerspectiveDsl.g:8109:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:8162:1: ( ( ( ';' )? ) )
+            // InternalPerspectiveDsl.g:8163:1: ( ( ';' )? )
             {
-            // InternalPerspectiveDsl.g:8109:1: ( ( ';' )? )
-            // InternalPerspectiveDsl.g:8110:2: ( ';' )?
+            // InternalPerspectiveDsl.g:8163:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:8164:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); 
             }
-            // InternalPerspectiveDsl.g:8111:2: ( ';' )?
+            // InternalPerspectiveDsl.g:8165:2: ( ';' )?
             int alt61=2;
             int LA61_0 = input.LA(1);
 
-            if ( (LA61_0==94) ) {
+            if ( (LA61_0==96) ) {
                 alt61=1;
             }
             switch (alt61) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8111:3: ';'
+                    // InternalPerspectiveDsl.g:8165:3: ';'
                     {
-                    match(input,94,FOLLOW_2); if (state.failed) return ;
+                    match(input,96,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -27557,14 +27722,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__0"
-    // InternalPerspectiveDsl.g:8120:1: rule__XImportDeclaration__Group_2_0__0 : rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 ;
+    // InternalPerspectiveDsl.g:8174:1: rule__XImportDeclaration__Group_2_0__0 : rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 ;
     public final void rule__XImportDeclaration__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8124:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
-            // InternalPerspectiveDsl.g:8125:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
+            // InternalPerspectiveDsl.g:8178:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
+            // InternalPerspectiveDsl.g:8179:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
             {
             pushFollow(FOLLOW_55);
             rule__XImportDeclaration__Group_2_0__0__Impl();
@@ -27595,23 +27760,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__0__Impl"
-    // InternalPerspectiveDsl.g:8132:1: rule__XImportDeclaration__Group_2_0__0__Impl : ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:8186:1: rule__XImportDeclaration__Group_2_0__0__Impl : ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) ;
     public final void rule__XImportDeclaration__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8136:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
-            // InternalPerspectiveDsl.g:8137:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:8190:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
+            // InternalPerspectiveDsl.g:8191:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:8137:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
-            // InternalPerspectiveDsl.g:8138:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:8191:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:8192:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8139:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
-            // InternalPerspectiveDsl.g:8139:3: rule__XImportDeclaration__StaticAssignment_2_0_0
+            // InternalPerspectiveDsl.g:8193:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:8193:3: rule__XImportDeclaration__StaticAssignment_2_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__StaticAssignment_2_0_0();
@@ -27646,14 +27811,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__1"
-    // InternalPerspectiveDsl.g:8147:1: rule__XImportDeclaration__Group_2_0__1 : rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 ;
+    // InternalPerspectiveDsl.g:8201:1: rule__XImportDeclaration__Group_2_0__1 : rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 ;
     public final void rule__XImportDeclaration__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8151:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
-            // InternalPerspectiveDsl.g:8152:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
+            // InternalPerspectiveDsl.g:8205:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
+            // InternalPerspectiveDsl.g:8206:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
             {
             pushFollow(FOLLOW_55);
             rule__XImportDeclaration__Group_2_0__1__Impl();
@@ -27684,22 +27849,22 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__1__Impl"
-    // InternalPerspectiveDsl.g:8159:1: rule__XImportDeclaration__Group_2_0__1__Impl : ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) ;
+    // InternalPerspectiveDsl.g:8213:1: rule__XImportDeclaration__Group_2_0__1__Impl : ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) ;
     public final void rule__XImportDeclaration__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8163:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
-            // InternalPerspectiveDsl.g:8164:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalPerspectiveDsl.g:8217:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
+            // InternalPerspectiveDsl.g:8218:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
             {
-            // InternalPerspectiveDsl.g:8164:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
-            // InternalPerspectiveDsl.g:8165:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            // InternalPerspectiveDsl.g:8218:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalPerspectiveDsl.g:8219:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); 
             }
-            // InternalPerspectiveDsl.g:8166:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            // InternalPerspectiveDsl.g:8220:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -27708,7 +27873,7 @@
             }
             switch (alt62) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8166:3: rule__XImportDeclaration__ExtensionAssignment_2_0_1
+                    // InternalPerspectiveDsl.g:8220:3: rule__XImportDeclaration__ExtensionAssignment_2_0_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ExtensionAssignment_2_0_1();
@@ -27746,14 +27911,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__2"
-    // InternalPerspectiveDsl.g:8174:1: rule__XImportDeclaration__Group_2_0__2 : rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 ;
+    // InternalPerspectiveDsl.g:8228:1: rule__XImportDeclaration__Group_2_0__2 : rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 ;
     public final void rule__XImportDeclaration__Group_2_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8178:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
-            // InternalPerspectiveDsl.g:8179:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
+            // InternalPerspectiveDsl.g:8232:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
+            // InternalPerspectiveDsl.g:8233:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
             {
             pushFollow(FOLLOW_56);
             rule__XImportDeclaration__Group_2_0__2__Impl();
@@ -27784,23 +27949,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__2__Impl"
-    // InternalPerspectiveDsl.g:8186:1: rule__XImportDeclaration__Group_2_0__2__Impl : ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) ;
+    // InternalPerspectiveDsl.g:8240:1: rule__XImportDeclaration__Group_2_0__2__Impl : ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) ;
     public final void rule__XImportDeclaration__Group_2_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8190:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
-            // InternalPerspectiveDsl.g:8191:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalPerspectiveDsl.g:8244:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
+            // InternalPerspectiveDsl.g:8245:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
             {
-            // InternalPerspectiveDsl.g:8191:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
-            // InternalPerspectiveDsl.g:8192:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalPerspectiveDsl.g:8245:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalPerspectiveDsl.g:8246:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); 
             }
-            // InternalPerspectiveDsl.g:8193:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
-            // InternalPerspectiveDsl.g:8193:3: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
+            // InternalPerspectiveDsl.g:8247:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalPerspectiveDsl.g:8247:3: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__ImportedTypeAssignment_2_0_2();
@@ -27835,14 +28000,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__3"
-    // InternalPerspectiveDsl.g:8201:1: rule__XImportDeclaration__Group_2_0__3 : rule__XImportDeclaration__Group_2_0__3__Impl ;
+    // InternalPerspectiveDsl.g:8255:1: rule__XImportDeclaration__Group_2_0__3 : rule__XImportDeclaration__Group_2_0__3__Impl ;
     public final void rule__XImportDeclaration__Group_2_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8205:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
-            // InternalPerspectiveDsl.g:8206:2: rule__XImportDeclaration__Group_2_0__3__Impl
+            // InternalPerspectiveDsl.g:8259:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
+            // InternalPerspectiveDsl.g:8260:2: rule__XImportDeclaration__Group_2_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group_2_0__3__Impl();
@@ -27868,23 +28033,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__3__Impl"
-    // InternalPerspectiveDsl.g:8212:1: rule__XImportDeclaration__Group_2_0__3__Impl : ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) ;
+    // InternalPerspectiveDsl.g:8266:1: rule__XImportDeclaration__Group_2_0__3__Impl : ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) ;
     public final void rule__XImportDeclaration__Group_2_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8216:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
-            // InternalPerspectiveDsl.g:8217:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalPerspectiveDsl.g:8270:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
+            // InternalPerspectiveDsl.g:8271:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
             {
-            // InternalPerspectiveDsl.g:8217:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
-            // InternalPerspectiveDsl.g:8218:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalPerspectiveDsl.g:8271:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalPerspectiveDsl.g:8272:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); 
             }
-            // InternalPerspectiveDsl.g:8219:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
-            // InternalPerspectiveDsl.g:8219:3: rule__XImportDeclaration__Alternatives_2_0_3
+            // InternalPerspectiveDsl.g:8273:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalPerspectiveDsl.g:8273:3: rule__XImportDeclaration__Alternatives_2_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Alternatives_2_0_3();
@@ -27919,14 +28084,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__0"
-    // InternalPerspectiveDsl.g:8228:1: rule__XImportDeclaration__Group_2_3__0 : rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 ;
+    // InternalPerspectiveDsl.g:8282:1: rule__XImportDeclaration__Group_2_3__0 : rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 ;
     public final void rule__XImportDeclaration__Group_2_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8232:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
-            // InternalPerspectiveDsl.g:8233:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
+            // InternalPerspectiveDsl.g:8286:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
+            // InternalPerspectiveDsl.g:8287:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
             {
             pushFollow(FOLLOW_7);
             rule__XImportDeclaration__Group_2_3__0__Impl();
@@ -27957,23 +28122,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__0__Impl"
-    // InternalPerspectiveDsl.g:8240:1: rule__XImportDeclaration__Group_2_3__0__Impl : ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:8294:1: rule__XImportDeclaration__Group_2_3__0__Impl : ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) ;
     public final void rule__XImportDeclaration__Group_2_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8244:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
-            // InternalPerspectiveDsl.g:8245:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalPerspectiveDsl.g:8298:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
+            // InternalPerspectiveDsl.g:8299:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:8245:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
-            // InternalPerspectiveDsl.g:8246:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalPerspectiveDsl.g:8299:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalPerspectiveDsl.g:8300:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); 
             }
-            // InternalPerspectiveDsl.g:8247:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
-            // InternalPerspectiveDsl.g:8247:3: rule__XImportDeclaration__FqnImportAssignment_2_3_0
+            // InternalPerspectiveDsl.g:8301:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalPerspectiveDsl.g:8301:3: rule__XImportDeclaration__FqnImportAssignment_2_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__FqnImportAssignment_2_3_0();
@@ -28008,14 +28173,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__1"
-    // InternalPerspectiveDsl.g:8255:1: rule__XImportDeclaration__Group_2_3__1 : rule__XImportDeclaration__Group_2_3__1__Impl ;
+    // InternalPerspectiveDsl.g:8309:1: rule__XImportDeclaration__Group_2_3__1 : rule__XImportDeclaration__Group_2_3__1__Impl ;
     public final void rule__XImportDeclaration__Group_2_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8259:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
-            // InternalPerspectiveDsl.g:8260:2: rule__XImportDeclaration__Group_2_3__1__Impl
+            // InternalPerspectiveDsl.g:8313:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
+            // InternalPerspectiveDsl.g:8314:2: rule__XImportDeclaration__Group_2_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group_2_3__1__Impl();
@@ -28041,23 +28206,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__1__Impl"
-    // InternalPerspectiveDsl.g:8266:1: rule__XImportDeclaration__Group_2_3__1__Impl : ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:8320:1: rule__XImportDeclaration__Group_2_3__1__Impl : ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) ;
     public final void rule__XImportDeclaration__Group_2_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8270:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
-            // InternalPerspectiveDsl.g:8271:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalPerspectiveDsl.g:8324:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
+            // InternalPerspectiveDsl.g:8325:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:8271:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
-            // InternalPerspectiveDsl.g:8272:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalPerspectiveDsl.g:8325:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalPerspectiveDsl.g:8326:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); 
             }
-            // InternalPerspectiveDsl.g:8273:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
-            // InternalPerspectiveDsl.g:8273:3: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
+            // InternalPerspectiveDsl.g:8327:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalPerspectiveDsl.g:8327:3: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1();
@@ -28092,14 +28257,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__0"
-    // InternalPerspectiveDsl.g:8282:1: rule__XAnnotation__Group__0 : rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 ;
+    // InternalPerspectiveDsl.g:8336:1: rule__XAnnotation__Group__0 : rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 ;
     public final void rule__XAnnotation__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8286:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
-            // InternalPerspectiveDsl.g:8287:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
+            // InternalPerspectiveDsl.g:8340:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
+            // InternalPerspectiveDsl.g:8341:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
             {
             pushFollow(FOLLOW_57);
             rule__XAnnotation__Group__0__Impl();
@@ -28130,23 +28295,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__0__Impl"
-    // InternalPerspectiveDsl.g:8294:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:8348:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
     public final void rule__XAnnotation__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8298:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:8299:1: ( () )
+            // InternalPerspectiveDsl.g:8352:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8353:1: ( () )
             {
-            // InternalPerspectiveDsl.g:8299:1: ( () )
-            // InternalPerspectiveDsl.g:8300:2: ()
+            // InternalPerspectiveDsl.g:8353:1: ( () )
+            // InternalPerspectiveDsl.g:8354:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); 
             }
-            // InternalPerspectiveDsl.g:8301:2: ()
-            // InternalPerspectiveDsl.g:8301:3: 
+            // InternalPerspectiveDsl.g:8355:2: ()
+            // InternalPerspectiveDsl.g:8355:3: 
             {
             }
 
@@ -28171,14 +28336,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__1"
-    // InternalPerspectiveDsl.g:8309:1: rule__XAnnotation__Group__1 : rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 ;
+    // InternalPerspectiveDsl.g:8363:1: rule__XAnnotation__Group__1 : rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 ;
     public final void rule__XAnnotation__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8313:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
-            // InternalPerspectiveDsl.g:8314:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
+            // InternalPerspectiveDsl.g:8367:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
+            // InternalPerspectiveDsl.g:8368:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__XAnnotation__Group__1__Impl();
@@ -28209,22 +28374,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__1__Impl"
-    // InternalPerspectiveDsl.g:8321:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
+    // InternalPerspectiveDsl.g:8375:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
     public final void rule__XAnnotation__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8325:1: ( ( '@' ) )
-            // InternalPerspectiveDsl.g:8326:1: ( '@' )
+            // InternalPerspectiveDsl.g:8379:1: ( ( '@' ) )
+            // InternalPerspectiveDsl.g:8380:1: ( '@' )
             {
-            // InternalPerspectiveDsl.g:8326:1: ( '@' )
-            // InternalPerspectiveDsl.g:8327:2: '@'
+            // InternalPerspectiveDsl.g:8380:1: ( '@' )
+            // InternalPerspectiveDsl.g:8381:2: '@'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
             }
-            match(input,95,FOLLOW_2); if (state.failed) return ;
+            match(input,97,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
             }
@@ -28250,14 +28415,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__2"
-    // InternalPerspectiveDsl.g:8336:1: rule__XAnnotation__Group__2 : rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 ;
+    // InternalPerspectiveDsl.g:8390:1: rule__XAnnotation__Group__2 : rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 ;
     public final void rule__XAnnotation__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8340:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
-            // InternalPerspectiveDsl.g:8341:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
+            // InternalPerspectiveDsl.g:8394:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
+            // InternalPerspectiveDsl.g:8395:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
             {
             pushFollow(FOLLOW_58);
             rule__XAnnotation__Group__2__Impl();
@@ -28288,23 +28453,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__2__Impl"
-    // InternalPerspectiveDsl.g:8348:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:8402:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
     public final void rule__XAnnotation__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8352:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:8353:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:8406:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:8407:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:8353:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
-            // InternalPerspectiveDsl.g:8354:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:8407:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:8408:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:8355:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
-            // InternalPerspectiveDsl.g:8355:3: rule__XAnnotation__AnnotationTypeAssignment_2
+            // InternalPerspectiveDsl.g:8409:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:8409:3: rule__XAnnotation__AnnotationTypeAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__AnnotationTypeAssignment_2();
@@ -28339,14 +28504,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__3"
-    // InternalPerspectiveDsl.g:8363:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:8417:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
     public final void rule__XAnnotation__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8367:1: ( rule__XAnnotation__Group__3__Impl )
-            // InternalPerspectiveDsl.g:8368:2: rule__XAnnotation__Group__3__Impl
+            // InternalPerspectiveDsl.g:8421:1: ( rule__XAnnotation__Group__3__Impl )
+            // InternalPerspectiveDsl.g:8422:2: rule__XAnnotation__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group__3__Impl();
@@ -28372,31 +28537,31 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__3__Impl"
-    // InternalPerspectiveDsl.g:8374:1: rule__XAnnotation__Group__3__Impl : ( ( rule__XAnnotation__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:8428:1: rule__XAnnotation__Group__3__Impl : ( ( rule__XAnnotation__Group_3__0 )? ) ;
     public final void rule__XAnnotation__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8378:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:8379:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:8432:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:8433:1: ( ( rule__XAnnotation__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:8379:1: ( ( rule__XAnnotation__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:8380:2: ( rule__XAnnotation__Group_3__0 )?
+            // InternalPerspectiveDsl.g:8433:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:8434:2: ( rule__XAnnotation__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:8381:2: ( rule__XAnnotation__Group_3__0 )?
+            // InternalPerspectiveDsl.g:8435:2: ( rule__XAnnotation__Group_3__0 )?
             int alt63=2;
             int LA63_0 = input.LA(1);
 
-            if ( (LA63_0==96) ) {
+            if ( (LA63_0==98) ) {
                 alt63=1;
             }
             switch (alt63) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8381:3: rule__XAnnotation__Group_3__0
+                    // InternalPerspectiveDsl.g:8435:3: rule__XAnnotation__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3__0();
@@ -28434,14 +28599,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__0"
-    // InternalPerspectiveDsl.g:8390:1: rule__XAnnotation__Group_3__0 : rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 ;
+    // InternalPerspectiveDsl.g:8444:1: rule__XAnnotation__Group_3__0 : rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 ;
     public final void rule__XAnnotation__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8394:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
-            // InternalPerspectiveDsl.g:8395:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
+            // InternalPerspectiveDsl.g:8448:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
+            // InternalPerspectiveDsl.g:8449:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
             {
             pushFollow(FOLLOW_59);
             rule__XAnnotation__Group_3__0__Impl();
@@ -28472,25 +28637,25 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:8402:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
+    // InternalPerspectiveDsl.g:8456:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
     public final void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8406:1: ( ( ( '(' ) ) )
-            // InternalPerspectiveDsl.g:8407:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:8460:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:8461:1: ( ( '(' ) )
             {
-            // InternalPerspectiveDsl.g:8407:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:8408:2: ( '(' )
+            // InternalPerspectiveDsl.g:8461:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:8462:2: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); 
             }
-            // InternalPerspectiveDsl.g:8409:2: ( '(' )
-            // InternalPerspectiveDsl.g:8409:3: '('
+            // InternalPerspectiveDsl.g:8463:2: ( '(' )
+            // InternalPerspectiveDsl.g:8463:3: '('
             {
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -28519,14 +28684,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__1"
-    // InternalPerspectiveDsl.g:8417:1: rule__XAnnotation__Group_3__1 : rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 ;
+    // InternalPerspectiveDsl.g:8471:1: rule__XAnnotation__Group_3__1 : rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 ;
     public final void rule__XAnnotation__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8421:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
-            // InternalPerspectiveDsl.g:8422:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
+            // InternalPerspectiveDsl.g:8475:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
+            // InternalPerspectiveDsl.g:8476:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
             {
             pushFollow(FOLLOW_59);
             rule__XAnnotation__Group_3__1__Impl();
@@ -28557,31 +28722,31 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:8429:1: rule__XAnnotation__Group_3__1__Impl : ( ( rule__XAnnotation__Alternatives_3_1 )? ) ;
+    // InternalPerspectiveDsl.g:8483:1: rule__XAnnotation__Group_3__1__Impl : ( ( rule__XAnnotation__Alternatives_3_1 )? ) ;
     public final void rule__XAnnotation__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8433:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
-            // InternalPerspectiveDsl.g:8434:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:8487:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
+            // InternalPerspectiveDsl.g:8488:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
             {
-            // InternalPerspectiveDsl.g:8434:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
-            // InternalPerspectiveDsl.g:8435:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            // InternalPerspectiveDsl.g:8488:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:8489:2: ( rule__XAnnotation__Alternatives_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); 
             }
-            // InternalPerspectiveDsl.g:8436:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            // InternalPerspectiveDsl.g:8490:2: ( rule__XAnnotation__Alternatives_3_1 )?
             int alt64=2;
             int LA64_0 = input.LA(1);
 
-            if ( ((LA64_0>=RULE_ID && LA64_0<=RULE_DECIMAL)||LA64_0==27||(LA64_0>=34 && LA64_0<=35)||LA64_0==40||(LA64_0>=45 && LA64_0<=50)||LA64_0==54||(LA64_0>=95 && LA64_0<=96)||(LA64_0>=100 && LA64_0<=101)||LA64_0==104||LA64_0==106||(LA64_0>=110 && LA64_0<=118)||LA64_0==120||LA64_0==131) ) {
+            if ( ((LA64_0>=RULE_ID && LA64_0<=RULE_DECIMAL)||LA64_0==27||(LA64_0>=34 && LA64_0<=35)||LA64_0==40||(LA64_0>=45 && LA64_0<=50)||LA64_0==54||(LA64_0>=97 && LA64_0<=98)||(LA64_0>=102 && LA64_0<=103)||LA64_0==106||LA64_0==108||(LA64_0>=112 && LA64_0<=120)||LA64_0==122||LA64_0==133) ) {
                 alt64=1;
             }
             switch (alt64) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8436:3: rule__XAnnotation__Alternatives_3_1
+                    // InternalPerspectiveDsl.g:8490:3: rule__XAnnotation__Alternatives_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Alternatives_3_1();
@@ -28619,14 +28784,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__2"
-    // InternalPerspectiveDsl.g:8444:1: rule__XAnnotation__Group_3__2 : rule__XAnnotation__Group_3__2__Impl ;
+    // InternalPerspectiveDsl.g:8498:1: rule__XAnnotation__Group_3__2 : rule__XAnnotation__Group_3__2__Impl ;
     public final void rule__XAnnotation__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8448:1: ( rule__XAnnotation__Group_3__2__Impl )
-            // InternalPerspectiveDsl.g:8449:2: rule__XAnnotation__Group_3__2__Impl
+            // InternalPerspectiveDsl.g:8502:1: ( rule__XAnnotation__Group_3__2__Impl )
+            // InternalPerspectiveDsl.g:8503:2: rule__XAnnotation__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3__2__Impl();
@@ -28652,22 +28817,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__2__Impl"
-    // InternalPerspectiveDsl.g:8455:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:8509:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
     public final void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8459:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:8460:1: ( ')' )
+            // InternalPerspectiveDsl.g:8513:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:8514:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:8460:1: ( ')' )
-            // InternalPerspectiveDsl.g:8461:2: ')'
+            // InternalPerspectiveDsl.g:8514:1: ( ')' )
+            // InternalPerspectiveDsl.g:8515:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
             }
@@ -28693,14 +28858,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__0"
-    // InternalPerspectiveDsl.g:8471:1: rule__XAnnotation__Group_3_1_0__0 : rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 ;
+    // InternalPerspectiveDsl.g:8525:1: rule__XAnnotation__Group_3_1_0__0 : rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 ;
     public final void rule__XAnnotation__Group_3_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8475:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
-            // InternalPerspectiveDsl.g:8476:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
+            // InternalPerspectiveDsl.g:8529:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
+            // InternalPerspectiveDsl.g:8530:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
             {
             pushFollow(FOLLOW_60);
             rule__XAnnotation__Group_3_1_0__0__Impl();
@@ -28731,23 +28896,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:8483:1: rule__XAnnotation__Group_3_1_0__0__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:8537:1: rule__XAnnotation__Group_3_1_0__0__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) ;
     public final void rule__XAnnotation__Group_3_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8487:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
-            // InternalPerspectiveDsl.g:8488:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalPerspectiveDsl.g:8541:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
+            // InternalPerspectiveDsl.g:8542:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:8488:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
-            // InternalPerspectiveDsl.g:8489:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalPerspectiveDsl.g:8542:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalPerspectiveDsl.g:8543:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8490:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
-            // InternalPerspectiveDsl.g:8490:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
+            // InternalPerspectiveDsl.g:8544:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalPerspectiveDsl.g:8544:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0();
@@ -28782,14 +28947,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__1"
-    // InternalPerspectiveDsl.g:8498:1: rule__XAnnotation__Group_3_1_0__1 : rule__XAnnotation__Group_3_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:8552:1: rule__XAnnotation__Group_3_1_0__1 : rule__XAnnotation__Group_3_1_0__1__Impl ;
     public final void rule__XAnnotation__Group_3_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8502:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:8503:2: rule__XAnnotation__Group_3_1_0__1__Impl
+            // InternalPerspectiveDsl.g:8556:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:8557:2: rule__XAnnotation__Group_3_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3_1_0__1__Impl();
@@ -28815,35 +28980,35 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:8509:1: rule__XAnnotation__Group_3_1_0__1__Impl : ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:8563:1: rule__XAnnotation__Group_3_1_0__1__Impl : ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) ;
     public final void rule__XAnnotation__Group_3_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8513:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
-            // InternalPerspectiveDsl.g:8514:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalPerspectiveDsl.g:8567:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
+            // InternalPerspectiveDsl.g:8568:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:8514:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
-            // InternalPerspectiveDsl.g:8515:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            // InternalPerspectiveDsl.g:8568:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalPerspectiveDsl.g:8569:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:8516:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            // InternalPerspectiveDsl.g:8570:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
             loop65:
             do {
                 int alt65=2;
                 int LA65_0 = input.LA(1);
 
-                if ( (LA65_0==98) ) {
+                if ( (LA65_0==100) ) {
                     alt65=1;
                 }
 
 
                 switch (alt65) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8516:3: rule__XAnnotation__Group_3_1_0_1__0
+            	    // InternalPerspectiveDsl.g:8570:3: rule__XAnnotation__Group_3_1_0_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XAnnotation__Group_3_1_0_1__0();
@@ -28884,14 +29049,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0"
-    // InternalPerspectiveDsl.g:8525:1: rule__XAnnotation__Group_3_1_0_1__0 : rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 ;
+    // InternalPerspectiveDsl.g:8579:1: rule__XAnnotation__Group_3_1_0_1__0 : rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 ;
     public final void rule__XAnnotation__Group_3_1_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8529:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
-            // InternalPerspectiveDsl.g:8530:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
+            // InternalPerspectiveDsl.g:8583:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
+            // InternalPerspectiveDsl.g:8584:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
             {
             pushFollow(FOLLOW_7);
             rule__XAnnotation__Group_3_1_0_1__0__Impl();
@@ -28922,22 +29087,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:8537:1: rule__XAnnotation__Group_3_1_0_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:8591:1: rule__XAnnotation__Group_3_1_0_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotation__Group_3_1_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8541:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:8542:1: ( ',' )
+            // InternalPerspectiveDsl.g:8595:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:8596:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:8542:1: ( ',' )
-            // InternalPerspectiveDsl.g:8543:2: ','
+            // InternalPerspectiveDsl.g:8596:1: ( ',' )
+            // InternalPerspectiveDsl.g:8597:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
             }
@@ -28963,14 +29128,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1"
-    // InternalPerspectiveDsl.g:8552:1: rule__XAnnotation__Group_3_1_0_1__1 : rule__XAnnotation__Group_3_1_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:8606:1: rule__XAnnotation__Group_3_1_0_1__1 : rule__XAnnotation__Group_3_1_0_1__1__Impl ;
     public final void rule__XAnnotation__Group_3_1_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8556:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:8557:2: rule__XAnnotation__Group_3_1_0_1__1__Impl
+            // InternalPerspectiveDsl.g:8610:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:8611:2: rule__XAnnotation__Group_3_1_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3_1_0_1__1__Impl();
@@ -28996,23 +29161,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:8563:1: rule__XAnnotation__Group_3_1_0_1__1__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:8617:1: rule__XAnnotation__Group_3_1_0_1__1__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) ;
     public final void rule__XAnnotation__Group_3_1_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8567:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
-            // InternalPerspectiveDsl.g:8568:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalPerspectiveDsl.g:8621:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:8622:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:8568:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
-            // InternalPerspectiveDsl.g:8569:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalPerspectiveDsl.g:8622:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalPerspectiveDsl.g:8623:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8570:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
-            // InternalPerspectiveDsl.g:8570:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
+            // InternalPerspectiveDsl.g:8624:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalPerspectiveDsl.g:8624:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1();
@@ -29047,14 +29212,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__0"
-    // InternalPerspectiveDsl.g:8579:1: rule__XAnnotationElementValuePair__Group__0 : rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 ;
+    // InternalPerspectiveDsl.g:8633:1: rule__XAnnotationElementValuePair__Group__0 : rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 ;
     public final void rule__XAnnotationElementValuePair__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8583:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
-            // InternalPerspectiveDsl.g:8584:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
+            // InternalPerspectiveDsl.g:8637:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
+            // InternalPerspectiveDsl.g:8638:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
             {
             pushFollow(FOLLOW_62);
             rule__XAnnotationElementValuePair__Group__0__Impl();
@@ -29085,23 +29250,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__0__Impl"
-    // InternalPerspectiveDsl.g:8591:1: rule__XAnnotationElementValuePair__Group__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:8645:1: rule__XAnnotationElementValuePair__Group__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8595:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:8596:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:8649:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8650:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:8596:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:8597:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalPerspectiveDsl.g:8650:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:8651:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:8598:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
-            // InternalPerspectiveDsl.g:8598:3: rule__XAnnotationElementValuePair__Group_0__0
+            // InternalPerspectiveDsl.g:8652:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalPerspectiveDsl.g:8652:3: rule__XAnnotationElementValuePair__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0__0();
@@ -29136,14 +29301,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__1"
-    // InternalPerspectiveDsl.g:8606:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:8660:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
     public final void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8610:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
-            // InternalPerspectiveDsl.g:8611:2: rule__XAnnotationElementValuePair__Group__1__Impl
+            // InternalPerspectiveDsl.g:8664:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
+            // InternalPerspectiveDsl.g:8665:2: rule__XAnnotationElementValuePair__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group__1__Impl();
@@ -29169,23 +29334,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__1__Impl"
-    // InternalPerspectiveDsl.g:8617:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:8671:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8621:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:8622:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:8675:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:8676:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:8622:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
-            // InternalPerspectiveDsl.g:8623:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:8676:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:8677:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:8624:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
-            // InternalPerspectiveDsl.g:8624:3: rule__XAnnotationElementValuePair__ValueAssignment_1
+            // InternalPerspectiveDsl.g:8678:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:8678:3: rule__XAnnotationElementValuePair__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__ValueAssignment_1();
@@ -29220,14 +29385,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0"
-    // InternalPerspectiveDsl.g:8633:1: rule__XAnnotationElementValuePair__Group_0__0 : rule__XAnnotationElementValuePair__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:8687:1: rule__XAnnotationElementValuePair__Group_0__0 : rule__XAnnotationElementValuePair__Group_0__0__Impl ;
     public final void rule__XAnnotationElementValuePair__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8637:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:8638:2: rule__XAnnotationElementValuePair__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:8691:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:8692:2: rule__XAnnotationElementValuePair__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0__0__Impl();
@@ -29253,23 +29418,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:8644:1: rule__XAnnotationElementValuePair__Group_0__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:8698:1: rule__XAnnotationElementValuePair__Group_0__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8648:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:8649:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8702:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8703:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:8649:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:8650:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8703:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8704:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8651:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:8651:3: rule__XAnnotationElementValuePair__Group_0_0__0
+            // InternalPerspectiveDsl.g:8705:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8705:3: rule__XAnnotationElementValuePair__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0_0__0();
@@ -29304,14 +29469,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0"
-    // InternalPerspectiveDsl.g:8660:1: rule__XAnnotationElementValuePair__Group_0_0__0 : rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:8714:1: rule__XAnnotationElementValuePair__Group_0_0__0 : rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8664:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:8665:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
+            // InternalPerspectiveDsl.g:8718:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:8719:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
             {
             pushFollow(FOLLOW_63);
             rule__XAnnotationElementValuePair__Group_0_0__0__Impl();
@@ -29342,23 +29507,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:8672:1: rule__XAnnotationElementValuePair__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:8726:1: rule__XAnnotationElementValuePair__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8676:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
-            // InternalPerspectiveDsl.g:8677:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalPerspectiveDsl.g:8730:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:8731:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:8677:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
-            // InternalPerspectiveDsl.g:8678:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalPerspectiveDsl.g:8731:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalPerspectiveDsl.g:8732:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8679:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
-            // InternalPerspectiveDsl.g:8679:3: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
+            // InternalPerspectiveDsl.g:8733:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalPerspectiveDsl.g:8733:3: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__ElementAssignment_0_0_0();
@@ -29393,14 +29558,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1"
-    // InternalPerspectiveDsl.g:8687:1: rule__XAnnotationElementValuePair__Group_0_0__1 : rule__XAnnotationElementValuePair__Group_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:8741:1: rule__XAnnotationElementValuePair__Group_0_0__1 : rule__XAnnotationElementValuePair__Group_0_0__1__Impl ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8691:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:8692:2: rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+            // InternalPerspectiveDsl.g:8745:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:8746:2: rule__XAnnotationElementValuePair__Group_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0_0__1__Impl();
@@ -29426,17 +29591,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:8698:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
+    // InternalPerspectiveDsl.g:8752:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8702:1: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:8703:1: ( '=' )
+            // InternalPerspectiveDsl.g:8756:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:8757:1: ( '=' )
             {
-            // InternalPerspectiveDsl.g:8703:1: ( '=' )
-            // InternalPerspectiveDsl.g:8704:2: '='
+            // InternalPerspectiveDsl.g:8757:1: ( '=' )
+            // InternalPerspectiveDsl.g:8758:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); 
@@ -29467,14 +29632,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0"
-    // InternalPerspectiveDsl.g:8714:1: rule__XAnnotationElementValueOrCommaList__Group_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 ;
+    // InternalPerspectiveDsl.g:8768:1: rule__XAnnotationElementValueOrCommaList__Group_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8718:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
-            // InternalPerspectiveDsl.g:8719:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
+            // InternalPerspectiveDsl.g:8772:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
+            // InternalPerspectiveDsl.g:8773:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
             {
             pushFollow(FOLLOW_64);
             rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl();
@@ -29505,23 +29670,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:8726:1: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:8780:1: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8730:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:8731:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8784:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8785:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:8731:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:8732:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8785:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8786:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8733:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:8733:3: rule__XAnnotationElementValueOrCommaList__Group_0_0__0
+            // InternalPerspectiveDsl.g:8787:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:8787:3: rule__XAnnotationElementValueOrCommaList__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0__0();
@@ -29556,14 +29721,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1"
-    // InternalPerspectiveDsl.g:8741:1: rule__XAnnotationElementValueOrCommaList__Group_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 ;
+    // InternalPerspectiveDsl.g:8795:1: rule__XAnnotationElementValueOrCommaList__Group_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8745:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
-            // InternalPerspectiveDsl.g:8746:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
+            // InternalPerspectiveDsl.g:8799:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
+            // InternalPerspectiveDsl.g:8800:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
             {
             pushFollow(FOLLOW_64);
             rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl();
@@ -29594,31 +29759,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:8753:1: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:8807:1: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8757:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:8758:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:8811:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:8812:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:8758:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
-            // InternalPerspectiveDsl.g:8759:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:8812:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:8813:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); 
             }
-            // InternalPerspectiveDsl.g:8760:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:8814:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
             int alt66=2;
             int LA66_0 = input.LA(1);
 
-            if ( ((LA66_0>=RULE_ID && LA66_0<=RULE_DECIMAL)||LA66_0==27||(LA66_0>=34 && LA66_0<=35)||LA66_0==40||(LA66_0>=45 && LA66_0<=50)||LA66_0==54||(LA66_0>=95 && LA66_0<=96)||(LA66_0>=100 && LA66_0<=101)||LA66_0==104||LA66_0==106||(LA66_0>=110 && LA66_0<=118)||LA66_0==120||LA66_0==131) ) {
+            if ( ((LA66_0>=RULE_ID && LA66_0<=RULE_DECIMAL)||LA66_0==27||(LA66_0>=34 && LA66_0<=35)||LA66_0==40||(LA66_0>=45 && LA66_0<=50)||LA66_0==54||(LA66_0>=97 && LA66_0<=98)||(LA66_0>=102 && LA66_0<=103)||LA66_0==106||LA66_0==108||(LA66_0>=112 && LA66_0<=120)||LA66_0==122||LA66_0==133) ) {
                 alt66=1;
             }
             switch (alt66) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8760:3: rule__XAnnotationElementValueOrCommaList__Group_0_1__0
+                    // InternalPerspectiveDsl.g:8814:3: rule__XAnnotationElementValueOrCommaList__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0_1__0();
@@ -29656,14 +29821,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2"
-    // InternalPerspectiveDsl.g:8768:1: rule__XAnnotationElementValueOrCommaList__Group_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl ;
+    // InternalPerspectiveDsl.g:8822:1: rule__XAnnotationElementValueOrCommaList__Group_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8772:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
-            // InternalPerspectiveDsl.g:8773:2: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+            // InternalPerspectiveDsl.g:8826:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:8827:2: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl();
@@ -29689,22 +29854,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:8779:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:8833:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8783:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:8784:1: ( ']' )
+            // InternalPerspectiveDsl.g:8837:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:8838:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:8784:1: ( ']' )
-            // InternalPerspectiveDsl.g:8785:2: ']'
+            // InternalPerspectiveDsl.g:8838:1: ( ']' )
+            // InternalPerspectiveDsl.g:8839:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
             }
-            match(input,99,FOLLOW_2); if (state.failed) return ;
+            match(input,101,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
             }
@@ -29730,14 +29895,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0"
-    // InternalPerspectiveDsl.g:8795:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:8849:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8799:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:8800:2: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+            // InternalPerspectiveDsl.g:8853:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:8854:2: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl();
@@ -29763,23 +29928,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:8806:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:8860:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8810:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:8811:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8864:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:8865:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:8811:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:8812:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:8865:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:8866:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8813:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
-            // InternalPerspectiveDsl.g:8813:3: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
+            // InternalPerspectiveDsl.g:8867:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:8867:3: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0();
@@ -29814,14 +29979,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0"
-    // InternalPerspectiveDsl.g:8822:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 ;
+    // InternalPerspectiveDsl.g:8876:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8826:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
-            // InternalPerspectiveDsl.g:8827:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+            // InternalPerspectiveDsl.g:8880:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
+            // InternalPerspectiveDsl.g:8881:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
             {
             pushFollow(FOLLOW_65);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl();
@@ -29852,23 +30017,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:8834:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:8888:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl : ( () ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8838:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:8839:1: ( () )
+            // InternalPerspectiveDsl.g:8892:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:8893:1: ( () )
             {
-            // InternalPerspectiveDsl.g:8839:1: ( () )
-            // InternalPerspectiveDsl.g:8840:2: ()
+            // InternalPerspectiveDsl.g:8893:1: ( () )
+            // InternalPerspectiveDsl.g:8894:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:8841:2: ()
-            // InternalPerspectiveDsl.g:8841:3: 
+            // InternalPerspectiveDsl.g:8895:2: ()
+            // InternalPerspectiveDsl.g:8895:3: 
             {
             }
 
@@ -29893,14 +30058,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1"
-    // InternalPerspectiveDsl.g:8849:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 ;
+    // InternalPerspectiveDsl.g:8903:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8853:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
-            // InternalPerspectiveDsl.g:8854:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+            // InternalPerspectiveDsl.g:8907:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
+            // InternalPerspectiveDsl.g:8908:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
             {
             pushFollow(FOLLOW_66);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl();
@@ -29931,22 +30096,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:8861:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl : ( '#' ) ;
+    // InternalPerspectiveDsl.g:8915:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl : ( '#' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8865:1: ( ( '#' ) )
-            // InternalPerspectiveDsl.g:8866:1: ( '#' )
+            // InternalPerspectiveDsl.g:8919:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:8920:1: ( '#' )
             {
-            // InternalPerspectiveDsl.g:8866:1: ( '#' )
-            // InternalPerspectiveDsl.g:8867:2: '#'
+            // InternalPerspectiveDsl.g:8920:1: ( '#' )
+            // InternalPerspectiveDsl.g:8921:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
             }
-            match(input,100,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
             }
@@ -29972,14 +30137,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2"
-    // InternalPerspectiveDsl.g:8876:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:8930:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8880:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:8881:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+            // InternalPerspectiveDsl.g:8934:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:8935:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl();
@@ -30005,22 +30170,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:8887:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:8941:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl : ( '[' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8891:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:8892:1: ( '[' )
+            // InternalPerspectiveDsl.g:8945:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:8946:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:8892:1: ( '[' )
-            // InternalPerspectiveDsl.g:8893:2: '['
+            // InternalPerspectiveDsl.g:8946:1: ( '[' )
+            // InternalPerspectiveDsl.g:8947:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
-            match(input,101,FOLLOW_2); if (state.failed) return ;
+            match(input,103,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
@@ -30046,14 +30211,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0"
-    // InternalPerspectiveDsl.g:8903:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 ;
+    // InternalPerspectiveDsl.g:8957:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8907:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
-            // InternalPerspectiveDsl.g:8908:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+            // InternalPerspectiveDsl.g:8961:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
+            // InternalPerspectiveDsl.g:8962:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
             {
             pushFollow(FOLLOW_60);
             rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl();
@@ -30084,23 +30249,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:8915:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:8969:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8919:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
-            // InternalPerspectiveDsl.g:8920:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:8973:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:8974:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:8920:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
-            // InternalPerspectiveDsl.g:8921:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:8974:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:8975:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:8922:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
-            // InternalPerspectiveDsl.g:8922:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
+            // InternalPerspectiveDsl.g:8976:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:8976:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0();
@@ -30135,14 +30300,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1"
-    // InternalPerspectiveDsl.g:8930:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:8984:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8934:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:8935:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+            // InternalPerspectiveDsl.g:8988:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:8989:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl();
@@ -30168,35 +30333,35 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:8941:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:8995:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8945:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:8946:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:8999:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9000:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:8946:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
-            // InternalPerspectiveDsl.g:8947:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:9000:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:9001:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:8948:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:9002:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
             loop67:
             do {
                 int alt67=2;
                 int LA67_0 = input.LA(1);
 
-                if ( (LA67_0==98) ) {
+                if ( (LA67_0==100) ) {
                     alt67=1;
                 }
 
 
                 switch (alt67) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8948:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+            	    // InternalPerspectiveDsl.g:9002:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0();
@@ -30237,14 +30402,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0"
-    // InternalPerspectiveDsl.g:8957:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 ;
+    // InternalPerspectiveDsl.g:9011:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8961:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
-            // InternalPerspectiveDsl.g:8962:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+            // InternalPerspectiveDsl.g:9015:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
+            // InternalPerspectiveDsl.g:9016:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl();
@@ -30275,22 +30440,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:8969:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:9023:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8973:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:8974:1: ( ',' )
+            // InternalPerspectiveDsl.g:9027:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:9028:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:8974:1: ( ',' )
-            // InternalPerspectiveDsl.g:8975:2: ','
+            // InternalPerspectiveDsl.g:9028:1: ( ',' )
+            // InternalPerspectiveDsl.g:9029:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -30316,14 +30481,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1"
-    // InternalPerspectiveDsl.g:8984:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9038:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8988:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:8989:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+            // InternalPerspectiveDsl.g:9042:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:9043:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl();
@@ -30349,23 +30514,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:8995:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:9049:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:8999:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:9000:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9053:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9054:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:9000:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
-            // InternalPerspectiveDsl.g:9001:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:9054:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9055:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9002:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
-            // InternalPerspectiveDsl.g:9002:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
+            // InternalPerspectiveDsl.g:9056:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:9056:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1();
@@ -30400,14 +30565,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0"
-    // InternalPerspectiveDsl.g:9011:1: rule__XAnnotationElementValueOrCommaList__Group_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 ;
+    // InternalPerspectiveDsl.g:9065:1: rule__XAnnotationElementValueOrCommaList__Group_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9015:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
-            // InternalPerspectiveDsl.g:9016:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
+            // InternalPerspectiveDsl.g:9069:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
+            // InternalPerspectiveDsl.g:9070:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
             {
             pushFollow(FOLLOW_60);
             rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl();
@@ -30438,17 +30603,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:9023:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:9077:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9027:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:9028:1: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:9081:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:9082:1: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:9028:1: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:9029:2: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:9082:1: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:9083:2: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
@@ -30483,14 +30648,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1"
-    // InternalPerspectiveDsl.g:9038:1: rule__XAnnotationElementValueOrCommaList__Group_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9092:1: rule__XAnnotationElementValueOrCommaList__Group_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9042:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:9043:2: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:9096:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:9097:2: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl();
@@ -30516,31 +30681,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:9049:1: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:9103:1: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9053:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
-            // InternalPerspectiveDsl.g:9054:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:9107:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:9108:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:9054:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
-            // InternalPerspectiveDsl.g:9055:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:9108:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:9109:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9056:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:9110:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
             int alt68=2;
             int LA68_0 = input.LA(1);
 
-            if ( (LA68_0==98) ) {
+            if ( (LA68_0==100) ) {
                 alt68=1;
             }
             switch (alt68) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9056:3: rule__XAnnotationElementValueOrCommaList__Group_1_1__0
+                    // InternalPerspectiveDsl.g:9110:3: rule__XAnnotationElementValueOrCommaList__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1_1__0();
@@ -30578,14 +30743,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0"
-    // InternalPerspectiveDsl.g:9065:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:9119:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9069:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:9070:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+            // InternalPerspectiveDsl.g:9123:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:9124:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
             {
             pushFollow(FOLLOW_60);
             rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl();
@@ -30616,23 +30781,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:9077:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:9131:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9081:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:9082:1: ( () )
+            // InternalPerspectiveDsl.g:9135:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9136:1: ( () )
             {
-            // InternalPerspectiveDsl.g:9082:1: ( () )
-            // InternalPerspectiveDsl.g:9083:2: ()
+            // InternalPerspectiveDsl.g:9136:1: ( () )
+            // InternalPerspectiveDsl.g:9137:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:9084:2: ()
-            // InternalPerspectiveDsl.g:9084:3: 
+            // InternalPerspectiveDsl.g:9138:2: ()
+            // InternalPerspectiveDsl.g:9138:3: 
             {
             }
 
@@ -30657,14 +30822,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1"
-    // InternalPerspectiveDsl.g:9092:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9146:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9096:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:9097:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+            // InternalPerspectiveDsl.g:9150:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:9151:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl();
@@ -30690,26 +30855,26 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:9103:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) ;
+    // InternalPerspectiveDsl.g:9157:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9107:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
-            // InternalPerspectiveDsl.g:9108:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9161:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
+            // InternalPerspectiveDsl.g:9162:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
             {
-            // InternalPerspectiveDsl.g:9108:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:9109:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:9162:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9163:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:9109:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
-            // InternalPerspectiveDsl.g:9110:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalPerspectiveDsl.g:9163:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
+            // InternalPerspectiveDsl.g:9164:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9111:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
-            // InternalPerspectiveDsl.g:9111:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            // InternalPerspectiveDsl.g:9165:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalPerspectiveDsl.g:9165:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
             {
             pushFollow(FOLLOW_61);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
@@ -30725,26 +30890,26 @@
 
             }
 
-            // InternalPerspectiveDsl.g:9114:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
-            // InternalPerspectiveDsl.g:9115:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:9168:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:9169:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9116:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:9170:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
             loop69:
             do {
                 int alt69=2;
                 int LA69_0 = input.LA(1);
 
-                if ( (LA69_0==98) ) {
+                if ( (LA69_0==100) ) {
                     alt69=1;
                 }
 
 
                 switch (alt69) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9116:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            	    // InternalPerspectiveDsl.g:9170:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
@@ -30788,14 +30953,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0"
-    // InternalPerspectiveDsl.g:9126:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 ;
+    // InternalPerspectiveDsl.g:9180:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9130:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
-            // InternalPerspectiveDsl.g:9131:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+            // InternalPerspectiveDsl.g:9184:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
+            // InternalPerspectiveDsl.g:9185:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl();
@@ -30826,22 +30991,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:9138:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:9192:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9142:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:9143:1: ( ',' )
+            // InternalPerspectiveDsl.g:9196:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:9197:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:9143:1: ( ',' )
-            // InternalPerspectiveDsl.g:9144:2: ','
+            // InternalPerspectiveDsl.g:9197:1: ( ',' )
+            // InternalPerspectiveDsl.g:9198:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
             }
@@ -30867,14 +31032,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1"
-    // InternalPerspectiveDsl.g:9153:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9207:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9157:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:9158:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+            // InternalPerspectiveDsl.g:9211:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:9212:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl();
@@ -30900,23 +31065,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:9164:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:9218:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9168:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:9169:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9222:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9223:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:9169:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:9170:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:9223:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9224:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9171:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
-            // InternalPerspectiveDsl.g:9171:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
+            // InternalPerspectiveDsl.g:9225:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:9225:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1();
@@ -30951,14 +31116,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__0"
-    // InternalPerspectiveDsl.g:9180:1: rule__XAnnotationElementValue__Group_0__0 : rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 ;
+    // InternalPerspectiveDsl.g:9234:1: rule__XAnnotationElementValue__Group_0__0 : rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 ;
     public final void rule__XAnnotationElementValue__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9184:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
-            // InternalPerspectiveDsl.g:9185:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
+            // InternalPerspectiveDsl.g:9238:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
+            // InternalPerspectiveDsl.g:9239:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
             {
             pushFollow(FOLLOW_64);
             rule__XAnnotationElementValue__Group_0__0__Impl();
@@ -30989,23 +31154,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:9192:1: rule__XAnnotationElementValue__Group_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9246:1: rule__XAnnotationElementValue__Group_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9196:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9197:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9250:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9251:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9197:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:9198:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:9251:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9252:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9199:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:9199:3: rule__XAnnotationElementValue__Group_0_0__0
+            // InternalPerspectiveDsl.g:9253:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:9253:3: rule__XAnnotationElementValue__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0__0();
@@ -31040,14 +31205,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__1"
-    // InternalPerspectiveDsl.g:9207:1: rule__XAnnotationElementValue__Group_0__1 : rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 ;
+    // InternalPerspectiveDsl.g:9261:1: rule__XAnnotationElementValue__Group_0__1 : rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 ;
     public final void rule__XAnnotationElementValue__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9211:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
-            // InternalPerspectiveDsl.g:9212:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
+            // InternalPerspectiveDsl.g:9265:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
+            // InternalPerspectiveDsl.g:9266:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
             {
             pushFollow(FOLLOW_64);
             rule__XAnnotationElementValue__Group_0__1__Impl();
@@ -31078,31 +31243,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:9219:1: rule__XAnnotationElementValue__Group_0__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:9273:1: rule__XAnnotationElementValue__Group_0__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) ;
     public final void rule__XAnnotationElementValue__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9223:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:9224:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:9277:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:9278:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:9224:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
-            // InternalPerspectiveDsl.g:9225:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:9278:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:9279:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); 
             }
-            // InternalPerspectiveDsl.g:9226:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:9280:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
             int alt70=2;
             int LA70_0 = input.LA(1);
 
-            if ( ((LA70_0>=RULE_ID && LA70_0<=RULE_DECIMAL)||LA70_0==27||(LA70_0>=34 && LA70_0<=35)||LA70_0==40||(LA70_0>=45 && LA70_0<=50)||LA70_0==54||(LA70_0>=95 && LA70_0<=96)||(LA70_0>=100 && LA70_0<=101)||LA70_0==104||LA70_0==106||(LA70_0>=110 && LA70_0<=118)||LA70_0==120||LA70_0==131) ) {
+            if ( ((LA70_0>=RULE_ID && LA70_0<=RULE_DECIMAL)||LA70_0==27||(LA70_0>=34 && LA70_0<=35)||LA70_0==40||(LA70_0>=45 && LA70_0<=50)||LA70_0==54||(LA70_0>=97 && LA70_0<=98)||(LA70_0>=102 && LA70_0<=103)||LA70_0==106||LA70_0==108||(LA70_0>=112 && LA70_0<=120)||LA70_0==122||LA70_0==133) ) {
                 alt70=1;
             }
             switch (alt70) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9226:3: rule__XAnnotationElementValue__Group_0_1__0
+                    // InternalPerspectiveDsl.g:9280:3: rule__XAnnotationElementValue__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0_1__0();
@@ -31140,14 +31305,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__2"
-    // InternalPerspectiveDsl.g:9234:1: rule__XAnnotationElementValue__Group_0__2 : rule__XAnnotationElementValue__Group_0__2__Impl ;
+    // InternalPerspectiveDsl.g:9288:1: rule__XAnnotationElementValue__Group_0__2 : rule__XAnnotationElementValue__Group_0__2__Impl ;
     public final void rule__XAnnotationElementValue__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9238:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
-            // InternalPerspectiveDsl.g:9239:2: rule__XAnnotationElementValue__Group_0__2__Impl
+            // InternalPerspectiveDsl.g:9292:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:9293:2: rule__XAnnotationElementValue__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0__2__Impl();
@@ -31173,22 +31338,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:9245:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:9299:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
     public final void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9249:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:9250:1: ( ']' )
+            // InternalPerspectiveDsl.g:9303:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:9304:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:9250:1: ( ']' )
-            // InternalPerspectiveDsl.g:9251:2: ']'
+            // InternalPerspectiveDsl.g:9304:1: ( ']' )
+            // InternalPerspectiveDsl.g:9305:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
             }
-            match(input,99,FOLLOW_2); if (state.failed) return ;
+            match(input,101,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
             }
@@ -31214,14 +31379,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0"
-    // InternalPerspectiveDsl.g:9261:1: rule__XAnnotationElementValue__Group_0_0__0 : rule__XAnnotationElementValue__Group_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:9315:1: rule__XAnnotationElementValue__Group_0_0__0 : rule__XAnnotationElementValue__Group_0_0__0__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9265:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:9266:2: rule__XAnnotationElementValue__Group_0_0__0__Impl
+            // InternalPerspectiveDsl.g:9319:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:9320:2: rule__XAnnotationElementValue__Group_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0__0__Impl();
@@ -31247,23 +31412,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:9272:1: rule__XAnnotationElementValue__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9326:1: rule__XAnnotationElementValue__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9276:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9277:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9330:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9331:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9277:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:9278:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:9331:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9332:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9279:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
-            // InternalPerspectiveDsl.g:9279:3: rule__XAnnotationElementValue__Group_0_0_0__0
+            // InternalPerspectiveDsl.g:9333:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalPerspectiveDsl.g:9333:3: rule__XAnnotationElementValue__Group_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0_0__0();
@@ -31298,14 +31463,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0"
-    // InternalPerspectiveDsl.g:9288:1: rule__XAnnotationElementValue__Group_0_0_0__0 : rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 ;
+    // InternalPerspectiveDsl.g:9342:1: rule__XAnnotationElementValue__Group_0_0_0__0 : rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9292:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
-            // InternalPerspectiveDsl.g:9293:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
+            // InternalPerspectiveDsl.g:9346:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
+            // InternalPerspectiveDsl.g:9347:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
             {
             pushFollow(FOLLOW_65);
             rule__XAnnotationElementValue__Group_0_0_0__0__Impl();
@@ -31336,23 +31501,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:9300:1: rule__XAnnotationElementValue__Group_0_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:9354:1: rule__XAnnotationElementValue__Group_0_0_0__0__Impl : ( () ) ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9304:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:9305:1: ( () )
+            // InternalPerspectiveDsl.g:9358:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9359:1: ( () )
             {
-            // InternalPerspectiveDsl.g:9305:1: ( () )
-            // InternalPerspectiveDsl.g:9306:2: ()
+            // InternalPerspectiveDsl.g:9359:1: ( () )
+            // InternalPerspectiveDsl.g:9360:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9307:2: ()
-            // InternalPerspectiveDsl.g:9307:3: 
+            // InternalPerspectiveDsl.g:9361:2: ()
+            // InternalPerspectiveDsl.g:9361:3: 
             {
             }
 
@@ -31377,14 +31542,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1"
-    // InternalPerspectiveDsl.g:9315:1: rule__XAnnotationElementValue__Group_0_0_0__1 : rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 ;
+    // InternalPerspectiveDsl.g:9369:1: rule__XAnnotationElementValue__Group_0_0_0__1 : rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9319:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
-            // InternalPerspectiveDsl.g:9320:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
+            // InternalPerspectiveDsl.g:9373:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
+            // InternalPerspectiveDsl.g:9374:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
             {
             pushFollow(FOLLOW_66);
             rule__XAnnotationElementValue__Group_0_0_0__1__Impl();
@@ -31415,22 +31580,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:9327:1: rule__XAnnotationElementValue__Group_0_0_0__1__Impl : ( '#' ) ;
+    // InternalPerspectiveDsl.g:9381:1: rule__XAnnotationElementValue__Group_0_0_0__1__Impl : ( '#' ) ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9331:1: ( ( '#' ) )
-            // InternalPerspectiveDsl.g:9332:1: ( '#' )
+            // InternalPerspectiveDsl.g:9385:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:9386:1: ( '#' )
             {
-            // InternalPerspectiveDsl.g:9332:1: ( '#' )
-            // InternalPerspectiveDsl.g:9333:2: '#'
+            // InternalPerspectiveDsl.g:9386:1: ( '#' )
+            // InternalPerspectiveDsl.g:9387:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
             }
-            match(input,100,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
             }
@@ -31456,14 +31621,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2"
-    // InternalPerspectiveDsl.g:9342:1: rule__XAnnotationElementValue__Group_0_0_0__2 : rule__XAnnotationElementValue__Group_0_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:9396:1: rule__XAnnotationElementValue__Group_0_0_0__2 : rule__XAnnotationElementValue__Group_0_0_0__2__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9346:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:9347:2: rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+            // InternalPerspectiveDsl.g:9400:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:9401:2: rule__XAnnotationElementValue__Group_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0_0__2__Impl();
@@ -31489,22 +31654,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:9353:1: rule__XAnnotationElementValue__Group_0_0_0__2__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:9407:1: rule__XAnnotationElementValue__Group_0_0_0__2__Impl : ( '[' ) ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9357:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:9358:1: ( '[' )
+            // InternalPerspectiveDsl.g:9411:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:9412:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:9358:1: ( '[' )
-            // InternalPerspectiveDsl.g:9359:2: '['
+            // InternalPerspectiveDsl.g:9412:1: ( '[' )
+            // InternalPerspectiveDsl.g:9413:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
-            match(input,101,FOLLOW_2); if (state.failed) return ;
+            match(input,103,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
@@ -31530,14 +31695,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0"
-    // InternalPerspectiveDsl.g:9369:1: rule__XAnnotationElementValue__Group_0_1__0 : rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 ;
+    // InternalPerspectiveDsl.g:9423:1: rule__XAnnotationElementValue__Group_0_1__0 : rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 ;
     public final void rule__XAnnotationElementValue__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9373:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
-            // InternalPerspectiveDsl.g:9374:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
+            // InternalPerspectiveDsl.g:9427:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
+            // InternalPerspectiveDsl.g:9428:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
             {
             pushFollow(FOLLOW_60);
             rule__XAnnotationElementValue__Group_0_1__0__Impl();
@@ -31568,23 +31733,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:9381:1: rule__XAnnotationElementValue__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:9435:1: rule__XAnnotationElementValue__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9385:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
-            // InternalPerspectiveDsl.g:9386:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:9439:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:9440:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:9386:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
-            // InternalPerspectiveDsl.g:9387:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:9440:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:9441:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:9388:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
-            // InternalPerspectiveDsl.g:9388:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_0
+            // InternalPerspectiveDsl.g:9442:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:9442:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__ElementsAssignment_0_1_0();
@@ -31619,14 +31784,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1"
-    // InternalPerspectiveDsl.g:9396:1: rule__XAnnotationElementValue__Group_0_1__1 : rule__XAnnotationElementValue__Group_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9450:1: rule__XAnnotationElementValue__Group_0_1__1 : rule__XAnnotationElementValue__Group_0_1__1__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9400:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:9401:2: rule__XAnnotationElementValue__Group_0_1__1__Impl
+            // InternalPerspectiveDsl.g:9454:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:9455:2: rule__XAnnotationElementValue__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_1__1__Impl();
@@ -31652,35 +31817,35 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:9407:1: rule__XAnnotationElementValue__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:9461:1: rule__XAnnotationElementValue__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) ;
     public final void rule__XAnnotationElementValue__Group_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9411:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:9412:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:9465:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:9466:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:9412:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
-            // InternalPerspectiveDsl.g:9413:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:9466:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:9467:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9414:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:9468:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
             loop71:
             do {
                 int alt71=2;
                 int LA71_0 = input.LA(1);
 
-                if ( (LA71_0==98) ) {
+                if ( (LA71_0==100) ) {
                     alt71=1;
                 }
 
 
                 switch (alt71) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9414:3: rule__XAnnotationElementValue__Group_0_1_1__0
+            	    // InternalPerspectiveDsl.g:9468:3: rule__XAnnotationElementValue__Group_0_1_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XAnnotationElementValue__Group_0_1_1__0();
@@ -31721,14 +31886,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0"
-    // InternalPerspectiveDsl.g:9423:1: rule__XAnnotationElementValue__Group_0_1_1__0 : rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 ;
+    // InternalPerspectiveDsl.g:9477:1: rule__XAnnotationElementValue__Group_0_1_1__0 : rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9427:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
-            // InternalPerspectiveDsl.g:9428:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
+            // InternalPerspectiveDsl.g:9481:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
+            // InternalPerspectiveDsl.g:9482:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XAnnotationElementValue__Group_0_1_1__0__Impl();
@@ -31759,22 +31924,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:9435:1: rule__XAnnotationElementValue__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:9489:1: rule__XAnnotationElementValue__Group_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9439:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:9440:1: ( ',' )
+            // InternalPerspectiveDsl.g:9493:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:9494:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:9440:1: ( ',' )
-            // InternalPerspectiveDsl.g:9441:2: ','
+            // InternalPerspectiveDsl.g:9494:1: ( ',' )
+            // InternalPerspectiveDsl.g:9495:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -31800,14 +31965,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1"
-    // InternalPerspectiveDsl.g:9450:1: rule__XAnnotationElementValue__Group_0_1_1__1 : rule__XAnnotationElementValue__Group_0_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9504:1: rule__XAnnotationElementValue__Group_0_1_1__1 : rule__XAnnotationElementValue__Group_0_1_1__1__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9454:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:9455:2: rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+            // InternalPerspectiveDsl.g:9508:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:9509:2: rule__XAnnotationElementValue__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_1_1__1__Impl();
@@ -31833,23 +31998,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:9461:1: rule__XAnnotationElementValue__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:9515:1: rule__XAnnotationElementValue__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9465:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:9466:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9519:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9520:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:9466:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
-            // InternalPerspectiveDsl.g:9467:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:9520:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9521:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9468:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
-            // InternalPerspectiveDsl.g:9468:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
+            // InternalPerspectiveDsl.g:9522:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:9522:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1();
@@ -31884,14 +32049,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__0"
-    // InternalPerspectiveDsl.g:9477:1: rule__XAssignment__Group_0__0 : rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 ;
+    // InternalPerspectiveDsl.g:9531:1: rule__XAssignment__Group_0__0 : rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 ;
     public final void rule__XAssignment__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9481:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
-            // InternalPerspectiveDsl.g:9482:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
+            // InternalPerspectiveDsl.g:9535:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
+            // InternalPerspectiveDsl.g:9536:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
             {
             pushFollow(FOLLOW_67);
             rule__XAssignment__Group_0__0__Impl();
@@ -31922,23 +32087,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:9489:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:9543:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
     public final void rule__XAssignment__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9493:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:9494:1: ( () )
+            // InternalPerspectiveDsl.g:9547:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9548:1: ( () )
             {
-            // InternalPerspectiveDsl.g:9494:1: ( () )
-            // InternalPerspectiveDsl.g:9495:2: ()
+            // InternalPerspectiveDsl.g:9548:1: ( () )
+            // InternalPerspectiveDsl.g:9549:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9496:2: ()
-            // InternalPerspectiveDsl.g:9496:3: 
+            // InternalPerspectiveDsl.g:9550:2: ()
+            // InternalPerspectiveDsl.g:9550:3: 
             {
             }
 
@@ -31963,14 +32128,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__1"
-    // InternalPerspectiveDsl.g:9504:1: rule__XAssignment__Group_0__1 : rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 ;
+    // InternalPerspectiveDsl.g:9558:1: rule__XAssignment__Group_0__1 : rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 ;
     public final void rule__XAssignment__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9508:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
-            // InternalPerspectiveDsl.g:9509:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
+            // InternalPerspectiveDsl.g:9562:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
+            // InternalPerspectiveDsl.g:9563:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
             {
             pushFollow(FOLLOW_63);
             rule__XAssignment__Group_0__1__Impl();
@@ -32001,23 +32166,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:9516:1: rule__XAssignment__Group_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:9570:1: rule__XAssignment__Group_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) ;
     public final void rule__XAssignment__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9520:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
-            // InternalPerspectiveDsl.g:9521:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:9574:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9575:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:9521:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
-            // InternalPerspectiveDsl.g:9522:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:9575:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:9576:2: ( rule__XAssignment__FeatureAssignment_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); 
             }
-            // InternalPerspectiveDsl.g:9523:2: ( rule__XAssignment__FeatureAssignment_0_1 )
-            // InternalPerspectiveDsl.g:9523:3: rule__XAssignment__FeatureAssignment_0_1
+            // InternalPerspectiveDsl.g:9577:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:9577:3: rule__XAssignment__FeatureAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__FeatureAssignment_0_1();
@@ -32052,14 +32217,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__2"
-    // InternalPerspectiveDsl.g:9531:1: rule__XAssignment__Group_0__2 : rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 ;
+    // InternalPerspectiveDsl.g:9585:1: rule__XAssignment__Group_0__2 : rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 ;
     public final void rule__XAssignment__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9535:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
-            // InternalPerspectiveDsl.g:9536:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
+            // InternalPerspectiveDsl.g:9589:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
+            // InternalPerspectiveDsl.g:9590:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
             {
             pushFollow(FOLLOW_62);
             rule__XAssignment__Group_0__2__Impl();
@@ -32090,17 +32255,17 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:9543:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
+    // InternalPerspectiveDsl.g:9597:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
     public final void rule__XAssignment__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9547:1: ( ( ruleOpSingleAssign ) )
-            // InternalPerspectiveDsl.g:9548:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:9601:1: ( ( ruleOpSingleAssign ) )
+            // InternalPerspectiveDsl.g:9602:1: ( ruleOpSingleAssign )
             {
-            // InternalPerspectiveDsl.g:9548:1: ( ruleOpSingleAssign )
-            // InternalPerspectiveDsl.g:9549:2: ruleOpSingleAssign
+            // InternalPerspectiveDsl.g:9602:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:9603:2: ruleOpSingleAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
@@ -32135,14 +32300,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__3"
-    // InternalPerspectiveDsl.g:9558:1: rule__XAssignment__Group_0__3 : rule__XAssignment__Group_0__3__Impl ;
+    // InternalPerspectiveDsl.g:9612:1: rule__XAssignment__Group_0__3 : rule__XAssignment__Group_0__3__Impl ;
     public final void rule__XAssignment__Group_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9562:1: ( rule__XAssignment__Group_0__3__Impl )
-            // InternalPerspectiveDsl.g:9563:2: rule__XAssignment__Group_0__3__Impl
+            // InternalPerspectiveDsl.g:9616:1: ( rule__XAssignment__Group_0__3__Impl )
+            // InternalPerspectiveDsl.g:9617:2: rule__XAssignment__Group_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_0__3__Impl();
@@ -32168,23 +32333,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__3__Impl"
-    // InternalPerspectiveDsl.g:9569:1: rule__XAssignment__Group_0__3__Impl : ( ( rule__XAssignment__ValueAssignment_0_3 ) ) ;
+    // InternalPerspectiveDsl.g:9623:1: rule__XAssignment__Group_0__3__Impl : ( ( rule__XAssignment__ValueAssignment_0_3 ) ) ;
     public final void rule__XAssignment__Group_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9573:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
-            // InternalPerspectiveDsl.g:9574:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalPerspectiveDsl.g:9627:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
+            // InternalPerspectiveDsl.g:9628:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
             {
-            // InternalPerspectiveDsl.g:9574:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
-            // InternalPerspectiveDsl.g:9575:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalPerspectiveDsl.g:9628:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalPerspectiveDsl.g:9629:2: ( rule__XAssignment__ValueAssignment_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); 
             }
-            // InternalPerspectiveDsl.g:9576:2: ( rule__XAssignment__ValueAssignment_0_3 )
-            // InternalPerspectiveDsl.g:9576:3: rule__XAssignment__ValueAssignment_0_3
+            // InternalPerspectiveDsl.g:9630:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalPerspectiveDsl.g:9630:3: rule__XAssignment__ValueAssignment_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__ValueAssignment_0_3();
@@ -32219,14 +32384,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__0"
-    // InternalPerspectiveDsl.g:9585:1: rule__XAssignment__Group_1__0 : rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 ;
+    // InternalPerspectiveDsl.g:9639:1: rule__XAssignment__Group_1__0 : rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 ;
     public final void rule__XAssignment__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9589:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
-            // InternalPerspectiveDsl.g:9590:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
+            // InternalPerspectiveDsl.g:9643:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
+            // InternalPerspectiveDsl.g:9644:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
             {
             pushFollow(FOLLOW_68);
             rule__XAssignment__Group_1__0__Impl();
@@ -32257,17 +32422,17 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:9597:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
+    // InternalPerspectiveDsl.g:9651:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
     public final void rule__XAssignment__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9601:1: ( ( ruleXOrExpression ) )
-            // InternalPerspectiveDsl.g:9602:1: ( ruleXOrExpression )
+            // InternalPerspectiveDsl.g:9655:1: ( ( ruleXOrExpression ) )
+            // InternalPerspectiveDsl.g:9656:1: ( ruleXOrExpression )
             {
-            // InternalPerspectiveDsl.g:9602:1: ( ruleXOrExpression )
-            // InternalPerspectiveDsl.g:9603:2: ruleXOrExpression
+            // InternalPerspectiveDsl.g:9656:1: ( ruleXOrExpression )
+            // InternalPerspectiveDsl.g:9657:2: ruleXOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
@@ -32302,14 +32467,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__1"
-    // InternalPerspectiveDsl.g:9612:1: rule__XAssignment__Group_1__1 : rule__XAssignment__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9666:1: rule__XAssignment__Group_1__1 : rule__XAssignment__Group_1__1__Impl ;
     public final void rule__XAssignment__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9616:1: ( rule__XAssignment__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:9617:2: rule__XAssignment__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:9670:1: ( rule__XAssignment__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:9671:2: rule__XAssignment__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1__1__Impl();
@@ -32335,27 +32500,27 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:9623:1: rule__XAssignment__Group_1__1__Impl : ( ( rule__XAssignment__Group_1_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:9677:1: rule__XAssignment__Group_1__1__Impl : ( ( rule__XAssignment__Group_1_1__0 )? ) ;
     public final void rule__XAssignment__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9627:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
-            // InternalPerspectiveDsl.g:9628:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:9681:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:9682:1: ( ( rule__XAssignment__Group_1_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:9628:1: ( ( rule__XAssignment__Group_1_1__0 )? )
-            // InternalPerspectiveDsl.g:9629:2: ( rule__XAssignment__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:9682:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:9683:2: ( rule__XAssignment__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9630:2: ( rule__XAssignment__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:9684:2: ( rule__XAssignment__Group_1_1__0 )?
             int alt72=2;
             alt72 = dfa72.predict(input);
             switch (alt72) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9630:3: rule__XAssignment__Group_1_1__0
+                    // InternalPerspectiveDsl.g:9684:3: rule__XAssignment__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1_1__0();
@@ -32393,14 +32558,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__0"
-    // InternalPerspectiveDsl.g:9639:1: rule__XAssignment__Group_1_1__0 : rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:9693:1: rule__XAssignment__Group_1_1__0 : rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 ;
     public final void rule__XAssignment__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9643:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:9644:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
+            // InternalPerspectiveDsl.g:9697:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:9698:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XAssignment__Group_1_1__0__Impl();
@@ -32431,23 +32596,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:9651:1: rule__XAssignment__Group_1_1__0__Impl : ( ( rule__XAssignment__Group_1_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9705:1: rule__XAssignment__Group_1_1__0__Impl : ( ( rule__XAssignment__Group_1_1_0__0 ) ) ;
     public final void rule__XAssignment__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9655:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9656:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9709:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9710:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9656:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
-            // InternalPerspectiveDsl.g:9657:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:9710:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:9711:2: ( rule__XAssignment__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:9658:2: ( rule__XAssignment__Group_1_1_0__0 )
-            // InternalPerspectiveDsl.g:9658:3: rule__XAssignment__Group_1_1_0__0
+            // InternalPerspectiveDsl.g:9712:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:9712:3: rule__XAssignment__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0__0();
@@ -32482,14 +32647,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__1"
-    // InternalPerspectiveDsl.g:9666:1: rule__XAssignment__Group_1_1__1 : rule__XAssignment__Group_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:9720:1: rule__XAssignment__Group_1_1__1 : rule__XAssignment__Group_1_1__1__Impl ;
     public final void rule__XAssignment__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9670:1: ( rule__XAssignment__Group_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:9671:2: rule__XAssignment__Group_1_1__1__Impl
+            // InternalPerspectiveDsl.g:9724:1: ( rule__XAssignment__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:9725:2: rule__XAssignment__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1__1__Impl();
@@ -32515,23 +32680,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:9677:1: rule__XAssignment__Group_1_1__1__Impl : ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:9731:1: rule__XAssignment__Group_1_1__1__Impl : ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) ;
     public final void rule__XAssignment__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9681:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:9682:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9735:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:9736:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:9682:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
-            // InternalPerspectiveDsl.g:9683:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:9736:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:9737:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:9684:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
-            // InternalPerspectiveDsl.g:9684:3: rule__XAssignment__RightOperandAssignment_1_1_1
+            // InternalPerspectiveDsl.g:9738:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:9738:3: rule__XAssignment__RightOperandAssignment_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__RightOperandAssignment_1_1_1();
@@ -32566,14 +32731,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0__0"
-    // InternalPerspectiveDsl.g:9693:1: rule__XAssignment__Group_1_1_0__0 : rule__XAssignment__Group_1_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:9747:1: rule__XAssignment__Group_1_1_0__0 : rule__XAssignment__Group_1_1_0__0__Impl ;
     public final void rule__XAssignment__Group_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9697:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:9698:2: rule__XAssignment__Group_1_1_0__0__Impl
+            // InternalPerspectiveDsl.g:9751:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:9752:2: rule__XAssignment__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0__0__Impl();
@@ -32599,23 +32764,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:9704:1: rule__XAssignment__Group_1_1_0__0__Impl : ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:9758:1: rule__XAssignment__Group_1_1_0__0__Impl : ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) ;
     public final void rule__XAssignment__Group_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9708:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:9709:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9762:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:9763:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:9709:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:9710:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9763:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:9764:2: ( rule__XAssignment__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9711:2: ( rule__XAssignment__Group_1_1_0_0__0 )
-            // InternalPerspectiveDsl.g:9711:3: rule__XAssignment__Group_1_1_0_0__0
+            // InternalPerspectiveDsl.g:9765:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:9765:3: rule__XAssignment__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0_0__0();
@@ -32650,14 +32815,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0"
-    // InternalPerspectiveDsl.g:9720:1: rule__XAssignment__Group_1_1_0_0__0 : rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:9774:1: rule__XAssignment__Group_1_1_0_0__0 : rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 ;
     public final void rule__XAssignment__Group_1_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9724:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
-            // InternalPerspectiveDsl.g:9725:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
+            // InternalPerspectiveDsl.g:9778:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
+            // InternalPerspectiveDsl.g:9779:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
             {
             pushFollow(FOLLOW_68);
             rule__XAssignment__Group_1_1_0_0__0__Impl();
@@ -32688,23 +32853,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:9732:1: rule__XAssignment__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:9786:1: rule__XAssignment__Group_1_1_0_0__0__Impl : ( () ) ;
     public final void rule__XAssignment__Group_1_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9736:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:9737:1: ( () )
+            // InternalPerspectiveDsl.g:9790:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:9791:1: ( () )
             {
-            // InternalPerspectiveDsl.g:9737:1: ( () )
-            // InternalPerspectiveDsl.g:9738:2: ()
+            // InternalPerspectiveDsl.g:9791:1: ( () )
+            // InternalPerspectiveDsl.g:9792:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:9739:2: ()
-            // InternalPerspectiveDsl.g:9739:3: 
+            // InternalPerspectiveDsl.g:9793:2: ()
+            // InternalPerspectiveDsl.g:9793:3: 
             {
             }
 
@@ -32729,14 +32894,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1"
-    // InternalPerspectiveDsl.g:9747:1: rule__XAssignment__Group_1_1_0_0__1 : rule__XAssignment__Group_1_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:9801:1: rule__XAssignment__Group_1_1_0_0__1 : rule__XAssignment__Group_1_1_0_0__1__Impl ;
     public final void rule__XAssignment__Group_1_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9751:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:9752:2: rule__XAssignment__Group_1_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:9805:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:9806:2: rule__XAssignment__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0_0__1__Impl();
@@ -32762,23 +32927,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:9758:1: rule__XAssignment__Group_1_1_0_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:9812:1: rule__XAssignment__Group_1_1_0_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) ;
     public final void rule__XAssignment__Group_1_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9762:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:9763:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9816:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:9817:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:9763:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:9764:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9817:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:9818:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:9765:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
-            // InternalPerspectiveDsl.g:9765:3: rule__XAssignment__FeatureAssignment_1_1_0_0_1
+            // InternalPerspectiveDsl.g:9819:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:9819:3: rule__XAssignment__FeatureAssignment_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__FeatureAssignment_1_1_0_0_1();
@@ -32813,14 +32978,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__0"
-    // InternalPerspectiveDsl.g:9774:1: rule__OpMultiAssign__Group_5__0 : rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 ;
+    // InternalPerspectiveDsl.g:9828:1: rule__OpMultiAssign__Group_5__0 : rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 ;
     public final void rule__OpMultiAssign__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9778:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
-            // InternalPerspectiveDsl.g:9779:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
+            // InternalPerspectiveDsl.g:9832:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
+            // InternalPerspectiveDsl.g:9833:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
             {
             pushFollow(FOLLOW_69);
             rule__OpMultiAssign__Group_5__0__Impl();
@@ -32851,17 +33016,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__0__Impl"
-    // InternalPerspectiveDsl.g:9786:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:9840:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
     public final void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9790:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:9791:1: ( '<' )
+            // InternalPerspectiveDsl.g:9844:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:9845:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:9791:1: ( '<' )
-            // InternalPerspectiveDsl.g:9792:2: '<'
+            // InternalPerspectiveDsl.g:9845:1: ( '<' )
+            // InternalPerspectiveDsl.g:9846:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
@@ -32892,14 +33057,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__1"
-    // InternalPerspectiveDsl.g:9801:1: rule__OpMultiAssign__Group_5__1 : rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 ;
+    // InternalPerspectiveDsl.g:9855:1: rule__OpMultiAssign__Group_5__1 : rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 ;
     public final void rule__OpMultiAssign__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9805:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
-            // InternalPerspectiveDsl.g:9806:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
+            // InternalPerspectiveDsl.g:9859:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
+            // InternalPerspectiveDsl.g:9860:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
             {
             pushFollow(FOLLOW_63);
             rule__OpMultiAssign__Group_5__1__Impl();
@@ -32930,17 +33095,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__1__Impl"
-    // InternalPerspectiveDsl.g:9813:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:9867:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
     public final void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9817:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:9818:1: ( '<' )
+            // InternalPerspectiveDsl.g:9871:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:9872:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:9818:1: ( '<' )
-            // InternalPerspectiveDsl.g:9819:2: '<'
+            // InternalPerspectiveDsl.g:9872:1: ( '<' )
+            // InternalPerspectiveDsl.g:9873:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
@@ -32971,14 +33136,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__2"
-    // InternalPerspectiveDsl.g:9828:1: rule__OpMultiAssign__Group_5__2 : rule__OpMultiAssign__Group_5__2__Impl ;
+    // InternalPerspectiveDsl.g:9882:1: rule__OpMultiAssign__Group_5__2 : rule__OpMultiAssign__Group_5__2__Impl ;
     public final void rule__OpMultiAssign__Group_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9832:1: ( rule__OpMultiAssign__Group_5__2__Impl )
-            // InternalPerspectiveDsl.g:9833:2: rule__OpMultiAssign__Group_5__2__Impl
+            // InternalPerspectiveDsl.g:9886:1: ( rule__OpMultiAssign__Group_5__2__Impl )
+            // InternalPerspectiveDsl.g:9887:2: rule__OpMultiAssign__Group_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Group_5__2__Impl();
@@ -33004,17 +33169,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__2__Impl"
-    // InternalPerspectiveDsl.g:9839:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
+    // InternalPerspectiveDsl.g:9893:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
     public final void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9843:1: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:9844:1: ( '=' )
+            // InternalPerspectiveDsl.g:9897:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:9898:1: ( '=' )
             {
-            // InternalPerspectiveDsl.g:9844:1: ( '=' )
-            // InternalPerspectiveDsl.g:9845:2: '='
+            // InternalPerspectiveDsl.g:9898:1: ( '=' )
+            // InternalPerspectiveDsl.g:9899:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
@@ -33045,14 +33210,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__0"
-    // InternalPerspectiveDsl.g:9855:1: rule__OpMultiAssign__Group_6__0 : rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 ;
+    // InternalPerspectiveDsl.g:9909:1: rule__OpMultiAssign__Group_6__0 : rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 ;
     public final void rule__OpMultiAssign__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9859:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
-            // InternalPerspectiveDsl.g:9860:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
+            // InternalPerspectiveDsl.g:9913:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
+            // InternalPerspectiveDsl.g:9914:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
             {
             pushFollow(FOLLOW_70);
             rule__OpMultiAssign__Group_6__0__Impl();
@@ -33083,17 +33248,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__0__Impl"
-    // InternalPerspectiveDsl.g:9867:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:9921:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
     public final void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9871:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:9872:1: ( '>' )
+            // InternalPerspectiveDsl.g:9925:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:9926:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:9872:1: ( '>' )
-            // InternalPerspectiveDsl.g:9873:2: '>'
+            // InternalPerspectiveDsl.g:9926:1: ( '>' )
+            // InternalPerspectiveDsl.g:9927:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
@@ -33124,14 +33289,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__1"
-    // InternalPerspectiveDsl.g:9882:1: rule__OpMultiAssign__Group_6__1 : rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 ;
+    // InternalPerspectiveDsl.g:9936:1: rule__OpMultiAssign__Group_6__1 : rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 ;
     public final void rule__OpMultiAssign__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9886:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
-            // InternalPerspectiveDsl.g:9887:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
+            // InternalPerspectiveDsl.g:9940:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
+            // InternalPerspectiveDsl.g:9941:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
             {
             pushFollow(FOLLOW_70);
             rule__OpMultiAssign__Group_6__1__Impl();
@@ -33162,22 +33327,22 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__1__Impl"
-    // InternalPerspectiveDsl.g:9894:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
+    // InternalPerspectiveDsl.g:9948:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
     public final void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9898:1: ( ( ( '>' )? ) )
-            // InternalPerspectiveDsl.g:9899:1: ( ( '>' )? )
+            // InternalPerspectiveDsl.g:9952:1: ( ( ( '>' )? ) )
+            // InternalPerspectiveDsl.g:9953:1: ( ( '>' )? )
             {
-            // InternalPerspectiveDsl.g:9899:1: ( ( '>' )? )
-            // InternalPerspectiveDsl.g:9900:2: ( '>' )?
+            // InternalPerspectiveDsl.g:9953:1: ( ( '>' )? )
+            // InternalPerspectiveDsl.g:9954:2: ( '>' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
             }
-            // InternalPerspectiveDsl.g:9901:2: ( '>' )?
+            // InternalPerspectiveDsl.g:9955:2: ( '>' )?
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -33186,7 +33351,7 @@
             }
             switch (alt73) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9901:3: '>'
+                    // InternalPerspectiveDsl.g:9955:3: '>'
                     {
                     match(input,26,FOLLOW_2); if (state.failed) return ;
 
@@ -33220,14 +33385,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__2"
-    // InternalPerspectiveDsl.g:9909:1: rule__OpMultiAssign__Group_6__2 : rule__OpMultiAssign__Group_6__2__Impl ;
+    // InternalPerspectiveDsl.g:9963:1: rule__OpMultiAssign__Group_6__2 : rule__OpMultiAssign__Group_6__2__Impl ;
     public final void rule__OpMultiAssign__Group_6__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9913:1: ( rule__OpMultiAssign__Group_6__2__Impl )
-            // InternalPerspectiveDsl.g:9914:2: rule__OpMultiAssign__Group_6__2__Impl
+            // InternalPerspectiveDsl.g:9967:1: ( rule__OpMultiAssign__Group_6__2__Impl )
+            // InternalPerspectiveDsl.g:9968:2: rule__OpMultiAssign__Group_6__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Group_6__2__Impl();
@@ -33253,17 +33418,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__2__Impl"
-    // InternalPerspectiveDsl.g:9920:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
+    // InternalPerspectiveDsl.g:9974:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
     public final void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9924:1: ( ( '>=' ) )
-            // InternalPerspectiveDsl.g:9925:1: ( '>=' )
+            // InternalPerspectiveDsl.g:9978:1: ( ( '>=' ) )
+            // InternalPerspectiveDsl.g:9979:1: ( '>=' )
             {
-            // InternalPerspectiveDsl.g:9925:1: ( '>=' )
-            // InternalPerspectiveDsl.g:9926:2: '>='
+            // InternalPerspectiveDsl.g:9979:1: ( '>=' )
+            // InternalPerspectiveDsl.g:9980:2: '>='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
@@ -33294,14 +33459,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__0"
-    // InternalPerspectiveDsl.g:9936:1: rule__XOrExpression__Group__0 : rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:9990:1: rule__XOrExpression__Group__0 : rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 ;
     public final void rule__XOrExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9940:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
-            // InternalPerspectiveDsl.g:9941:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
+            // InternalPerspectiveDsl.g:9994:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
+            // InternalPerspectiveDsl.g:9995:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
             {
             pushFollow(FOLLOW_71);
             rule__XOrExpression__Group__0__Impl();
@@ -33332,17 +33497,17 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:9948:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
+    // InternalPerspectiveDsl.g:10002:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
     public final void rule__XOrExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9952:1: ( ( ruleXAndExpression ) )
-            // InternalPerspectiveDsl.g:9953:1: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:10006:1: ( ( ruleXAndExpression ) )
+            // InternalPerspectiveDsl.g:10007:1: ( ruleXAndExpression )
             {
-            // InternalPerspectiveDsl.g:9953:1: ( ruleXAndExpression )
-            // InternalPerspectiveDsl.g:9954:2: ruleXAndExpression
+            // InternalPerspectiveDsl.g:10007:1: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:10008:2: ruleXAndExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
@@ -33377,14 +33542,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__1"
-    // InternalPerspectiveDsl.g:9963:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:10017:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
     public final void rule__XOrExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9967:1: ( rule__XOrExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:9968:2: rule__XOrExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:10021:1: ( rule__XOrExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10022:2: rule__XOrExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group__1__Impl();
@@ -33410,22 +33575,22 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:9974:1: rule__XOrExpression__Group__1__Impl : ( ( rule__XOrExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:10028:1: rule__XOrExpression__Group__1__Impl : ( ( rule__XOrExpression__Group_1__0 )* ) ;
     public final void rule__XOrExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9978:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:9979:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10032:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:10033:1: ( ( rule__XOrExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:9979:1: ( ( rule__XOrExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:9980:2: ( rule__XOrExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10033:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10034:2: ( rule__XOrExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:9981:2: ( rule__XOrExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10035:2: ( rule__XOrExpression__Group_1__0 )*
             loop74:
             do {
                 int alt74=2;
@@ -33444,7 +33609,7 @@
 
                 switch (alt74) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9981:3: rule__XOrExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:10035:3: rule__XOrExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_72);
             	    rule__XOrExpression__Group_1__0();
@@ -33485,14 +33650,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:9990:1: rule__XOrExpression__Group_1__0 : rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:10044:1: rule__XOrExpression__Group_1__0 : rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 ;
     public final void rule__XOrExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:9994:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:9995:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
+            // InternalPerspectiveDsl.g:10048:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:10049:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XOrExpression__Group_1__0__Impl();
@@ -33523,23 +33688,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:10002:1: rule__XOrExpression__Group_1__0__Impl : ( ( rule__XOrExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10056:1: rule__XOrExpression__Group_1__0__Impl : ( ( rule__XOrExpression__Group_1_0__0 ) ) ;
     public final void rule__XOrExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10006:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10007:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10060:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10061:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10007:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:10008:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10061:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10062:2: ( rule__XOrExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:10009:2: ( rule__XOrExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:10009:3: rule__XOrExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:10063:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10063:3: rule__XOrExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0__0();
@@ -33574,14 +33739,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:10017:1: rule__XOrExpression__Group_1__1 : rule__XOrExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:10071:1: rule__XOrExpression__Group_1__1 : rule__XOrExpression__Group_1__1__Impl ;
     public final void rule__XOrExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10021:1: ( rule__XOrExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:10022:2: rule__XOrExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:10075:1: ( rule__XOrExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10076:2: rule__XOrExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1__1__Impl();
@@ -33607,23 +33772,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:10028:1: rule__XOrExpression__Group_1__1__Impl : ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:10082:1: rule__XOrExpression__Group_1__1__Impl : ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XOrExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10032:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:10033:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10086:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10087:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:10033:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:10034:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10087:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10088:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:10035:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:10035:3: rule__XOrExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:10089:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10089:3: rule__XOrExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__RightOperandAssignment_1_1();
@@ -33658,14 +33823,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:10044:1: rule__XOrExpression__Group_1_0__0 : rule__XOrExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10098:1: rule__XOrExpression__Group_1_0__0 : rule__XOrExpression__Group_1_0__0__Impl ;
     public final void rule__XOrExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10048:1: ( rule__XOrExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10049:2: rule__XOrExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:10102:1: ( rule__XOrExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10103:2: rule__XOrExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0__0__Impl();
@@ -33691,23 +33856,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10055:1: rule__XOrExpression__Group_1_0__0__Impl : ( ( rule__XOrExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10109:1: rule__XOrExpression__Group_1_0__0__Impl : ( ( rule__XOrExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XOrExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10059:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10060:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10113:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10114:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10060:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10061:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10114:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10115:2: ( rule__XOrExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10062:2: ( rule__XOrExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10062:3: rule__XOrExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:10116:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10116:3: rule__XOrExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0_0__0();
@@ -33742,14 +33907,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:10071:1: rule__XOrExpression__Group_1_0_0__0 : rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:10125:1: rule__XOrExpression__Group_1_0_0__0 : rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 ;
     public final void rule__XOrExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10075:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:10076:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:10129:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10130:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_71);
             rule__XOrExpression__Group_1_0_0__0__Impl();
@@ -33780,23 +33945,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10083:1: rule__XOrExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:10137:1: rule__XOrExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XOrExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10087:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:10088:1: ( () )
+            // InternalPerspectiveDsl.g:10141:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10142:1: ( () )
             {
-            // InternalPerspectiveDsl.g:10088:1: ( () )
-            // InternalPerspectiveDsl.g:10089:2: ()
+            // InternalPerspectiveDsl.g:10142:1: ( () )
+            // InternalPerspectiveDsl.g:10143:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10090:2: ()
-            // InternalPerspectiveDsl.g:10090:3: 
+            // InternalPerspectiveDsl.g:10144:2: ()
+            // InternalPerspectiveDsl.g:10144:3: 
             {
             }
 
@@ -33821,14 +33986,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:10098:1: rule__XOrExpression__Group_1_0_0__1 : rule__XOrExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10152:1: rule__XOrExpression__Group_1_0_0__1 : rule__XOrExpression__Group_1_0_0__1__Impl ;
     public final void rule__XOrExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10102:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10103:2: rule__XOrExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10156:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10157:2: rule__XOrExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0_0__1__Impl();
@@ -33854,23 +34019,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10109:1: rule__XOrExpression__Group_1_0_0__1__Impl : ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:10163:1: rule__XOrExpression__Group_1_0_0__1__Impl : ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XOrExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10113:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:10114:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10167:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10168:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:10114:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:10115:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10168:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10169:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:10116:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:10116:3: rule__XOrExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:10170:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10170:3: rule__XOrExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__FeatureAssignment_1_0_0_1();
@@ -33905,14 +34070,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__0"
-    // InternalPerspectiveDsl.g:10125:1: rule__XAndExpression__Group__0 : rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:10179:1: rule__XAndExpression__Group__0 : rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 ;
     public final void rule__XAndExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10129:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
-            // InternalPerspectiveDsl.g:10130:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
+            // InternalPerspectiveDsl.g:10183:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10184:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
             {
             pushFollow(FOLLOW_73);
             rule__XAndExpression__Group__0__Impl();
@@ -33943,17 +34108,17 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:10137:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
+    // InternalPerspectiveDsl.g:10191:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
     public final void rule__XAndExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10141:1: ( ( ruleXEqualityExpression ) )
-            // InternalPerspectiveDsl.g:10142:1: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:10195:1: ( ( ruleXEqualityExpression ) )
+            // InternalPerspectiveDsl.g:10196:1: ( ruleXEqualityExpression )
             {
-            // InternalPerspectiveDsl.g:10142:1: ( ruleXEqualityExpression )
-            // InternalPerspectiveDsl.g:10143:2: ruleXEqualityExpression
+            // InternalPerspectiveDsl.g:10196:1: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:10197:2: ruleXEqualityExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
@@ -33988,14 +34153,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__1"
-    // InternalPerspectiveDsl.g:10152:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:10206:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
     public final void rule__XAndExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10156:1: ( rule__XAndExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:10157:2: rule__XAndExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:10210:1: ( rule__XAndExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10211:2: rule__XAndExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group__1__Impl();
@@ -34021,22 +34186,22 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:10163:1: rule__XAndExpression__Group__1__Impl : ( ( rule__XAndExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:10217:1: rule__XAndExpression__Group__1__Impl : ( ( rule__XAndExpression__Group_1__0 )* ) ;
     public final void rule__XAndExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10167:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:10168:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10221:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:10222:1: ( ( rule__XAndExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:10168:1: ( ( rule__XAndExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:10169:2: ( rule__XAndExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10222:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10223:2: ( rule__XAndExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:10170:2: ( rule__XAndExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10224:2: ( rule__XAndExpression__Group_1__0 )*
             loop75:
             do {
                 int alt75=2;
@@ -34055,7 +34220,7 @@
 
                 switch (alt75) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:10170:3: rule__XAndExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:10224:3: rule__XAndExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_74);
             	    rule__XAndExpression__Group_1__0();
@@ -34096,14 +34261,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:10179:1: rule__XAndExpression__Group_1__0 : rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:10233:1: rule__XAndExpression__Group_1__0 : rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 ;
     public final void rule__XAndExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10183:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:10184:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
+            // InternalPerspectiveDsl.g:10237:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:10238:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XAndExpression__Group_1__0__Impl();
@@ -34134,23 +34299,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:10191:1: rule__XAndExpression__Group_1__0__Impl : ( ( rule__XAndExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10245:1: rule__XAndExpression__Group_1__0__Impl : ( ( rule__XAndExpression__Group_1_0__0 ) ) ;
     public final void rule__XAndExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10195:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10196:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10249:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10250:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10196:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:10197:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10250:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10251:2: ( rule__XAndExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:10198:2: ( rule__XAndExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:10198:3: rule__XAndExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:10252:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10252:3: rule__XAndExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0__0();
@@ -34185,14 +34350,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:10206:1: rule__XAndExpression__Group_1__1 : rule__XAndExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:10260:1: rule__XAndExpression__Group_1__1 : rule__XAndExpression__Group_1__1__Impl ;
     public final void rule__XAndExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10210:1: ( rule__XAndExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:10211:2: rule__XAndExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:10264:1: ( rule__XAndExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10265:2: rule__XAndExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1__1__Impl();
@@ -34218,23 +34383,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:10217:1: rule__XAndExpression__Group_1__1__Impl : ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:10271:1: rule__XAndExpression__Group_1__1__Impl : ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XAndExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10221:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:10222:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10275:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10276:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:10222:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:10223:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10276:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10277:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:10224:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:10224:3: rule__XAndExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:10278:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10278:3: rule__XAndExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__RightOperandAssignment_1_1();
@@ -34269,14 +34434,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:10233:1: rule__XAndExpression__Group_1_0__0 : rule__XAndExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10287:1: rule__XAndExpression__Group_1_0__0 : rule__XAndExpression__Group_1_0__0__Impl ;
     public final void rule__XAndExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10237:1: ( rule__XAndExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10238:2: rule__XAndExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:10291:1: ( rule__XAndExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10292:2: rule__XAndExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0__0__Impl();
@@ -34302,23 +34467,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10244:1: rule__XAndExpression__Group_1_0__0__Impl : ( ( rule__XAndExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10298:1: rule__XAndExpression__Group_1_0__0__Impl : ( ( rule__XAndExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XAndExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10248:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10249:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10302:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10303:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10249:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10250:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10303:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10304:2: ( rule__XAndExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10251:2: ( rule__XAndExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10251:3: rule__XAndExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:10305:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10305:3: rule__XAndExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0_0__0();
@@ -34353,14 +34518,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:10260:1: rule__XAndExpression__Group_1_0_0__0 : rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:10314:1: rule__XAndExpression__Group_1_0_0__0 : rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 ;
     public final void rule__XAndExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10264:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:10265:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:10318:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10319:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_73);
             rule__XAndExpression__Group_1_0_0__0__Impl();
@@ -34391,23 +34556,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10272:1: rule__XAndExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:10326:1: rule__XAndExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XAndExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10276:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:10277:1: ( () )
+            // InternalPerspectiveDsl.g:10330:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10331:1: ( () )
             {
-            // InternalPerspectiveDsl.g:10277:1: ( () )
-            // InternalPerspectiveDsl.g:10278:2: ()
+            // InternalPerspectiveDsl.g:10331:1: ( () )
+            // InternalPerspectiveDsl.g:10332:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10279:2: ()
-            // InternalPerspectiveDsl.g:10279:3: 
+            // InternalPerspectiveDsl.g:10333:2: ()
+            // InternalPerspectiveDsl.g:10333:3: 
             {
             }
 
@@ -34432,14 +34597,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:10287:1: rule__XAndExpression__Group_1_0_0__1 : rule__XAndExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10341:1: rule__XAndExpression__Group_1_0_0__1 : rule__XAndExpression__Group_1_0_0__1__Impl ;
     public final void rule__XAndExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10291:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10292:2: rule__XAndExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10345:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10346:2: rule__XAndExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0_0__1__Impl();
@@ -34465,23 +34630,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10298:1: rule__XAndExpression__Group_1_0_0__1__Impl : ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:10352:1: rule__XAndExpression__Group_1_0_0__1__Impl : ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XAndExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10302:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:10303:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10356:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10357:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:10303:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:10304:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10357:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10358:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:10305:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:10305:3: rule__XAndExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:10359:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10359:3: rule__XAndExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__FeatureAssignment_1_0_0_1();
@@ -34516,14 +34681,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__0"
-    // InternalPerspectiveDsl.g:10314:1: rule__XEqualityExpression__Group__0 : rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:10368:1: rule__XEqualityExpression__Group__0 : rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 ;
     public final void rule__XEqualityExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10318:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
-            // InternalPerspectiveDsl.g:10319:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
+            // InternalPerspectiveDsl.g:10372:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10373:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
             {
             pushFollow(FOLLOW_75);
             rule__XEqualityExpression__Group__0__Impl();
@@ -34554,17 +34719,17 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:10326:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
+    // InternalPerspectiveDsl.g:10380:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
     public final void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10330:1: ( ( ruleXRelationalExpression ) )
-            // InternalPerspectiveDsl.g:10331:1: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:10384:1: ( ( ruleXRelationalExpression ) )
+            // InternalPerspectiveDsl.g:10385:1: ( ruleXRelationalExpression )
             {
-            // InternalPerspectiveDsl.g:10331:1: ( ruleXRelationalExpression )
-            // InternalPerspectiveDsl.g:10332:2: ruleXRelationalExpression
+            // InternalPerspectiveDsl.g:10385:1: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:10386:2: ruleXRelationalExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
@@ -34599,14 +34764,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__1"
-    // InternalPerspectiveDsl.g:10341:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:10395:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
     public final void rule__XEqualityExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10345:1: ( rule__XEqualityExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:10346:2: rule__XEqualityExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:10399:1: ( rule__XEqualityExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10400:2: rule__XEqualityExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group__1__Impl();
@@ -34632,22 +34797,22 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:10352:1: rule__XEqualityExpression__Group__1__Impl : ( ( rule__XEqualityExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:10406:1: rule__XEqualityExpression__Group__1__Impl : ( ( rule__XEqualityExpression__Group_1__0 )* ) ;
     public final void rule__XEqualityExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10356:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:10357:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10410:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:10411:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:10357:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:10358:2: ( rule__XEqualityExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10411:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10412:2: ( rule__XEqualityExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:10359:2: ( rule__XEqualityExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10413:2: ( rule__XEqualityExpression__Group_1__0 )*
             loop76:
             do {
                 int alt76=2;
@@ -34701,7 +34866,7 @@
 
                 switch (alt76) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:10359:3: rule__XEqualityExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:10413:3: rule__XEqualityExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_76);
             	    rule__XEqualityExpression__Group_1__0();
@@ -34742,14 +34907,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:10368:1: rule__XEqualityExpression__Group_1__0 : rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:10422:1: rule__XEqualityExpression__Group_1__0 : rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 ;
     public final void rule__XEqualityExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10372:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:10373:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
+            // InternalPerspectiveDsl.g:10426:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:10427:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XEqualityExpression__Group_1__0__Impl();
@@ -34780,23 +34945,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:10380:1: rule__XEqualityExpression__Group_1__0__Impl : ( ( rule__XEqualityExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10434:1: rule__XEqualityExpression__Group_1__0__Impl : ( ( rule__XEqualityExpression__Group_1_0__0 ) ) ;
     public final void rule__XEqualityExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10384:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10385:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10438:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10439:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10385:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:10386:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10439:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10440:2: ( rule__XEqualityExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:10387:2: ( rule__XEqualityExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:10387:3: rule__XEqualityExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:10441:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:10441:3: rule__XEqualityExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0__0();
@@ -34831,14 +34996,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:10395:1: rule__XEqualityExpression__Group_1__1 : rule__XEqualityExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:10449:1: rule__XEqualityExpression__Group_1__1 : rule__XEqualityExpression__Group_1__1__Impl ;
     public final void rule__XEqualityExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10399:1: ( rule__XEqualityExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:10400:2: rule__XEqualityExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:10453:1: ( rule__XEqualityExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10454:2: rule__XEqualityExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1__1__Impl();
@@ -34864,23 +35029,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:10406:1: rule__XEqualityExpression__Group_1__1__Impl : ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:10460:1: rule__XEqualityExpression__Group_1__1__Impl : ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XEqualityExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10410:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:10411:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10464:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10465:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:10411:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:10412:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10465:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:10466:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:10413:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:10413:3: rule__XEqualityExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:10467:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:10467:3: rule__XEqualityExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__RightOperandAssignment_1_1();
@@ -34915,14 +35080,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:10422:1: rule__XEqualityExpression__Group_1_0__0 : rule__XEqualityExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10476:1: rule__XEqualityExpression__Group_1_0__0 : rule__XEqualityExpression__Group_1_0__0__Impl ;
     public final void rule__XEqualityExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10426:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10427:2: rule__XEqualityExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:10480:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10481:2: rule__XEqualityExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0__0__Impl();
@@ -34948,23 +35113,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10433:1: rule__XEqualityExpression__Group_1_0__0__Impl : ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10487:1: rule__XEqualityExpression__Group_1_0__0__Impl : ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XEqualityExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10437:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10438:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10491:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10492:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10438:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10439:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10492:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10493:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10440:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10440:3: rule__XEqualityExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:10494:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10494:3: rule__XEqualityExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0_0__0();
@@ -34999,14 +35164,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:10449:1: rule__XEqualityExpression__Group_1_0_0__0 : rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:10503:1: rule__XEqualityExpression__Group_1_0_0__0 : rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 ;
     public final void rule__XEqualityExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10453:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:10454:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:10507:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10508:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_75);
             rule__XEqualityExpression__Group_1_0_0__0__Impl();
@@ -35037,23 +35202,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10461:1: rule__XEqualityExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:10515:1: rule__XEqualityExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XEqualityExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10465:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:10466:1: ( () )
+            // InternalPerspectiveDsl.g:10519:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10520:1: ( () )
             {
-            // InternalPerspectiveDsl.g:10466:1: ( () )
-            // InternalPerspectiveDsl.g:10467:2: ()
+            // InternalPerspectiveDsl.g:10520:1: ( () )
+            // InternalPerspectiveDsl.g:10521:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10468:2: ()
-            // InternalPerspectiveDsl.g:10468:3: 
+            // InternalPerspectiveDsl.g:10522:2: ()
+            // InternalPerspectiveDsl.g:10522:3: 
             {
             }
 
@@ -35078,14 +35243,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:10476:1: rule__XEqualityExpression__Group_1_0_0__1 : rule__XEqualityExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10530:1: rule__XEqualityExpression__Group_1_0_0__1 : rule__XEqualityExpression__Group_1_0_0__1__Impl ;
     public final void rule__XEqualityExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10480:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10481:2: rule__XEqualityExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10534:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10535:2: rule__XEqualityExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0_0__1__Impl();
@@ -35111,23 +35276,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10487:1: rule__XEqualityExpression__Group_1_0_0__1__Impl : ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:10541:1: rule__XEqualityExpression__Group_1_0_0__1__Impl : ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XEqualityExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10491:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:10492:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10545:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10546:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:10492:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:10493:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10546:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10547:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:10494:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:10494:3: rule__XEqualityExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:10548:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10548:3: rule__XEqualityExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__FeatureAssignment_1_0_0_1();
@@ -35162,14 +35327,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__0"
-    // InternalPerspectiveDsl.g:10503:1: rule__XRelationalExpression__Group__0 : rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:10557:1: rule__XRelationalExpression__Group__0 : rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 ;
     public final void rule__XRelationalExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10507:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
-            // InternalPerspectiveDsl.g:10508:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
+            // InternalPerspectiveDsl.g:10561:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10562:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
             {
             pushFollow(FOLLOW_77);
             rule__XRelationalExpression__Group__0__Impl();
@@ -35200,17 +35365,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:10515:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
+    // InternalPerspectiveDsl.g:10569:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
     public final void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10519:1: ( ( ruleXOtherOperatorExpression ) )
-            // InternalPerspectiveDsl.g:10520:1: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:10573:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalPerspectiveDsl.g:10574:1: ( ruleXOtherOperatorExpression )
             {
-            // InternalPerspectiveDsl.g:10520:1: ( ruleXOtherOperatorExpression )
-            // InternalPerspectiveDsl.g:10521:2: ruleXOtherOperatorExpression
+            // InternalPerspectiveDsl.g:10574:1: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:10575:2: ruleXOtherOperatorExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
@@ -35245,14 +35410,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__1"
-    // InternalPerspectiveDsl.g:10530:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:10584:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
     public final void rule__XRelationalExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10534:1: ( rule__XRelationalExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:10535:2: rule__XRelationalExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:10588:1: ( rule__XRelationalExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10589:2: rule__XRelationalExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group__1__Impl();
@@ -35278,22 +35443,22 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:10541:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
+    // InternalPerspectiveDsl.g:10595:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
     public final void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10545:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
-            // InternalPerspectiveDsl.g:10546:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:10599:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
+            // InternalPerspectiveDsl.g:10600:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
             {
-            // InternalPerspectiveDsl.g:10546:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
-            // InternalPerspectiveDsl.g:10547:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            // InternalPerspectiveDsl.g:10600:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:10601:2: ( rule__XRelationalExpression__Alternatives_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); 
             }
-            // InternalPerspectiveDsl.g:10548:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            // InternalPerspectiveDsl.g:10602:2: ( rule__XRelationalExpression__Alternatives_1 )*
             loop77:
             do {
                 int alt77=2;
@@ -35320,7 +35485,7 @@
 
                     }
                     break;
-                case 102:
+                case 104:
                     {
                     int LA77_4 = input.LA(2);
 
@@ -35347,7 +35512,7 @@
 
                 switch (alt77) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:10548:3: rule__XRelationalExpression__Alternatives_1
+            	    // InternalPerspectiveDsl.g:10602:3: rule__XRelationalExpression__Alternatives_1
             	    {
             	    pushFollow(FOLLOW_78);
             	    rule__XRelationalExpression__Alternatives_1();
@@ -35388,14 +35553,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:10557:1: rule__XRelationalExpression__Group_1_0__0 : rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 ;
+    // InternalPerspectiveDsl.g:10611:1: rule__XRelationalExpression__Group_1_0__0 : rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 ;
     public final void rule__XRelationalExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10561:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
-            // InternalPerspectiveDsl.g:10562:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
+            // InternalPerspectiveDsl.g:10615:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:10616:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
             {
             pushFollow(FOLLOW_79);
             rule__XRelationalExpression__Group_1_0__0__Impl();
@@ -35426,23 +35591,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10569:1: rule__XRelationalExpression__Group_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10623:1: rule__XRelationalExpression__Group_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10573:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10574:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10627:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10628:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10574:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10575:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10628:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10629:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10576:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10576:3: rule__XRelationalExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:10630:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10630:3: rule__XRelationalExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0__0();
@@ -35477,14 +35642,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__1"
-    // InternalPerspectiveDsl.g:10584:1: rule__XRelationalExpression__Group_1_0__1 : rule__XRelationalExpression__Group_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10638:1: rule__XRelationalExpression__Group_1_0__1 : rule__XRelationalExpression__Group_1_0__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10588:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:10589:2: rule__XRelationalExpression__Group_1_0__1__Impl
+            // InternalPerspectiveDsl.g:10642:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:10643:2: rule__XRelationalExpression__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0__1__Impl();
@@ -35510,23 +35675,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:10595:1: rule__XRelationalExpression__Group_1_0__1__Impl : ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:10649:1: rule__XRelationalExpression__Group_1_0__1__Impl : ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) ;
     public final void rule__XRelationalExpression__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10599:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
-            // InternalPerspectiveDsl.g:10600:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:10653:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10654:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:10600:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
-            // InternalPerspectiveDsl.g:10601:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:10654:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:10655:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:10602:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
-            // InternalPerspectiveDsl.g:10602:3: rule__XRelationalExpression__TypeAssignment_1_0_1
+            // InternalPerspectiveDsl.g:10656:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:10656:3: rule__XRelationalExpression__TypeAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__TypeAssignment_1_0_1();
@@ -35561,14 +35726,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:10611:1: rule__XRelationalExpression__Group_1_0_0__0 : rule__XRelationalExpression__Group_1_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10665:1: rule__XRelationalExpression__Group_1_0_0__0 : rule__XRelationalExpression__Group_1_0_0__0__Impl ;
     public final void rule__XRelationalExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10615:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:10616:2: rule__XRelationalExpression__Group_1_0_0__0__Impl
+            // InternalPerspectiveDsl.g:10669:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:10670:2: rule__XRelationalExpression__Group_1_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0__0__Impl();
@@ -35594,23 +35759,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10622:1: rule__XRelationalExpression__Group_1_0_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10676:1: rule__XRelationalExpression__Group_1_0_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10626:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10627:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10680:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10681:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10627:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10628:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:10681:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10682:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10629:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
-            // InternalPerspectiveDsl.g:10629:3: rule__XRelationalExpression__Group_1_0_0_0__0
+            // InternalPerspectiveDsl.g:10683:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:10683:3: rule__XRelationalExpression__Group_1_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0_0__0();
@@ -35645,14 +35810,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0"
-    // InternalPerspectiveDsl.g:10638:1: rule__XRelationalExpression__Group_1_0_0_0__0 : rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 ;
+    // InternalPerspectiveDsl.g:10692:1: rule__XRelationalExpression__Group_1_0_0_0__0 : rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10642:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
-            // InternalPerspectiveDsl.g:10643:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
+            // InternalPerspectiveDsl.g:10696:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
+            // InternalPerspectiveDsl.g:10697:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
             {
             pushFollow(FOLLOW_80);
             rule__XRelationalExpression__Group_1_0_0_0__0__Impl();
@@ -35683,23 +35848,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10650:1: rule__XRelationalExpression__Group_1_0_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:10704:1: rule__XRelationalExpression__Group_1_0_0_0__0__Impl : ( () ) ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10654:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:10655:1: ( () )
+            // InternalPerspectiveDsl.g:10708:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10709:1: ( () )
             {
-            // InternalPerspectiveDsl.g:10655:1: ( () )
-            // InternalPerspectiveDsl.g:10656:2: ()
+            // InternalPerspectiveDsl.g:10709:1: ( () )
+            // InternalPerspectiveDsl.g:10710:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10657:2: ()
-            // InternalPerspectiveDsl.g:10657:3: 
+            // InternalPerspectiveDsl.g:10711:2: ()
+            // InternalPerspectiveDsl.g:10711:3: 
             {
             }
 
@@ -35724,14 +35889,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1"
-    // InternalPerspectiveDsl.g:10665:1: rule__XRelationalExpression__Group_1_0_0_0__1 : rule__XRelationalExpression__Group_1_0_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10719:1: rule__XRelationalExpression__Group_1_0_0_0__1 : rule__XRelationalExpression__Group_1_0_0_0__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10669:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10670:2: rule__XRelationalExpression__Group_1_0_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10723:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10724:2: rule__XRelationalExpression__Group_1_0_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0_0__1__Impl();
@@ -35757,22 +35922,22 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10676:1: rule__XRelationalExpression__Group_1_0_0_0__1__Impl : ( 'instanceof' ) ;
+    // InternalPerspectiveDsl.g:10730:1: rule__XRelationalExpression__Group_1_0_0_0__1__Impl : ( 'instanceof' ) ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10680:1: ( ( 'instanceof' ) )
-            // InternalPerspectiveDsl.g:10681:1: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:10734:1: ( ( 'instanceof' ) )
+            // InternalPerspectiveDsl.g:10735:1: ( 'instanceof' )
             {
-            // InternalPerspectiveDsl.g:10681:1: ( 'instanceof' )
-            // InternalPerspectiveDsl.g:10682:2: 'instanceof'
+            // InternalPerspectiveDsl.g:10735:1: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:10736:2: 'instanceof'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
             }
-            match(input,102,FOLLOW_2); if (state.failed) return ;
+            match(input,104,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
             }
@@ -35798,14 +35963,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__0"
-    // InternalPerspectiveDsl.g:10692:1: rule__XRelationalExpression__Group_1_1__0 : rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:10746:1: rule__XRelationalExpression__Group_1_1__0 : rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 ;
     public final void rule__XRelationalExpression__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10696:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:10697:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
+            // InternalPerspectiveDsl.g:10750:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:10751:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XRelationalExpression__Group_1_1__0__Impl();
@@ -35836,23 +36001,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:10704:1: rule__XRelationalExpression__Group_1_1__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10758:1: rule__XRelationalExpression__Group_1_1__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10708:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10709:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10762:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10763:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10709:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
-            // InternalPerspectiveDsl.g:10710:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:10763:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:10764:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:10711:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
-            // InternalPerspectiveDsl.g:10711:3: rule__XRelationalExpression__Group_1_1_0__0
+            // InternalPerspectiveDsl.g:10765:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:10765:3: rule__XRelationalExpression__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0__0();
@@ -35887,14 +36052,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__1"
-    // InternalPerspectiveDsl.g:10719:1: rule__XRelationalExpression__Group_1_1__1 : rule__XRelationalExpression__Group_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:10773:1: rule__XRelationalExpression__Group_1_1__1 : rule__XRelationalExpression__Group_1_1__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10723:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:10724:2: rule__XRelationalExpression__Group_1_1__1__Impl
+            // InternalPerspectiveDsl.g:10777:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:10778:2: rule__XRelationalExpression__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1__1__Impl();
@@ -35920,23 +36085,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:10730:1: rule__XRelationalExpression__Group_1_1__1__Impl : ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:10784:1: rule__XRelationalExpression__Group_1_1__1__Impl : ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10734:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:10735:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:10788:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:10789:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:10735:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
-            // InternalPerspectiveDsl.g:10736:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:10789:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalPerspectiveDsl.g:10790:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:10737:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
-            // InternalPerspectiveDsl.g:10737:3: rule__XRelationalExpression__RightOperandAssignment_1_1_1
+            // InternalPerspectiveDsl.g:10791:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalPerspectiveDsl.g:10791:3: rule__XRelationalExpression__RightOperandAssignment_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__RightOperandAssignment_1_1_1();
@@ -35971,14 +36136,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0"
-    // InternalPerspectiveDsl.g:10746:1: rule__XRelationalExpression__Group_1_1_0__0 : rule__XRelationalExpression__Group_1_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:10800:1: rule__XRelationalExpression__Group_1_1_0__0 : rule__XRelationalExpression__Group_1_1_0__0__Impl ;
     public final void rule__XRelationalExpression__Group_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10750:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10751:2: rule__XRelationalExpression__Group_1_1_0__0__Impl
+            // InternalPerspectiveDsl.g:10804:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:10805:2: rule__XRelationalExpression__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0__0__Impl();
@@ -36004,23 +36169,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:10757:1: rule__XRelationalExpression__Group_1_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:10811:1: rule__XRelationalExpression__Group_1_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10761:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10762:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10815:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:10816:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10762:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:10763:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10816:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:10817:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10764:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
-            // InternalPerspectiveDsl.g:10764:3: rule__XRelationalExpression__Group_1_1_0_0__0
+            // InternalPerspectiveDsl.g:10818:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:10818:3: rule__XRelationalExpression__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0_0__0();
@@ -36055,14 +36220,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0"
-    // InternalPerspectiveDsl.g:10773:1: rule__XRelationalExpression__Group_1_1_0_0__0 : rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:10827:1: rule__XRelationalExpression__Group_1_1_0_0__0 : rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10777:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
-            // InternalPerspectiveDsl.g:10778:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
+            // InternalPerspectiveDsl.g:10831:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
+            // InternalPerspectiveDsl.g:10832:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
             {
             pushFollow(FOLLOW_77);
             rule__XRelationalExpression__Group_1_1_0_0__0__Impl();
@@ -36093,23 +36258,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:10785:1: rule__XRelationalExpression__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:10839:1: rule__XRelationalExpression__Group_1_1_0_0__0__Impl : ( () ) ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10789:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:10790:1: ( () )
+            // InternalPerspectiveDsl.g:10843:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:10844:1: ( () )
             {
-            // InternalPerspectiveDsl.g:10790:1: ( () )
-            // InternalPerspectiveDsl.g:10791:2: ()
+            // InternalPerspectiveDsl.g:10844:1: ( () )
+            // InternalPerspectiveDsl.g:10845:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:10792:2: ()
-            // InternalPerspectiveDsl.g:10792:3: 
+            // InternalPerspectiveDsl.g:10846:2: ()
+            // InternalPerspectiveDsl.g:10846:3: 
             {
             }
 
@@ -36134,14 +36299,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1"
-    // InternalPerspectiveDsl.g:10800:1: rule__XRelationalExpression__Group_1_1_0_0__1 : rule__XRelationalExpression__Group_1_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:10854:1: rule__XRelationalExpression__Group_1_1_0_0__1 : rule__XRelationalExpression__Group_1_1_0_0__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10804:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:10805:2: rule__XRelationalExpression__Group_1_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:10858:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:10859:2: rule__XRelationalExpression__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0_0__1__Impl();
@@ -36167,23 +36332,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:10811:1: rule__XRelationalExpression__Group_1_1_0_0__1__Impl : ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:10865:1: rule__XRelationalExpression__Group_1_1_0_0__1__Impl : ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10815:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:10816:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10869:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:10870:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:10816:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:10817:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10870:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:10871:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:10818:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
-            // InternalPerspectiveDsl.g:10818:3: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
+            // InternalPerspectiveDsl.g:10872:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:10872:3: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1();
@@ -36218,14 +36383,14 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__0"
-    // InternalPerspectiveDsl.g:10827:1: rule__OpCompare__Group_1__0 : rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 ;
+    // InternalPerspectiveDsl.g:10881:1: rule__OpCompare__Group_1__0 : rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 ;
     public final void rule__OpCompare__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10831:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
-            // InternalPerspectiveDsl.g:10832:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
+            // InternalPerspectiveDsl.g:10885:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
+            // InternalPerspectiveDsl.g:10886:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
             {
             pushFollow(FOLLOW_63);
             rule__OpCompare__Group_1__0__Impl();
@@ -36256,17 +36421,17 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:10839:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:10893:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
     public final void rule__OpCompare__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10843:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:10844:1: ( '<' )
+            // InternalPerspectiveDsl.g:10897:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:10898:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:10844:1: ( '<' )
-            // InternalPerspectiveDsl.g:10845:2: '<'
+            // InternalPerspectiveDsl.g:10898:1: ( '<' )
+            // InternalPerspectiveDsl.g:10899:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
@@ -36297,14 +36462,14 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__1"
-    // InternalPerspectiveDsl.g:10854:1: rule__OpCompare__Group_1__1 : rule__OpCompare__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:10908:1: rule__OpCompare__Group_1__1 : rule__OpCompare__Group_1__1__Impl ;
     public final void rule__OpCompare__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10858:1: ( rule__OpCompare__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:10859:2: rule__OpCompare__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:10912:1: ( rule__OpCompare__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:10913:2: rule__OpCompare__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpCompare__Group_1__1__Impl();
@@ -36330,17 +36495,17 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:10865:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
+    // InternalPerspectiveDsl.g:10919:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
     public final void rule__OpCompare__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10869:1: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:10870:1: ( '=' )
+            // InternalPerspectiveDsl.g:10923:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:10924:1: ( '=' )
             {
-            // InternalPerspectiveDsl.g:10870:1: ( '=' )
-            // InternalPerspectiveDsl.g:10871:2: '='
+            // InternalPerspectiveDsl.g:10924:1: ( '=' )
+            // InternalPerspectiveDsl.g:10925:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
@@ -36371,14 +36536,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__0"
-    // InternalPerspectiveDsl.g:10881:1: rule__XOtherOperatorExpression__Group__0 : rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:10935:1: rule__XOtherOperatorExpression__Group__0 : rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 ;
     public final void rule__XOtherOperatorExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10885:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
-            // InternalPerspectiveDsl.g:10886:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
+            // InternalPerspectiveDsl.g:10939:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
+            // InternalPerspectiveDsl.g:10940:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
             {
             pushFollow(FOLLOW_81);
             rule__XOtherOperatorExpression__Group__0__Impl();
@@ -36409,17 +36574,17 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:10893:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
+    // InternalPerspectiveDsl.g:10947:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
     public final void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10897:1: ( ( ruleXAdditiveExpression ) )
-            // InternalPerspectiveDsl.g:10898:1: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:10951:1: ( ( ruleXAdditiveExpression ) )
+            // InternalPerspectiveDsl.g:10952:1: ( ruleXAdditiveExpression )
             {
-            // InternalPerspectiveDsl.g:10898:1: ( ruleXAdditiveExpression )
-            // InternalPerspectiveDsl.g:10899:2: ruleXAdditiveExpression
+            // InternalPerspectiveDsl.g:10952:1: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:10953:2: ruleXAdditiveExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
@@ -36454,14 +36619,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__1"
-    // InternalPerspectiveDsl.g:10908:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:10962:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
     public final void rule__XOtherOperatorExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10912:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:10913:2: rule__XOtherOperatorExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:10966:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:10967:2: rule__XOtherOperatorExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group__1__Impl();
@@ -36487,29 +36652,29 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:10919:1: rule__XOtherOperatorExpression__Group__1__Impl : ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:10973:1: rule__XOtherOperatorExpression__Group__1__Impl : ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) ;
     public final void rule__XOtherOperatorExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10923:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:10924:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10977:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:10978:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:10924:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:10925:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10978:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:10979:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:10926:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:10980:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
             loop78:
             do {
                 int alt78=2;
                 alt78 = dfa78.predict(input);
                 switch (alt78) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:10926:3: rule__XOtherOperatorExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:10980:3: rule__XOtherOperatorExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_82);
             	    rule__XOtherOperatorExpression__Group_1__0();
@@ -36550,14 +36715,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:10935:1: rule__XOtherOperatorExpression__Group_1__0 : rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:10989:1: rule__XOtherOperatorExpression__Group_1__0 : rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 ;
     public final void rule__XOtherOperatorExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10939:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:10940:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
+            // InternalPerspectiveDsl.g:10993:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:10994:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XOtherOperatorExpression__Group_1__0__Impl();
@@ -36588,23 +36753,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:10947:1: rule__XOtherOperatorExpression__Group_1__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11001:1: rule__XOtherOperatorExpression__Group_1__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10951:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:10952:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11005:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11006:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:10952:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:10953:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11006:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11007:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:10954:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:10954:3: rule__XOtherOperatorExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:11008:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11008:3: rule__XOtherOperatorExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0__0();
@@ -36639,14 +36804,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:10962:1: rule__XOtherOperatorExpression__Group_1__1 : rule__XOtherOperatorExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:11016:1: rule__XOtherOperatorExpression__Group_1__1 : rule__XOtherOperatorExpression__Group_1__1__Impl ;
     public final void rule__XOtherOperatorExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10966:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:10967:2: rule__XOtherOperatorExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:11020:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:11021:2: rule__XOtherOperatorExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1__1__Impl();
@@ -36672,23 +36837,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:10973:1: rule__XOtherOperatorExpression__Group_1__1__Impl : ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:11027:1: rule__XOtherOperatorExpression__Group_1__1__Impl : ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10977:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:10978:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11031:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:11032:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:10978:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:10979:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11032:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11033:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:10980:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:10980:3: rule__XOtherOperatorExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:11034:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11034:3: rule__XOtherOperatorExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__RightOperandAssignment_1_1();
@@ -36723,14 +36888,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:10989:1: rule__XOtherOperatorExpression__Group_1_0__0 : rule__XOtherOperatorExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:11043:1: rule__XOtherOperatorExpression__Group_1_0__0 : rule__XOtherOperatorExpression__Group_1_0__0__Impl ;
     public final void rule__XOtherOperatorExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:10993:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:10994:2: rule__XOtherOperatorExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:11047:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11048:2: rule__XOtherOperatorExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0__0__Impl();
@@ -36756,23 +36921,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11000:1: rule__XOtherOperatorExpression__Group_1_0__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11054:1: rule__XOtherOperatorExpression__Group_1_0__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11004:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11005:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11058:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11059:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11005:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11006:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11059:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11060:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11007:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:11007:3: rule__XOtherOperatorExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:11061:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11061:3: rule__XOtherOperatorExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0_0__0();
@@ -36807,14 +36972,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:11016:1: rule__XOtherOperatorExpression__Group_1_0_0__0 : rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:11070:1: rule__XOtherOperatorExpression__Group_1_0_0__0 : rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11020:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:11021:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:11074:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11075:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_81);
             rule__XOtherOperatorExpression__Group_1_0_0__0__Impl();
@@ -36845,23 +37010,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:11028:1: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11082:1: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11032:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:11033:1: ( () )
+            // InternalPerspectiveDsl.g:11086:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11087:1: ( () )
             {
-            // InternalPerspectiveDsl.g:11033:1: ( () )
-            // InternalPerspectiveDsl.g:11034:2: ()
+            // InternalPerspectiveDsl.g:11087:1: ( () )
+            // InternalPerspectiveDsl.g:11088:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11035:2: ()
-            // InternalPerspectiveDsl.g:11035:3: 
+            // InternalPerspectiveDsl.g:11089:2: ()
+            // InternalPerspectiveDsl.g:11089:3: 
             {
             }
 
@@ -36886,14 +37051,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:11043:1: rule__XOtherOperatorExpression__Group_1_0_0__1 : rule__XOtherOperatorExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:11097:1: rule__XOtherOperatorExpression__Group_1_0_0__1 : rule__XOtherOperatorExpression__Group_1_0_0__1__Impl ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11047:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:11048:2: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:11101:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11102:2: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0_0__1__Impl();
@@ -36919,23 +37084,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:11054:1: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl : ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:11108:1: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl : ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11058:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:11059:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11112:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11113:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:11059:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:11060:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11113:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11114:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:11061:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:11061:3: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:11115:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11115:3: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1();
@@ -36970,14 +37135,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__0"
-    // InternalPerspectiveDsl.g:11070:1: rule__OpOther__Group_2__0 : rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 ;
+    // InternalPerspectiveDsl.g:11124:1: rule__OpOther__Group_2__0 : rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 ;
     public final void rule__OpOther__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11074:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
-            // InternalPerspectiveDsl.g:11075:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
+            // InternalPerspectiveDsl.g:11128:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
+            // InternalPerspectiveDsl.g:11129:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
             {
             pushFollow(FOLLOW_83);
             rule__OpOther__Group_2__0__Impl();
@@ -37008,17 +37173,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__0__Impl"
-    // InternalPerspectiveDsl.g:11082:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:11136:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11086:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:11087:1: ( '>' )
+            // InternalPerspectiveDsl.g:11140:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:11141:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:11087:1: ( '>' )
-            // InternalPerspectiveDsl.g:11088:2: '>'
+            // InternalPerspectiveDsl.g:11141:1: ( '>' )
+            // InternalPerspectiveDsl.g:11142:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
@@ -37049,14 +37214,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__1"
-    // InternalPerspectiveDsl.g:11097:1: rule__OpOther__Group_2__1 : rule__OpOther__Group_2__1__Impl ;
+    // InternalPerspectiveDsl.g:11151:1: rule__OpOther__Group_2__1 : rule__OpOther__Group_2__1__Impl ;
     public final void rule__OpOther__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11101:1: ( rule__OpOther__Group_2__1__Impl )
-            // InternalPerspectiveDsl.g:11102:2: rule__OpOther__Group_2__1__Impl
+            // InternalPerspectiveDsl.g:11155:1: ( rule__OpOther__Group_2__1__Impl )
+            // InternalPerspectiveDsl.g:11156:2: rule__OpOther__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_2__1__Impl();
@@ -37082,17 +37247,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__1__Impl"
-    // InternalPerspectiveDsl.g:11108:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
+    // InternalPerspectiveDsl.g:11162:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
     public final void rule__OpOther__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11112:1: ( ( '..' ) )
-            // InternalPerspectiveDsl.g:11113:1: ( '..' )
+            // InternalPerspectiveDsl.g:11166:1: ( ( '..' ) )
+            // InternalPerspectiveDsl.g:11167:1: ( '..' )
             {
-            // InternalPerspectiveDsl.g:11113:1: ( '..' )
-            // InternalPerspectiveDsl.g:11114:2: '..'
+            // InternalPerspectiveDsl.g:11167:1: ( '..' )
+            // InternalPerspectiveDsl.g:11168:2: '..'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
@@ -37123,14 +37288,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__0"
-    // InternalPerspectiveDsl.g:11124:1: rule__OpOther__Group_5__0 : rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 ;
+    // InternalPerspectiveDsl.g:11178:1: rule__OpOther__Group_5__0 : rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 ;
     public final void rule__OpOther__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11128:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
-            // InternalPerspectiveDsl.g:11129:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
+            // InternalPerspectiveDsl.g:11182:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
+            // InternalPerspectiveDsl.g:11183:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
             {
             pushFollow(FOLLOW_84);
             rule__OpOther__Group_5__0__Impl();
@@ -37161,17 +37326,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__0__Impl"
-    // InternalPerspectiveDsl.g:11136:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:11190:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11140:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:11141:1: ( '>' )
+            // InternalPerspectiveDsl.g:11194:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:11195:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:11141:1: ( '>' )
-            // InternalPerspectiveDsl.g:11142:2: '>'
+            // InternalPerspectiveDsl.g:11195:1: ( '>' )
+            // InternalPerspectiveDsl.g:11196:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
@@ -37202,14 +37367,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__1"
-    // InternalPerspectiveDsl.g:11151:1: rule__OpOther__Group_5__1 : rule__OpOther__Group_5__1__Impl ;
+    // InternalPerspectiveDsl.g:11205:1: rule__OpOther__Group_5__1 : rule__OpOther__Group_5__1__Impl ;
     public final void rule__OpOther__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11155:1: ( rule__OpOther__Group_5__1__Impl )
-            // InternalPerspectiveDsl.g:11156:2: rule__OpOther__Group_5__1__Impl
+            // InternalPerspectiveDsl.g:11209:1: ( rule__OpOther__Group_5__1__Impl )
+            // InternalPerspectiveDsl.g:11210:2: rule__OpOther__Group_5__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5__1__Impl();
@@ -37235,23 +37400,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__1__Impl"
-    // InternalPerspectiveDsl.g:11162:1: rule__OpOther__Group_5__1__Impl : ( ( rule__OpOther__Alternatives_5_1 ) ) ;
+    // InternalPerspectiveDsl.g:11216:1: rule__OpOther__Group_5__1__Impl : ( ( rule__OpOther__Alternatives_5_1 ) ) ;
     public final void rule__OpOther__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11166:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
-            // InternalPerspectiveDsl.g:11167:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalPerspectiveDsl.g:11220:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
+            // InternalPerspectiveDsl.g:11221:1: ( ( rule__OpOther__Alternatives_5_1 ) )
             {
-            // InternalPerspectiveDsl.g:11167:1: ( ( rule__OpOther__Alternatives_5_1 ) )
-            // InternalPerspectiveDsl.g:11168:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalPerspectiveDsl.g:11221:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalPerspectiveDsl.g:11222:2: ( rule__OpOther__Alternatives_5_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); 
             }
-            // InternalPerspectiveDsl.g:11169:2: ( rule__OpOther__Alternatives_5_1 )
-            // InternalPerspectiveDsl.g:11169:3: rule__OpOther__Alternatives_5_1
+            // InternalPerspectiveDsl.g:11223:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalPerspectiveDsl.g:11223:3: rule__OpOther__Alternatives_5_1
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives_5_1();
@@ -37286,14 +37451,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0__0"
-    // InternalPerspectiveDsl.g:11178:1: rule__OpOther__Group_5_1_0__0 : rule__OpOther__Group_5_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:11232:1: rule__OpOther__Group_5_1_0__0 : rule__OpOther__Group_5_1_0__0__Impl ;
     public final void rule__OpOther__Group_5_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11182:1: ( rule__OpOther__Group_5_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:11183:2: rule__OpOther__Group_5_1_0__0__Impl
+            // InternalPerspectiveDsl.g:11236:1: ( rule__OpOther__Group_5_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11237:2: rule__OpOther__Group_5_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0__0__Impl();
@@ -37319,23 +37484,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11189:1: rule__OpOther__Group_5_1_0__0__Impl : ( ( rule__OpOther__Group_5_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11243:1: rule__OpOther__Group_5_1_0__0__Impl : ( ( rule__OpOther__Group_5_1_0_0__0 ) ) ;
     public final void rule__OpOther__Group_5_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11193:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11194:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11247:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11248:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11194:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11195:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11248:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11249:2: ( rule__OpOther__Group_5_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11196:2: ( rule__OpOther__Group_5_1_0_0__0 )
-            // InternalPerspectiveDsl.g:11196:3: rule__OpOther__Group_5_1_0_0__0
+            // InternalPerspectiveDsl.g:11250:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11250:3: rule__OpOther__Group_5_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0_0__0();
@@ -37370,14 +37535,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__0"
-    // InternalPerspectiveDsl.g:11205:1: rule__OpOther__Group_5_1_0_0__0 : rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:11259:1: rule__OpOther__Group_5_1_0_0__0 : rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 ;
     public final void rule__OpOther__Group_5_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11209:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
-            // InternalPerspectiveDsl.g:11210:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
+            // InternalPerspectiveDsl.g:11263:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11264:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
             {
             pushFollow(FOLLOW_84);
             rule__OpOther__Group_5_1_0_0__0__Impl();
@@ -37408,17 +37573,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:11217:1: rule__OpOther__Group_5_1_0_0__0__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:11271:1: rule__OpOther__Group_5_1_0_0__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11221:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:11222:1: ( '>' )
+            // InternalPerspectiveDsl.g:11275:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:11276:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:11222:1: ( '>' )
-            // InternalPerspectiveDsl.g:11223:2: '>'
+            // InternalPerspectiveDsl.g:11276:1: ( '>' )
+            // InternalPerspectiveDsl.g:11277:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
@@ -37449,14 +37614,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__1"
-    // InternalPerspectiveDsl.g:11232:1: rule__OpOther__Group_5_1_0_0__1 : rule__OpOther__Group_5_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:11286:1: rule__OpOther__Group_5_1_0_0__1 : rule__OpOther__Group_5_1_0_0__1__Impl ;
     public final void rule__OpOther__Group_5_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11236:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:11237:2: rule__OpOther__Group_5_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:11290:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11291:2: rule__OpOther__Group_5_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0_0__1__Impl();
@@ -37482,17 +37647,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:11243:1: rule__OpOther__Group_5_1_0_0__1__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:11297:1: rule__OpOther__Group_5_1_0_0__1__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11247:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:11248:1: ( '>' )
+            // InternalPerspectiveDsl.g:11301:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:11302:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:11248:1: ( '>' )
-            // InternalPerspectiveDsl.g:11249:2: '>'
+            // InternalPerspectiveDsl.g:11302:1: ( '>' )
+            // InternalPerspectiveDsl.g:11303:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
@@ -37523,14 +37688,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__0"
-    // InternalPerspectiveDsl.g:11259:1: rule__OpOther__Group_6__0 : rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 ;
+    // InternalPerspectiveDsl.g:11313:1: rule__OpOther__Group_6__0 : rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 ;
     public final void rule__OpOther__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11263:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
-            // InternalPerspectiveDsl.g:11264:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
+            // InternalPerspectiveDsl.g:11317:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
+            // InternalPerspectiveDsl.g:11318:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
             {
             pushFollow(FOLLOW_85);
             rule__OpOther__Group_6__0__Impl();
@@ -37561,17 +37726,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__0__Impl"
-    // InternalPerspectiveDsl.g:11271:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:11325:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11275:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:11276:1: ( '<' )
+            // InternalPerspectiveDsl.g:11329:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:11330:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:11276:1: ( '<' )
-            // InternalPerspectiveDsl.g:11277:2: '<'
+            // InternalPerspectiveDsl.g:11330:1: ( '<' )
+            // InternalPerspectiveDsl.g:11331:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
@@ -37602,14 +37767,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__1"
-    // InternalPerspectiveDsl.g:11286:1: rule__OpOther__Group_6__1 : rule__OpOther__Group_6__1__Impl ;
+    // InternalPerspectiveDsl.g:11340:1: rule__OpOther__Group_6__1 : rule__OpOther__Group_6__1__Impl ;
     public final void rule__OpOther__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11290:1: ( rule__OpOther__Group_6__1__Impl )
-            // InternalPerspectiveDsl.g:11291:2: rule__OpOther__Group_6__1__Impl
+            // InternalPerspectiveDsl.g:11344:1: ( rule__OpOther__Group_6__1__Impl )
+            // InternalPerspectiveDsl.g:11345:2: rule__OpOther__Group_6__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6__1__Impl();
@@ -37635,23 +37800,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__1__Impl"
-    // InternalPerspectiveDsl.g:11297:1: rule__OpOther__Group_6__1__Impl : ( ( rule__OpOther__Alternatives_6_1 ) ) ;
+    // InternalPerspectiveDsl.g:11351:1: rule__OpOther__Group_6__1__Impl : ( ( rule__OpOther__Alternatives_6_1 ) ) ;
     public final void rule__OpOther__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11301:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
-            // InternalPerspectiveDsl.g:11302:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalPerspectiveDsl.g:11355:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
+            // InternalPerspectiveDsl.g:11356:1: ( ( rule__OpOther__Alternatives_6_1 ) )
             {
-            // InternalPerspectiveDsl.g:11302:1: ( ( rule__OpOther__Alternatives_6_1 ) )
-            // InternalPerspectiveDsl.g:11303:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalPerspectiveDsl.g:11356:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalPerspectiveDsl.g:11357:2: ( rule__OpOther__Alternatives_6_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); 
             }
-            // InternalPerspectiveDsl.g:11304:2: ( rule__OpOther__Alternatives_6_1 )
-            // InternalPerspectiveDsl.g:11304:3: rule__OpOther__Alternatives_6_1
+            // InternalPerspectiveDsl.g:11358:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalPerspectiveDsl.g:11358:3: rule__OpOther__Alternatives_6_1
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives_6_1();
@@ -37686,14 +37851,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0__0"
-    // InternalPerspectiveDsl.g:11313:1: rule__OpOther__Group_6_1_0__0 : rule__OpOther__Group_6_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:11367:1: rule__OpOther__Group_6_1_0__0 : rule__OpOther__Group_6_1_0__0__Impl ;
     public final void rule__OpOther__Group_6_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11317:1: ( rule__OpOther__Group_6_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:11318:2: rule__OpOther__Group_6_1_0__0__Impl
+            // InternalPerspectiveDsl.g:11371:1: ( rule__OpOther__Group_6_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11372:2: rule__OpOther__Group_6_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0__0__Impl();
@@ -37719,23 +37884,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11324:1: rule__OpOther__Group_6_1_0__0__Impl : ( ( rule__OpOther__Group_6_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11378:1: rule__OpOther__Group_6_1_0__0__Impl : ( ( rule__OpOther__Group_6_1_0_0__0 ) ) ;
     public final void rule__OpOther__Group_6_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11328:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11329:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11382:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11383:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11329:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11330:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11383:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11384:2: ( rule__OpOther__Group_6_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11331:2: ( rule__OpOther__Group_6_1_0_0__0 )
-            // InternalPerspectiveDsl.g:11331:3: rule__OpOther__Group_6_1_0_0__0
+            // InternalPerspectiveDsl.g:11385:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11385:3: rule__OpOther__Group_6_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0_0__0();
@@ -37770,14 +37935,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__0"
-    // InternalPerspectiveDsl.g:11340:1: rule__OpOther__Group_6_1_0_0__0 : rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:11394:1: rule__OpOther__Group_6_1_0_0__0 : rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 ;
     public final void rule__OpOther__Group_6_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11344:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
-            // InternalPerspectiveDsl.g:11345:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
+            // InternalPerspectiveDsl.g:11398:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11399:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
             {
             pushFollow(FOLLOW_69);
             rule__OpOther__Group_6_1_0_0__0__Impl();
@@ -37808,17 +37973,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:11352:1: rule__OpOther__Group_6_1_0_0__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:11406:1: rule__OpOther__Group_6_1_0_0__0__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11356:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:11357:1: ( '<' )
+            // InternalPerspectiveDsl.g:11410:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:11411:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:11357:1: ( '<' )
-            // InternalPerspectiveDsl.g:11358:2: '<'
+            // InternalPerspectiveDsl.g:11411:1: ( '<' )
+            // InternalPerspectiveDsl.g:11412:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
@@ -37849,14 +38014,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__1"
-    // InternalPerspectiveDsl.g:11367:1: rule__OpOther__Group_6_1_0_0__1 : rule__OpOther__Group_6_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:11421:1: rule__OpOther__Group_6_1_0_0__1 : rule__OpOther__Group_6_1_0_0__1__Impl ;
     public final void rule__OpOther__Group_6_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11371:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:11372:2: rule__OpOther__Group_6_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:11425:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11426:2: rule__OpOther__Group_6_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0_0__1__Impl();
@@ -37882,17 +38047,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:11378:1: rule__OpOther__Group_6_1_0_0__1__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:11432:1: rule__OpOther__Group_6_1_0_0__1__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11382:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:11383:1: ( '<' )
+            // InternalPerspectiveDsl.g:11436:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:11437:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:11383:1: ( '<' )
-            // InternalPerspectiveDsl.g:11384:2: '<'
+            // InternalPerspectiveDsl.g:11437:1: ( '<' )
+            // InternalPerspectiveDsl.g:11438:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
@@ -37923,14 +38088,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__0"
-    // InternalPerspectiveDsl.g:11394:1: rule__XAdditiveExpression__Group__0 : rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:11448:1: rule__XAdditiveExpression__Group__0 : rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 ;
     public final void rule__XAdditiveExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11398:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
-            // InternalPerspectiveDsl.g:11399:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
+            // InternalPerspectiveDsl.g:11452:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
+            // InternalPerspectiveDsl.g:11453:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
             {
             pushFollow(FOLLOW_86);
             rule__XAdditiveExpression__Group__0__Impl();
@@ -37961,17 +38126,17 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:11406:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
+    // InternalPerspectiveDsl.g:11460:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
     public final void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11410:1: ( ( ruleXMultiplicativeExpression ) )
-            // InternalPerspectiveDsl.g:11411:1: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:11464:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalPerspectiveDsl.g:11465:1: ( ruleXMultiplicativeExpression )
             {
-            // InternalPerspectiveDsl.g:11411:1: ( ruleXMultiplicativeExpression )
-            // InternalPerspectiveDsl.g:11412:2: ruleXMultiplicativeExpression
+            // InternalPerspectiveDsl.g:11465:1: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:11466:2: ruleXMultiplicativeExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
@@ -38006,14 +38171,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__1"
-    // InternalPerspectiveDsl.g:11421:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:11475:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
     public final void rule__XAdditiveExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11425:1: ( rule__XAdditiveExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:11426:2: rule__XAdditiveExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:11479:1: ( rule__XAdditiveExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11480:2: rule__XAdditiveExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group__1__Impl();
@@ -38039,22 +38204,22 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:11432:1: rule__XAdditiveExpression__Group__1__Impl : ( ( rule__XAdditiveExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:11486:1: rule__XAdditiveExpression__Group__1__Impl : ( ( rule__XAdditiveExpression__Group_1__0 )* ) ;
     public final void rule__XAdditiveExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11436:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:11437:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11490:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:11491:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:11437:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:11438:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11491:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11492:2: ( rule__XAdditiveExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:11439:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11493:2: ( rule__XAdditiveExpression__Group_1__0 )*
             loop79:
             do {
                 int alt79=2;
@@ -38082,7 +38247,7 @@
 
                 switch (alt79) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:11439:3: rule__XAdditiveExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:11493:3: rule__XAdditiveExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_87);
             	    rule__XAdditiveExpression__Group_1__0();
@@ -38123,14 +38288,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:11448:1: rule__XAdditiveExpression__Group_1__0 : rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:11502:1: rule__XAdditiveExpression__Group_1__0 : rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 ;
     public final void rule__XAdditiveExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11452:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:11453:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
+            // InternalPerspectiveDsl.g:11506:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:11507:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XAdditiveExpression__Group_1__0__Impl();
@@ -38161,23 +38326,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:11460:1: rule__XAdditiveExpression__Group_1__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11514:1: rule__XAdditiveExpression__Group_1__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) ;
     public final void rule__XAdditiveExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11464:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11465:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11518:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11519:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11465:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:11466:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11519:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11520:2: ( rule__XAdditiveExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:11467:2: ( rule__XAdditiveExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:11467:3: rule__XAdditiveExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:11521:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11521:3: rule__XAdditiveExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0__0();
@@ -38212,14 +38377,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:11475:1: rule__XAdditiveExpression__Group_1__1 : rule__XAdditiveExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:11529:1: rule__XAdditiveExpression__Group_1__1 : rule__XAdditiveExpression__Group_1__1__Impl ;
     public final void rule__XAdditiveExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11479:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:11480:2: rule__XAdditiveExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:11533:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:11534:2: rule__XAdditiveExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1__1__Impl();
@@ -38245,23 +38410,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:11486:1: rule__XAdditiveExpression__Group_1__1__Impl : ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:11540:1: rule__XAdditiveExpression__Group_1__1__Impl : ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XAdditiveExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11490:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:11491:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11544:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:11545:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:11491:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:11492:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11545:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11546:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:11493:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:11493:3: rule__XAdditiveExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:11547:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11547:3: rule__XAdditiveExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__RightOperandAssignment_1_1();
@@ -38296,14 +38461,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:11502:1: rule__XAdditiveExpression__Group_1_0__0 : rule__XAdditiveExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:11556:1: rule__XAdditiveExpression__Group_1_0__0 : rule__XAdditiveExpression__Group_1_0__0__Impl ;
     public final void rule__XAdditiveExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11506:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:11507:2: rule__XAdditiveExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:11560:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11561:2: rule__XAdditiveExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0__0__Impl();
@@ -38329,23 +38494,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11513:1: rule__XAdditiveExpression__Group_1_0__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11567:1: rule__XAdditiveExpression__Group_1_0__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XAdditiveExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11517:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11518:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11571:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11572:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11518:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11519:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11572:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11573:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11520:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:11520:3: rule__XAdditiveExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:11574:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11574:3: rule__XAdditiveExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0_0__0();
@@ -38380,14 +38545,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:11529:1: rule__XAdditiveExpression__Group_1_0_0__0 : rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:11583:1: rule__XAdditiveExpression__Group_1_0_0__0 : rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 ;
     public final void rule__XAdditiveExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11533:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:11534:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:11587:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11588:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_86);
             rule__XAdditiveExpression__Group_1_0_0__0__Impl();
@@ -38418,23 +38583,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:11541:1: rule__XAdditiveExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11595:1: rule__XAdditiveExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XAdditiveExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11545:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:11546:1: ( () )
+            // InternalPerspectiveDsl.g:11599:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11600:1: ( () )
             {
-            // InternalPerspectiveDsl.g:11546:1: ( () )
-            // InternalPerspectiveDsl.g:11547:2: ()
+            // InternalPerspectiveDsl.g:11600:1: ( () )
+            // InternalPerspectiveDsl.g:11601:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11548:2: ()
-            // InternalPerspectiveDsl.g:11548:3: 
+            // InternalPerspectiveDsl.g:11602:2: ()
+            // InternalPerspectiveDsl.g:11602:3: 
             {
             }
 
@@ -38459,14 +38624,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:11556:1: rule__XAdditiveExpression__Group_1_0_0__1 : rule__XAdditiveExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:11610:1: rule__XAdditiveExpression__Group_1_0_0__1 : rule__XAdditiveExpression__Group_1_0_0__1__Impl ;
     public final void rule__XAdditiveExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11560:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:11561:2: rule__XAdditiveExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:11614:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11615:2: rule__XAdditiveExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0_0__1__Impl();
@@ -38492,23 +38657,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:11567:1: rule__XAdditiveExpression__Group_1_0_0__1__Impl : ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:11621:1: rule__XAdditiveExpression__Group_1_0_0__1__Impl : ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XAdditiveExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11571:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:11572:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11625:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11626:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:11572:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:11573:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11626:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11627:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:11574:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:11574:3: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:11628:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11628:3: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__FeatureAssignment_1_0_0_1();
@@ -38543,14 +38708,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__0"
-    // InternalPerspectiveDsl.g:11583:1: rule__XMultiplicativeExpression__Group__0 : rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:11637:1: rule__XMultiplicativeExpression__Group__0 : rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 ;
     public final void rule__XMultiplicativeExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11587:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
-            // InternalPerspectiveDsl.g:11588:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
+            // InternalPerspectiveDsl.g:11641:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
+            // InternalPerspectiveDsl.g:11642:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
             {
             pushFollow(FOLLOW_88);
             rule__XMultiplicativeExpression__Group__0__Impl();
@@ -38581,17 +38746,17 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:11595:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
+    // InternalPerspectiveDsl.g:11649:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
     public final void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11599:1: ( ( ruleXUnaryOperation ) )
-            // InternalPerspectiveDsl.g:11600:1: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:11653:1: ( ( ruleXUnaryOperation ) )
+            // InternalPerspectiveDsl.g:11654:1: ( ruleXUnaryOperation )
             {
-            // InternalPerspectiveDsl.g:11600:1: ( ruleXUnaryOperation )
-            // InternalPerspectiveDsl.g:11601:2: ruleXUnaryOperation
+            // InternalPerspectiveDsl.g:11654:1: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:11655:2: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
@@ -38626,14 +38791,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__1"
-    // InternalPerspectiveDsl.g:11610:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:11664:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
     public final void rule__XMultiplicativeExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11614:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:11615:2: rule__XMultiplicativeExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:11668:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11669:2: rule__XMultiplicativeExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group__1__Impl();
@@ -38659,22 +38824,22 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:11621:1: rule__XMultiplicativeExpression__Group__1__Impl : ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:11675:1: rule__XMultiplicativeExpression__Group__1__Impl : ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) ;
     public final void rule__XMultiplicativeExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11625:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:11626:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11679:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:11680:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:11626:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:11627:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11680:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11681:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:11628:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11682:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
             loop80:
             do {
                 int alt80=2;
@@ -38728,7 +38893,7 @@
 
                 switch (alt80) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:11628:3: rule__XMultiplicativeExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:11682:3: rule__XMultiplicativeExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_89);
             	    rule__XMultiplicativeExpression__Group_1__0();
@@ -38769,14 +38934,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:11637:1: rule__XMultiplicativeExpression__Group_1__0 : rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:11691:1: rule__XMultiplicativeExpression__Group_1__0 : rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 ;
     public final void rule__XMultiplicativeExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11641:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:11642:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
+            // InternalPerspectiveDsl.g:11695:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:11696:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XMultiplicativeExpression__Group_1__0__Impl();
@@ -38807,23 +38972,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:11649:1: rule__XMultiplicativeExpression__Group_1__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11703:1: rule__XMultiplicativeExpression__Group_1__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11653:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11654:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11707:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11708:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11654:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:11655:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11708:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11709:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:11656:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:11656:3: rule__XMultiplicativeExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:11710:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11710:3: rule__XMultiplicativeExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0__0();
@@ -38858,14 +39023,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:11664:1: rule__XMultiplicativeExpression__Group_1__1 : rule__XMultiplicativeExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:11718:1: rule__XMultiplicativeExpression__Group_1__1 : rule__XMultiplicativeExpression__Group_1__1__Impl ;
     public final void rule__XMultiplicativeExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11668:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:11669:2: rule__XMultiplicativeExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:11722:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:11723:2: rule__XMultiplicativeExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1__1__Impl();
@@ -38891,23 +39056,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:11675:1: rule__XMultiplicativeExpression__Group_1__1__Impl : ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:11729:1: rule__XMultiplicativeExpression__Group_1__1__Impl : ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11679:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:11680:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11733:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:11734:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:11680:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:11681:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11734:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:11735:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:11682:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
-            // InternalPerspectiveDsl.g:11682:3: rule__XMultiplicativeExpression__RightOperandAssignment_1_1
+            // InternalPerspectiveDsl.g:11736:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalPerspectiveDsl.g:11736:3: rule__XMultiplicativeExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__RightOperandAssignment_1_1();
@@ -38942,14 +39107,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:11691:1: rule__XMultiplicativeExpression__Group_1_0__0 : rule__XMultiplicativeExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:11745:1: rule__XMultiplicativeExpression__Group_1_0__0 : rule__XMultiplicativeExpression__Group_1_0__0__Impl ;
     public final void rule__XMultiplicativeExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11695:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:11696:2: rule__XMultiplicativeExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:11749:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:11750:2: rule__XMultiplicativeExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0__0__Impl();
@@ -38975,23 +39140,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11702:1: rule__XMultiplicativeExpression__Group_1_0__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11756:1: rule__XMultiplicativeExpression__Group_1_0__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11706:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11707:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11760:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11761:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11707:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11708:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11761:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:11762:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11709:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:11709:3: rule__XMultiplicativeExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:11763:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:11763:3: rule__XMultiplicativeExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0_0__0();
@@ -39026,14 +39191,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:11718:1: rule__XMultiplicativeExpression__Group_1_0_0__0 : rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:11772:1: rule__XMultiplicativeExpression__Group_1_0_0__0 : rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11722:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:11723:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:11776:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:11777:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_88);
             rule__XMultiplicativeExpression__Group_1_0_0__0__Impl();
@@ -39064,23 +39229,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:11730:1: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11784:1: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11734:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:11735:1: ( () )
+            // InternalPerspectiveDsl.g:11788:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11789:1: ( () )
             {
-            // InternalPerspectiveDsl.g:11735:1: ( () )
-            // InternalPerspectiveDsl.g:11736:2: ()
+            // InternalPerspectiveDsl.g:11789:1: ( () )
+            // InternalPerspectiveDsl.g:11790:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11737:2: ()
-            // InternalPerspectiveDsl.g:11737:3: 
+            // InternalPerspectiveDsl.g:11791:2: ()
+            // InternalPerspectiveDsl.g:11791:3: 
             {
             }
 
@@ -39105,14 +39270,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:11745:1: rule__XMultiplicativeExpression__Group_1_0_0__1 : rule__XMultiplicativeExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:11799:1: rule__XMultiplicativeExpression__Group_1_0_0__1 : rule__XMultiplicativeExpression__Group_1_0_0__1__Impl ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11749:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:11750:2: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:11803:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:11804:2: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0_0__1__Impl();
@@ -39138,23 +39303,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:11756:1: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl : ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:11810:1: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl : ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11760:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:11761:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11814:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11815:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:11761:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:11762:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11815:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:11816:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:11763:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
-            // InternalPerspectiveDsl.g:11763:3: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
+            // InternalPerspectiveDsl.g:11817:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalPerspectiveDsl.g:11817:3: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1();
@@ -39189,14 +39354,14 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__0"
-    // InternalPerspectiveDsl.g:11772:1: rule__XUnaryOperation__Group_0__0 : rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 ;
+    // InternalPerspectiveDsl.g:11826:1: rule__XUnaryOperation__Group_0__0 : rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 ;
     public final void rule__XUnaryOperation__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11776:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
-            // InternalPerspectiveDsl.g:11777:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
+            // InternalPerspectiveDsl.g:11830:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
+            // InternalPerspectiveDsl.g:11831:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
             {
             pushFollow(FOLLOW_90);
             rule__XUnaryOperation__Group_0__0__Impl();
@@ -39227,23 +39392,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:11784:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:11838:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
     public final void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11788:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:11789:1: ( () )
+            // InternalPerspectiveDsl.g:11842:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:11843:1: ( () )
             {
-            // InternalPerspectiveDsl.g:11789:1: ( () )
-            // InternalPerspectiveDsl.g:11790:2: ()
+            // InternalPerspectiveDsl.g:11843:1: ( () )
+            // InternalPerspectiveDsl.g:11844:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11791:2: ()
-            // InternalPerspectiveDsl.g:11791:3: 
+            // InternalPerspectiveDsl.g:11845:2: ()
+            // InternalPerspectiveDsl.g:11845:3: 
             {
             }
 
@@ -39268,14 +39433,14 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__1"
-    // InternalPerspectiveDsl.g:11799:1: rule__XUnaryOperation__Group_0__1 : rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 ;
+    // InternalPerspectiveDsl.g:11853:1: rule__XUnaryOperation__Group_0__1 : rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 ;
     public final void rule__XUnaryOperation__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11803:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
-            // InternalPerspectiveDsl.g:11804:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
+            // InternalPerspectiveDsl.g:11857:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
+            // InternalPerspectiveDsl.g:11858:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
             {
             pushFollow(FOLLOW_62);
             rule__XUnaryOperation__Group_0__1__Impl();
@@ -39306,23 +39471,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:11811:1: rule__XUnaryOperation__Group_0__1__Impl : ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:11865:1: rule__XUnaryOperation__Group_0__1__Impl : ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) ;
     public final void rule__XUnaryOperation__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11815:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
-            // InternalPerspectiveDsl.g:11816:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:11869:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
+            // InternalPerspectiveDsl.g:11870:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:11816:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
-            // InternalPerspectiveDsl.g:11817:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:11870:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalPerspectiveDsl.g:11871:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); 
             }
-            // InternalPerspectiveDsl.g:11818:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
-            // InternalPerspectiveDsl.g:11818:3: rule__XUnaryOperation__FeatureAssignment_0_1
+            // InternalPerspectiveDsl.g:11872:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalPerspectiveDsl.g:11872:3: rule__XUnaryOperation__FeatureAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__FeatureAssignment_0_1();
@@ -39357,14 +39522,14 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__2"
-    // InternalPerspectiveDsl.g:11826:1: rule__XUnaryOperation__Group_0__2 : rule__XUnaryOperation__Group_0__2__Impl ;
+    // InternalPerspectiveDsl.g:11880:1: rule__XUnaryOperation__Group_0__2 : rule__XUnaryOperation__Group_0__2__Impl ;
     public final void rule__XUnaryOperation__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11830:1: ( rule__XUnaryOperation__Group_0__2__Impl )
-            // InternalPerspectiveDsl.g:11831:2: rule__XUnaryOperation__Group_0__2__Impl
+            // InternalPerspectiveDsl.g:11884:1: ( rule__XUnaryOperation__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:11885:2: rule__XUnaryOperation__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__Group_0__2__Impl();
@@ -39390,23 +39555,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:11837:1: rule__XUnaryOperation__Group_0__2__Impl : ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) ;
+    // InternalPerspectiveDsl.g:11891:1: rule__XUnaryOperation__Group_0__2__Impl : ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) ;
     public final void rule__XUnaryOperation__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11841:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
-            // InternalPerspectiveDsl.g:11842:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalPerspectiveDsl.g:11895:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
+            // InternalPerspectiveDsl.g:11896:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
             {
-            // InternalPerspectiveDsl.g:11842:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
-            // InternalPerspectiveDsl.g:11843:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalPerspectiveDsl.g:11896:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalPerspectiveDsl.g:11897:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); 
             }
-            // InternalPerspectiveDsl.g:11844:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
-            // InternalPerspectiveDsl.g:11844:3: rule__XUnaryOperation__OperandAssignment_0_2
+            // InternalPerspectiveDsl.g:11898:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalPerspectiveDsl.g:11898:3: rule__XUnaryOperation__OperandAssignment_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__OperandAssignment_0_2();
@@ -39441,14 +39606,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__0"
-    // InternalPerspectiveDsl.g:11853:1: rule__XCastedExpression__Group__0 : rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:11907:1: rule__XCastedExpression__Group__0 : rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 ;
     public final void rule__XCastedExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11857:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
-            // InternalPerspectiveDsl.g:11858:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
+            // InternalPerspectiveDsl.g:11911:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
+            // InternalPerspectiveDsl.g:11912:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
             {
             pushFollow(FOLLOW_91);
             rule__XCastedExpression__Group__0__Impl();
@@ -39479,17 +39644,17 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:11865:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
+    // InternalPerspectiveDsl.g:11919:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
     public final void rule__XCastedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11869:1: ( ( ruleXPostfixOperation ) )
-            // InternalPerspectiveDsl.g:11870:1: ( ruleXPostfixOperation )
+            // InternalPerspectiveDsl.g:11923:1: ( ( ruleXPostfixOperation ) )
+            // InternalPerspectiveDsl.g:11924:1: ( ruleXPostfixOperation )
             {
-            // InternalPerspectiveDsl.g:11870:1: ( ruleXPostfixOperation )
-            // InternalPerspectiveDsl.g:11871:2: ruleXPostfixOperation
+            // InternalPerspectiveDsl.g:11924:1: ( ruleXPostfixOperation )
+            // InternalPerspectiveDsl.g:11925:2: ruleXPostfixOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
@@ -39524,14 +39689,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__1"
-    // InternalPerspectiveDsl.g:11880:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:11934:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
     public final void rule__XCastedExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11884:1: ( rule__XCastedExpression__Group__1__Impl )
-            // InternalPerspectiveDsl.g:11885:2: rule__XCastedExpression__Group__1__Impl
+            // InternalPerspectiveDsl.g:11938:1: ( rule__XCastedExpression__Group__1__Impl )
+            // InternalPerspectiveDsl.g:11939:2: rule__XCastedExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group__1__Impl();
@@ -39557,28 +39722,28 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:11891:1: rule__XCastedExpression__Group__1__Impl : ( ( rule__XCastedExpression__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:11945:1: rule__XCastedExpression__Group__1__Impl : ( ( rule__XCastedExpression__Group_1__0 )* ) ;
     public final void rule__XCastedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11895:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:11896:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11949:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:11950:1: ( ( rule__XCastedExpression__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:11896:1: ( ( rule__XCastedExpression__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:11897:2: ( rule__XCastedExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11950:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:11951:2: ( rule__XCastedExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:11898:2: ( rule__XCastedExpression__Group_1__0 )*
+            // InternalPerspectiveDsl.g:11952:2: ( rule__XCastedExpression__Group_1__0 )*
             loop81:
             do {
                 int alt81=2;
                 int LA81_0 = input.LA(1);
 
-                if ( (LA81_0==103) ) {
+                if ( (LA81_0==105) ) {
                     int LA81_2 = input.LA(2);
 
                     if ( (synpred140_InternalPerspectiveDsl()) ) {
@@ -39591,7 +39756,7 @@
 
                 switch (alt81) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:11898:3: rule__XCastedExpression__Group_1__0
+            	    // InternalPerspectiveDsl.g:11952:3: rule__XCastedExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_92);
             	    rule__XCastedExpression__Group_1__0();
@@ -39632,14 +39797,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__0"
-    // InternalPerspectiveDsl.g:11907:1: rule__XCastedExpression__Group_1__0 : rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 ;
+    // InternalPerspectiveDsl.g:11961:1: rule__XCastedExpression__Group_1__0 : rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 ;
     public final void rule__XCastedExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11911:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
-            // InternalPerspectiveDsl.g:11912:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
+            // InternalPerspectiveDsl.g:11965:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
+            // InternalPerspectiveDsl.g:11966:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
             {
             pushFollow(FOLLOW_79);
             rule__XCastedExpression__Group_1__0__Impl();
@@ -39670,23 +39835,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:11919:1: rule__XCastedExpression__Group_1__0__Impl : ( ( rule__XCastedExpression__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:11973:1: rule__XCastedExpression__Group_1__0__Impl : ( ( rule__XCastedExpression__Group_1_0__0 ) ) ;
     public final void rule__XCastedExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11923:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11924:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11977:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:11978:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11924:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:11925:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11978:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:11979:2: ( rule__XCastedExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:11926:2: ( rule__XCastedExpression__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:11926:3: rule__XCastedExpression__Group_1_0__0
+            // InternalPerspectiveDsl.g:11980:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:11980:3: rule__XCastedExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0__0();
@@ -39721,14 +39886,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__1"
-    // InternalPerspectiveDsl.g:11934:1: rule__XCastedExpression__Group_1__1 : rule__XCastedExpression__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:11988:1: rule__XCastedExpression__Group_1__1 : rule__XCastedExpression__Group_1__1__Impl ;
     public final void rule__XCastedExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11938:1: ( rule__XCastedExpression__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:11939:2: rule__XCastedExpression__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:11992:1: ( rule__XCastedExpression__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:11993:2: rule__XCastedExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1__1__Impl();
@@ -39754,23 +39919,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:11945:1: rule__XCastedExpression__Group_1__1__Impl : ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:11999:1: rule__XCastedExpression__Group_1__1__Impl : ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) ;
     public final void rule__XCastedExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11949:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:11950:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:12003:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:12004:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:11950:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:11951:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalPerspectiveDsl.g:12004:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:12005:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:11952:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
-            // InternalPerspectiveDsl.g:11952:3: rule__XCastedExpression__TypeAssignment_1_1
+            // InternalPerspectiveDsl.g:12006:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalPerspectiveDsl.g:12006:3: rule__XCastedExpression__TypeAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__TypeAssignment_1_1();
@@ -39805,14 +39970,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0__0"
-    // InternalPerspectiveDsl.g:11961:1: rule__XCastedExpression__Group_1_0__0 : rule__XCastedExpression__Group_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:12015:1: rule__XCastedExpression__Group_1_0__0 : rule__XCastedExpression__Group_1_0__0__Impl ;
     public final void rule__XCastedExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11965:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:11966:2: rule__XCastedExpression__Group_1_0__0__Impl
+            // InternalPerspectiveDsl.g:12019:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:12020:2: rule__XCastedExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0__0__Impl();
@@ -39838,23 +40003,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:11972:1: rule__XCastedExpression__Group_1_0__0__Impl : ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:12026:1: rule__XCastedExpression__Group_1_0__0__Impl : ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XCastedExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11976:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:11977:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:12030:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12031:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:11977:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:11978:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:12031:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:12032:2: ( rule__XCastedExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:11979:2: ( rule__XCastedExpression__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:11979:3: rule__XCastedExpression__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:12033:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:12033:3: rule__XCastedExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0_0__0();
@@ -39889,14 +40054,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:11988:1: rule__XCastedExpression__Group_1_0_0__0 : rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:12042:1: rule__XCastedExpression__Group_1_0_0__0 : rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 ;
     public final void rule__XCastedExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:11992:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:11993:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:12046:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:12047:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_91);
             rule__XCastedExpression__Group_1_0_0__0__Impl();
@@ -39927,23 +40092,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:12000:1: rule__XCastedExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:12054:1: rule__XCastedExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XCastedExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12004:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:12005:1: ( () )
+            // InternalPerspectiveDsl.g:12058:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12059:1: ( () )
             {
-            // InternalPerspectiveDsl.g:12005:1: ( () )
-            // InternalPerspectiveDsl.g:12006:2: ()
+            // InternalPerspectiveDsl.g:12059:1: ( () )
+            // InternalPerspectiveDsl.g:12060:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12007:2: ()
-            // InternalPerspectiveDsl.g:12007:3: 
+            // InternalPerspectiveDsl.g:12061:2: ()
+            // InternalPerspectiveDsl.g:12061:3: 
             {
             }
 
@@ -39968,14 +40133,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:12015:1: rule__XCastedExpression__Group_1_0_0__1 : rule__XCastedExpression__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:12069:1: rule__XCastedExpression__Group_1_0_0__1 : rule__XCastedExpression__Group_1_0_0__1__Impl ;
     public final void rule__XCastedExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12019:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:12020:2: rule__XCastedExpression__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:12073:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:12074:2: rule__XCastedExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0_0__1__Impl();
@@ -40001,22 +40166,22 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:12026:1: rule__XCastedExpression__Group_1_0_0__1__Impl : ( 'as' ) ;
+    // InternalPerspectiveDsl.g:12080:1: rule__XCastedExpression__Group_1_0_0__1__Impl : ( 'as' ) ;
     public final void rule__XCastedExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12030:1: ( ( 'as' ) )
-            // InternalPerspectiveDsl.g:12031:1: ( 'as' )
+            // InternalPerspectiveDsl.g:12084:1: ( ( 'as' ) )
+            // InternalPerspectiveDsl.g:12085:1: ( 'as' )
             {
-            // InternalPerspectiveDsl.g:12031:1: ( 'as' )
-            // InternalPerspectiveDsl.g:12032:2: 'as'
+            // InternalPerspectiveDsl.g:12085:1: ( 'as' )
+            // InternalPerspectiveDsl.g:12086:2: 'as'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
             }
-            match(input,103,FOLLOW_2); if (state.failed) return ;
+            match(input,105,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
             }
@@ -40042,14 +40207,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__0"
-    // InternalPerspectiveDsl.g:12042:1: rule__XPostfixOperation__Group__0 : rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 ;
+    // InternalPerspectiveDsl.g:12096:1: rule__XPostfixOperation__Group__0 : rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 ;
     public final void rule__XPostfixOperation__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12046:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
-            // InternalPerspectiveDsl.g:12047:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
+            // InternalPerspectiveDsl.g:12100:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
+            // InternalPerspectiveDsl.g:12101:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
             {
             pushFollow(FOLLOW_93);
             rule__XPostfixOperation__Group__0__Impl();
@@ -40080,17 +40245,17 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__0__Impl"
-    // InternalPerspectiveDsl.g:12054:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
+    // InternalPerspectiveDsl.g:12108:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
     public final void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12058:1: ( ( ruleXMemberFeatureCall ) )
-            // InternalPerspectiveDsl.g:12059:1: ( ruleXMemberFeatureCall )
+            // InternalPerspectiveDsl.g:12112:1: ( ( ruleXMemberFeatureCall ) )
+            // InternalPerspectiveDsl.g:12113:1: ( ruleXMemberFeatureCall )
             {
-            // InternalPerspectiveDsl.g:12059:1: ( ruleXMemberFeatureCall )
-            // InternalPerspectiveDsl.g:12060:2: ruleXMemberFeatureCall
+            // InternalPerspectiveDsl.g:12113:1: ( ruleXMemberFeatureCall )
+            // InternalPerspectiveDsl.g:12114:2: ruleXMemberFeatureCall
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
@@ -40125,14 +40290,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__1"
-    // InternalPerspectiveDsl.g:12069:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:12123:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
     public final void rule__XPostfixOperation__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12073:1: ( rule__XPostfixOperation__Group__1__Impl )
-            // InternalPerspectiveDsl.g:12074:2: rule__XPostfixOperation__Group__1__Impl
+            // InternalPerspectiveDsl.g:12127:1: ( rule__XPostfixOperation__Group__1__Impl )
+            // InternalPerspectiveDsl.g:12128:2: rule__XPostfixOperation__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group__1__Impl();
@@ -40158,22 +40323,22 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__1__Impl"
-    // InternalPerspectiveDsl.g:12080:1: rule__XPostfixOperation__Group__1__Impl : ( ( rule__XPostfixOperation__Group_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:12134:1: rule__XPostfixOperation__Group__1__Impl : ( ( rule__XPostfixOperation__Group_1__0 )? ) ;
     public final void rule__XPostfixOperation__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12084:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
-            // InternalPerspectiveDsl.g:12085:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:12138:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:12139:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:12085:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
-            // InternalPerspectiveDsl.g:12086:2: ( rule__XPostfixOperation__Group_1__0 )?
+            // InternalPerspectiveDsl.g:12139:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:12140:2: ( rule__XPostfixOperation__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:12087:2: ( rule__XPostfixOperation__Group_1__0 )?
+            // InternalPerspectiveDsl.g:12141:2: ( rule__XPostfixOperation__Group_1__0 )?
             int alt82=2;
             int LA82_0 = input.LA(1);
 
@@ -40193,7 +40358,7 @@
             }
             switch (alt82) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12087:3: rule__XPostfixOperation__Group_1__0
+                    // InternalPerspectiveDsl.g:12141:3: rule__XPostfixOperation__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XPostfixOperation__Group_1__0();
@@ -40231,14 +40396,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1__0"
-    // InternalPerspectiveDsl.g:12096:1: rule__XPostfixOperation__Group_1__0 : rule__XPostfixOperation__Group_1__0__Impl ;
+    // InternalPerspectiveDsl.g:12150:1: rule__XPostfixOperation__Group_1__0 : rule__XPostfixOperation__Group_1__0__Impl ;
     public final void rule__XPostfixOperation__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12100:1: ( rule__XPostfixOperation__Group_1__0__Impl )
-            // InternalPerspectiveDsl.g:12101:2: rule__XPostfixOperation__Group_1__0__Impl
+            // InternalPerspectiveDsl.g:12154:1: ( rule__XPostfixOperation__Group_1__0__Impl )
+            // InternalPerspectiveDsl.g:12155:2: rule__XPostfixOperation__Group_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1__0__Impl();
@@ -40264,23 +40429,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:12107:1: rule__XPostfixOperation__Group_1__0__Impl : ( ( rule__XPostfixOperation__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:12161:1: rule__XPostfixOperation__Group_1__0__Impl : ( ( rule__XPostfixOperation__Group_1_0__0 ) ) ;
     public final void rule__XPostfixOperation__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12111:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:12112:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:12165:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12166:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:12112:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:12113:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:12166:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:12167:2: ( rule__XPostfixOperation__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:12114:2: ( rule__XPostfixOperation__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:12114:3: rule__XPostfixOperation__Group_1_0__0
+            // InternalPerspectiveDsl.g:12168:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:12168:3: rule__XPostfixOperation__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1_0__0();
@@ -40315,14 +40480,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__0"
-    // InternalPerspectiveDsl.g:12123:1: rule__XPostfixOperation__Group_1_0__0 : rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 ;
+    // InternalPerspectiveDsl.g:12177:1: rule__XPostfixOperation__Group_1_0__0 : rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 ;
     public final void rule__XPostfixOperation__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12127:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
-            // InternalPerspectiveDsl.g:12128:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
+            // InternalPerspectiveDsl.g:12181:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:12182:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
             {
             pushFollow(FOLLOW_93);
             rule__XPostfixOperation__Group_1_0__0__Impl();
@@ -40353,23 +40518,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:12135:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:12189:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
     public final void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12139:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:12140:1: ( () )
+            // InternalPerspectiveDsl.g:12193:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12194:1: ( () )
             {
-            // InternalPerspectiveDsl.g:12140:1: ( () )
-            // InternalPerspectiveDsl.g:12141:2: ()
+            // InternalPerspectiveDsl.g:12194:1: ( () )
+            // InternalPerspectiveDsl.g:12195:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12142:2: ()
-            // InternalPerspectiveDsl.g:12142:3: 
+            // InternalPerspectiveDsl.g:12196:2: ()
+            // InternalPerspectiveDsl.g:12196:3: 
             {
             }
 
@@ -40394,14 +40559,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__1"
-    // InternalPerspectiveDsl.g:12150:1: rule__XPostfixOperation__Group_1_0__1 : rule__XPostfixOperation__Group_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:12204:1: rule__XPostfixOperation__Group_1_0__1 : rule__XPostfixOperation__Group_1_0__1__Impl ;
     public final void rule__XPostfixOperation__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12154:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:12155:2: rule__XPostfixOperation__Group_1_0__1__Impl
+            // InternalPerspectiveDsl.g:12208:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:12209:2: rule__XPostfixOperation__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1_0__1__Impl();
@@ -40427,23 +40592,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:12161:1: rule__XPostfixOperation__Group_1_0__1__Impl : ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:12215:1: rule__XPostfixOperation__Group_1_0__1__Impl : ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) ;
     public final void rule__XPostfixOperation__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12165:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
-            // InternalPerspectiveDsl.g:12166:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:12219:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:12220:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:12166:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
-            // InternalPerspectiveDsl.g:12167:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:12220:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:12221:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:12168:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
-            // InternalPerspectiveDsl.g:12168:3: rule__XPostfixOperation__FeatureAssignment_1_0_1
+            // InternalPerspectiveDsl.g:12222:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:12222:3: rule__XPostfixOperation__FeatureAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__FeatureAssignment_1_0_1();
@@ -40478,14 +40643,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__0"
-    // InternalPerspectiveDsl.g:12177:1: rule__XMemberFeatureCall__Group__0 : rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 ;
+    // InternalPerspectiveDsl.g:12231:1: rule__XMemberFeatureCall__Group__0 : rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 ;
     public final void rule__XMemberFeatureCall__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12181:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
-            // InternalPerspectiveDsl.g:12182:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
+            // InternalPerspectiveDsl.g:12235:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
+            // InternalPerspectiveDsl.g:12236:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
             {
             pushFollow(FOLLOW_94);
             rule__XMemberFeatureCall__Group__0__Impl();
@@ -40516,17 +40681,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__0__Impl"
-    // InternalPerspectiveDsl.g:12189:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
+    // InternalPerspectiveDsl.g:12243:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
     public final void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12193:1: ( ( ruleXPrimaryExpression ) )
-            // InternalPerspectiveDsl.g:12194:1: ( ruleXPrimaryExpression )
+            // InternalPerspectiveDsl.g:12247:1: ( ( ruleXPrimaryExpression ) )
+            // InternalPerspectiveDsl.g:12248:1: ( ruleXPrimaryExpression )
             {
-            // InternalPerspectiveDsl.g:12194:1: ( ruleXPrimaryExpression )
-            // InternalPerspectiveDsl.g:12195:2: ruleXPrimaryExpression
+            // InternalPerspectiveDsl.g:12248:1: ( ruleXPrimaryExpression )
+            // InternalPerspectiveDsl.g:12249:2: ruleXPrimaryExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
@@ -40561,14 +40726,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__1"
-    // InternalPerspectiveDsl.g:12204:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:12258:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
     public final void rule__XMemberFeatureCall__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12208:1: ( rule__XMemberFeatureCall__Group__1__Impl )
-            // InternalPerspectiveDsl.g:12209:2: rule__XMemberFeatureCall__Group__1__Impl
+            // InternalPerspectiveDsl.g:12262:1: ( rule__XMemberFeatureCall__Group__1__Impl )
+            // InternalPerspectiveDsl.g:12263:2: rule__XMemberFeatureCall__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group__1__Impl();
@@ -40594,22 +40759,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__1__Impl"
-    // InternalPerspectiveDsl.g:12215:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
+    // InternalPerspectiveDsl.g:12269:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
     public final void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12219:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
-            // InternalPerspectiveDsl.g:12220:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:12273:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
+            // InternalPerspectiveDsl.g:12274:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
             {
-            // InternalPerspectiveDsl.g:12220:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
-            // InternalPerspectiveDsl.g:12221:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            // InternalPerspectiveDsl.g:12274:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalPerspectiveDsl.g:12275:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); 
             }
-            // InternalPerspectiveDsl.g:12222:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            // InternalPerspectiveDsl.g:12276:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
             loop83:
             do {
                 int alt83=2;
@@ -40625,7 +40790,7 @@
 
                     }
                     break;
-                case 127:
+                case 129:
                     {
                     int LA83_3 = input.LA(2);
 
@@ -40636,7 +40801,7 @@
 
                     }
                     break;
-                case 128:
+                case 130:
                     {
                     int LA83_4 = input.LA(2);
 
@@ -40652,7 +40817,7 @@
 
                 switch (alt83) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:12222:3: rule__XMemberFeatureCall__Alternatives_1
+            	    // InternalPerspectiveDsl.g:12276:3: rule__XMemberFeatureCall__Alternatives_1
             	    {
             	    pushFollow(FOLLOW_95);
             	    rule__XMemberFeatureCall__Alternatives_1();
@@ -40693,14 +40858,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0"
-    // InternalPerspectiveDsl.g:12231:1: rule__XMemberFeatureCall__Group_1_0__0 : rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 ;
+    // InternalPerspectiveDsl.g:12285:1: rule__XMemberFeatureCall__Group_1_0__0 : rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 ;
     public final void rule__XMemberFeatureCall__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12235:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
-            // InternalPerspectiveDsl.g:12236:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
+            // InternalPerspectiveDsl.g:12289:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:12290:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
             {
             pushFollow(FOLLOW_62);
             rule__XMemberFeatureCall__Group_1_0__0__Impl();
@@ -40731,23 +40896,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:12243:1: rule__XMemberFeatureCall__Group_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:12297:1: rule__XMemberFeatureCall__Group_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12247:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:12248:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:12301:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12302:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:12248:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:12249:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:12302:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:12303:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12250:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
-            // InternalPerspectiveDsl.g:12250:3: rule__XMemberFeatureCall__Group_1_0_0__0
+            // InternalPerspectiveDsl.g:12304:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalPerspectiveDsl.g:12304:3: rule__XMemberFeatureCall__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0__0();
@@ -40782,14 +40947,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1"
-    // InternalPerspectiveDsl.g:12258:1: rule__XMemberFeatureCall__Group_1_0__1 : rule__XMemberFeatureCall__Group_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:12312:1: rule__XMemberFeatureCall__Group_1_0__1 : rule__XMemberFeatureCall__Group_1_0__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12262:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:12263:2: rule__XMemberFeatureCall__Group_1_0__1__Impl
+            // InternalPerspectiveDsl.g:12316:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:12317:2: rule__XMemberFeatureCall__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0__1__Impl();
@@ -40815,23 +40980,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:12269:1: rule__XMemberFeatureCall__Group_1_0__1__Impl : ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:12323:1: rule__XMemberFeatureCall__Group_1_0__1__Impl : ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12273:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
-            // InternalPerspectiveDsl.g:12274:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:12327:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:12328:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:12274:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
-            // InternalPerspectiveDsl.g:12275:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:12328:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:12329:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:12276:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
-            // InternalPerspectiveDsl.g:12276:3: rule__XMemberFeatureCall__ValueAssignment_1_0_1
+            // InternalPerspectiveDsl.g:12330:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:12330:3: rule__XMemberFeatureCall__ValueAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__ValueAssignment_1_0_1();
@@ -40866,14 +41031,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:12285:1: rule__XMemberFeatureCall__Group_1_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:12339:1: rule__XMemberFeatureCall__Group_1_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0__0__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12289:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:12290:2: rule__XMemberFeatureCall__Group_1_0_0__0__Impl
+            // InternalPerspectiveDsl.g:12343:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:12344:2: rule__XMemberFeatureCall__Group_1_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0__0__Impl();
@@ -40899,23 +41064,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:12296:1: rule__XMemberFeatureCall__Group_1_0_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:12350:1: rule__XMemberFeatureCall__Group_1_0_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12300:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:12301:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:12354:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12355:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:12301:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:12302:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:12355:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:12356:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12303:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
-            // InternalPerspectiveDsl.g:12303:3: rule__XMemberFeatureCall__Group_1_0_0_0__0
+            // InternalPerspectiveDsl.g:12357:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalPerspectiveDsl.g:12357:3: rule__XMemberFeatureCall__Group_1_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0_0__0();
@@ -40950,14 +41115,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0"
-    // InternalPerspectiveDsl.g:12312:1: rule__XMemberFeatureCall__Group_1_0_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 ;
+    // InternalPerspectiveDsl.g:12366:1: rule__XMemberFeatureCall__Group_1_0_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12316:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
-            // InternalPerspectiveDsl.g:12317:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
+            // InternalPerspectiveDsl.g:12370:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
+            // InternalPerspectiveDsl.g:12371:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
             {
             pushFollow(FOLLOW_96);
             rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl();
@@ -40988,23 +41153,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:12324:1: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:12378:1: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl : ( () ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12328:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:12329:1: ( () )
+            // InternalPerspectiveDsl.g:12382:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12383:1: ( () )
             {
-            // InternalPerspectiveDsl.g:12329:1: ( () )
-            // InternalPerspectiveDsl.g:12330:2: ()
+            // InternalPerspectiveDsl.g:12383:1: ( () )
+            // InternalPerspectiveDsl.g:12384:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12331:2: ()
-            // InternalPerspectiveDsl.g:12331:3: 
+            // InternalPerspectiveDsl.g:12385:2: ()
+            // InternalPerspectiveDsl.g:12385:3: 
             {
             }
 
@@ -41029,14 +41194,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1"
-    // InternalPerspectiveDsl.g:12339:1: rule__XMemberFeatureCall__Group_1_0_0_0__1 : rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 ;
+    // InternalPerspectiveDsl.g:12393:1: rule__XMemberFeatureCall__Group_1_0_0_0__1 : rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12343:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
-            // InternalPerspectiveDsl.g:12344:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
+            // InternalPerspectiveDsl.g:12397:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
+            // InternalPerspectiveDsl.g:12398:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
             {
             pushFollow(FOLLOW_67);
             rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl();
@@ -41067,23 +41232,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:12351:1: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:12405:1: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12355:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:12356:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:12409:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:12410:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:12356:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
-            // InternalPerspectiveDsl.g:12357:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalPerspectiveDsl.g:12410:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:12411:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:12358:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
-            // InternalPerspectiveDsl.g:12358:3: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
+            // InternalPerspectiveDsl.g:12412:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalPerspectiveDsl.g:12412:3: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Alternatives_1_0_0_0_1();
@@ -41118,14 +41283,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2"
-    // InternalPerspectiveDsl.g:12366:1: rule__XMemberFeatureCall__Group_1_0_0_0__2 : rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 ;
+    // InternalPerspectiveDsl.g:12420:1: rule__XMemberFeatureCall__Group_1_0_0_0__2 : rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12370:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
-            // InternalPerspectiveDsl.g:12371:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
+            // InternalPerspectiveDsl.g:12424:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
+            // InternalPerspectiveDsl.g:12425:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
             {
             pushFollow(FOLLOW_63);
             rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl();
@@ -41156,23 +41321,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:12378:1: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) ;
+    // InternalPerspectiveDsl.g:12432:1: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12382:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
-            // InternalPerspectiveDsl.g:12383:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalPerspectiveDsl.g:12436:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
+            // InternalPerspectiveDsl.g:12437:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
             {
-            // InternalPerspectiveDsl.g:12383:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
-            // InternalPerspectiveDsl.g:12384:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalPerspectiveDsl.g:12437:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalPerspectiveDsl.g:12438:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); 
             }
-            // InternalPerspectiveDsl.g:12385:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
-            // InternalPerspectiveDsl.g:12385:3: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
+            // InternalPerspectiveDsl.g:12439:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalPerspectiveDsl.g:12439:3: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2();
@@ -41207,14 +41372,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3"
-    // InternalPerspectiveDsl.g:12393:1: rule__XMemberFeatureCall__Group_1_0_0_0__3 : rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl ;
+    // InternalPerspectiveDsl.g:12447:1: rule__XMemberFeatureCall__Group_1_0_0_0__3 : rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12397:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
-            // InternalPerspectiveDsl.g:12398:2: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
+            // InternalPerspectiveDsl.g:12451:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
+            // InternalPerspectiveDsl.g:12452:2: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl();
@@ -41240,17 +41405,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl"
-    // InternalPerspectiveDsl.g:12404:1: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl : ( ruleOpSingleAssign ) ;
+    // InternalPerspectiveDsl.g:12458:1: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl : ( ruleOpSingleAssign ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12408:1: ( ( ruleOpSingleAssign ) )
-            // InternalPerspectiveDsl.g:12409:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:12462:1: ( ( ruleOpSingleAssign ) )
+            // InternalPerspectiveDsl.g:12463:1: ( ruleOpSingleAssign )
             {
-            // InternalPerspectiveDsl.g:12409:1: ( ruleOpSingleAssign )
-            // InternalPerspectiveDsl.g:12410:2: ruleOpSingleAssign
+            // InternalPerspectiveDsl.g:12463:1: ( ruleOpSingleAssign )
+            // InternalPerspectiveDsl.g:12464:2: ruleOpSingleAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
@@ -41285,14 +41450,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0"
-    // InternalPerspectiveDsl.g:12420:1: rule__XMemberFeatureCall__Group_1_1__0 : rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:12474:1: rule__XMemberFeatureCall__Group_1_1__0 : rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12424:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:12425:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
+            // InternalPerspectiveDsl.g:12478:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:12479:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
             {
             pushFollow(FOLLOW_97);
             rule__XMemberFeatureCall__Group_1_1__0__Impl();
@@ -41323,23 +41488,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:12432:1: rule__XMemberFeatureCall__Group_1_1__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:12486:1: rule__XMemberFeatureCall__Group_1_1__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12436:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:12437:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:12490:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12491:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:12437:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
-            // InternalPerspectiveDsl.g:12438:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:12491:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalPerspectiveDsl.g:12492:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:12439:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
-            // InternalPerspectiveDsl.g:12439:3: rule__XMemberFeatureCall__Group_1_1_0__0
+            // InternalPerspectiveDsl.g:12493:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalPerspectiveDsl.g:12493:3: rule__XMemberFeatureCall__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0__0();
@@ -41374,14 +41539,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1"
-    // InternalPerspectiveDsl.g:12447:1: rule__XMemberFeatureCall__Group_1_1__1 : rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 ;
+    // InternalPerspectiveDsl.g:12501:1: rule__XMemberFeatureCall__Group_1_1__1 : rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 ;
     public final void rule__XMemberFeatureCall__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12451:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
-            // InternalPerspectiveDsl.g:12452:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
+            // InternalPerspectiveDsl.g:12505:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
+            // InternalPerspectiveDsl.g:12506:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
             {
             pushFollow(FOLLOW_97);
             rule__XMemberFeatureCall__Group_1_1__1__Impl();
@@ -41412,22 +41577,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:12459:1: rule__XMemberFeatureCall__Group_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:12513:1: rule__XMemberFeatureCall__Group_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12463:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
-            // InternalPerspectiveDsl.g:12464:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalPerspectiveDsl.g:12517:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:12518:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:12464:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
-            // InternalPerspectiveDsl.g:12465:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            // InternalPerspectiveDsl.g:12518:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalPerspectiveDsl.g:12519:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:12466:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            // InternalPerspectiveDsl.g:12520:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
             int alt84=2;
             int LA84_0 = input.LA(1);
 
@@ -41436,7 +41601,7 @@
             }
             switch (alt84) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12466:3: rule__XMemberFeatureCall__Group_1_1_1__0
+                    // InternalPerspectiveDsl.g:12520:3: rule__XMemberFeatureCall__Group_1_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_1__0();
@@ -41474,14 +41639,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2"
-    // InternalPerspectiveDsl.g:12474:1: rule__XMemberFeatureCall__Group_1_1__2 : rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 ;
+    // InternalPerspectiveDsl.g:12528:1: rule__XMemberFeatureCall__Group_1_1__2 : rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 ;
     public final void rule__XMemberFeatureCall__Group_1_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12478:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
-            // InternalPerspectiveDsl.g:12479:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
+            // InternalPerspectiveDsl.g:12532:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
+            // InternalPerspectiveDsl.g:12533:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
             {
             pushFollow(FOLLOW_98);
             rule__XMemberFeatureCall__Group_1_1__2__Impl();
@@ -41512,23 +41677,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2__Impl"
-    // InternalPerspectiveDsl.g:12486:1: rule__XMemberFeatureCall__Group_1_1__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) ;
+    // InternalPerspectiveDsl.g:12540:1: rule__XMemberFeatureCall__Group_1_1__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12490:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
-            // InternalPerspectiveDsl.g:12491:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalPerspectiveDsl.g:12544:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
+            // InternalPerspectiveDsl.g:12545:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
             {
-            // InternalPerspectiveDsl.g:12491:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
-            // InternalPerspectiveDsl.g:12492:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalPerspectiveDsl.g:12545:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalPerspectiveDsl.g:12546:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); 
             }
-            // InternalPerspectiveDsl.g:12493:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
-            // InternalPerspectiveDsl.g:12493:3: rule__XMemberFeatureCall__FeatureAssignment_1_1_2
+            // InternalPerspectiveDsl.g:12547:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalPerspectiveDsl.g:12547:3: rule__XMemberFeatureCall__FeatureAssignment_1_1_2
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__FeatureAssignment_1_1_2();
@@ -41563,14 +41728,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3"
-    // InternalPerspectiveDsl.g:12501:1: rule__XMemberFeatureCall__Group_1_1__3 : rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 ;
+    // InternalPerspectiveDsl.g:12555:1: rule__XMemberFeatureCall__Group_1_1__3 : rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 ;
     public final void rule__XMemberFeatureCall__Group_1_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12505:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
-            // InternalPerspectiveDsl.g:12506:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
+            // InternalPerspectiveDsl.g:12559:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
+            // InternalPerspectiveDsl.g:12560:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
             {
             pushFollow(FOLLOW_98);
             rule__XMemberFeatureCall__Group_1_1__3__Impl();
@@ -41601,27 +41766,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3__Impl"
-    // InternalPerspectiveDsl.g:12513:1: rule__XMemberFeatureCall__Group_1_1__3__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:12567:1: rule__XMemberFeatureCall__Group_1_1__3__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12517:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
-            // InternalPerspectiveDsl.g:12518:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalPerspectiveDsl.g:12571:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
+            // InternalPerspectiveDsl.g:12572:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:12518:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
-            // InternalPerspectiveDsl.g:12519:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            // InternalPerspectiveDsl.g:12572:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalPerspectiveDsl.g:12573:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); 
             }
-            // InternalPerspectiveDsl.g:12520:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            // InternalPerspectiveDsl.g:12574:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
             int alt85=2;
             alt85 = dfa85.predict(input);
             switch (alt85) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12520:3: rule__XMemberFeatureCall__Group_1_1_3__0
+                    // InternalPerspectiveDsl.g:12574:3: rule__XMemberFeatureCall__Group_1_1_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_3__0();
@@ -41659,14 +41824,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4"
-    // InternalPerspectiveDsl.g:12528:1: rule__XMemberFeatureCall__Group_1_1__4 : rule__XMemberFeatureCall__Group_1_1__4__Impl ;
+    // InternalPerspectiveDsl.g:12582:1: rule__XMemberFeatureCall__Group_1_1__4 : rule__XMemberFeatureCall__Group_1_1__4__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12532:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
-            // InternalPerspectiveDsl.g:12533:2: rule__XMemberFeatureCall__Group_1_1__4__Impl
+            // InternalPerspectiveDsl.g:12586:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
+            // InternalPerspectiveDsl.g:12587:2: rule__XMemberFeatureCall__Group_1_1__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1__4__Impl();
@@ -41692,27 +41857,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4__Impl"
-    // InternalPerspectiveDsl.g:12539:1: rule__XMemberFeatureCall__Group_1_1__4__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) ;
+    // InternalPerspectiveDsl.g:12593:1: rule__XMemberFeatureCall__Group_1_1__4__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12543:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
-            // InternalPerspectiveDsl.g:12544:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalPerspectiveDsl.g:12597:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
+            // InternalPerspectiveDsl.g:12598:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
             {
-            // InternalPerspectiveDsl.g:12544:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
-            // InternalPerspectiveDsl.g:12545:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            // InternalPerspectiveDsl.g:12598:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalPerspectiveDsl.g:12599:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); 
             }
-            // InternalPerspectiveDsl.g:12546:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            // InternalPerspectiveDsl.g:12600:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
             int alt86=2;
             alt86 = dfa86.predict(input);
             switch (alt86) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12546:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+                    // InternalPerspectiveDsl.g:12600:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
@@ -41750,14 +41915,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0"
-    // InternalPerspectiveDsl.g:12555:1: rule__XMemberFeatureCall__Group_1_1_0__0 : rule__XMemberFeatureCall__Group_1_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:12609:1: rule__XMemberFeatureCall__Group_1_1_0__0 : rule__XMemberFeatureCall__Group_1_1_0__0__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12559:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:12560:2: rule__XMemberFeatureCall__Group_1_1_0__0__Impl
+            // InternalPerspectiveDsl.g:12613:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:12614:2: rule__XMemberFeatureCall__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0__0__Impl();
@@ -41783,23 +41948,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:12566:1: rule__XMemberFeatureCall__Group_1_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:12620:1: rule__XMemberFeatureCall__Group_1_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12570:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:12571:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:12624:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:12625:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:12571:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:12572:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:12625:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:12626:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12573:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
-            // InternalPerspectiveDsl.g:12573:3: rule__XMemberFeatureCall__Group_1_1_0_0__0
+            // InternalPerspectiveDsl.g:12627:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalPerspectiveDsl.g:12627:3: rule__XMemberFeatureCall__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0_0__0();
@@ -41834,14 +41999,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0"
-    // InternalPerspectiveDsl.g:12582:1: rule__XMemberFeatureCall__Group_1_1_0_0__0 : rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:12636:1: rule__XMemberFeatureCall__Group_1_1_0_0__0 : rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12586:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
-            // InternalPerspectiveDsl.g:12587:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
+            // InternalPerspectiveDsl.g:12640:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
+            // InternalPerspectiveDsl.g:12641:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
             {
             pushFollow(FOLLOW_94);
             rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl();
@@ -41872,23 +42037,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:12594:1: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:12648:1: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl : ( () ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12598:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:12599:1: ( () )
+            // InternalPerspectiveDsl.g:12652:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:12653:1: ( () )
             {
-            // InternalPerspectiveDsl.g:12599:1: ( () )
-            // InternalPerspectiveDsl.g:12600:2: ()
+            // InternalPerspectiveDsl.g:12653:1: ( () )
+            // InternalPerspectiveDsl.g:12654:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:12601:2: ()
-            // InternalPerspectiveDsl.g:12601:3: 
+            // InternalPerspectiveDsl.g:12655:2: ()
+            // InternalPerspectiveDsl.g:12655:3: 
             {
             }
 
@@ -41913,14 +42078,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1"
-    // InternalPerspectiveDsl.g:12609:1: rule__XMemberFeatureCall__Group_1_1_0_0__1 : rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:12663:1: rule__XMemberFeatureCall__Group_1_1_0_0__1 : rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12613:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:12614:2: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:12667:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:12668:2: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl();
@@ -41946,23 +42111,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:12620:1: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:12674:1: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12624:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:12625:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:12678:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:12679:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:12625:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
-            // InternalPerspectiveDsl.g:12626:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:12679:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalPerspectiveDsl.g:12680:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:12627:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
-            // InternalPerspectiveDsl.g:12627:3: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
+            // InternalPerspectiveDsl.g:12681:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalPerspectiveDsl.g:12681:3: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Alternatives_1_1_0_0_1();
@@ -41997,14 +42162,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0"
-    // InternalPerspectiveDsl.g:12636:1: rule__XMemberFeatureCall__Group_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 ;
+    // InternalPerspectiveDsl.g:12690:1: rule__XMemberFeatureCall__Group_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12640:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
-            // InternalPerspectiveDsl.g:12641:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
+            // InternalPerspectiveDsl.g:12694:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
+            // InternalPerspectiveDsl.g:12695:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
             {
             pushFollow(FOLLOW_99);
             rule__XMemberFeatureCall__Group_1_1_1__0__Impl();
@@ -42035,17 +42200,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:12648:1: rule__XMemberFeatureCall__Group_1_1_1__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:12702:1: rule__XMemberFeatureCall__Group_1_1_1__0__Impl : ( '<' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12652:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:12653:1: ( '<' )
+            // InternalPerspectiveDsl.g:12706:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:12707:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:12653:1: ( '<' )
-            // InternalPerspectiveDsl.g:12654:2: '<'
+            // InternalPerspectiveDsl.g:12707:1: ( '<' )
+            // InternalPerspectiveDsl.g:12708:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0()); 
@@ -42076,14 +42241,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1"
-    // InternalPerspectiveDsl.g:12663:1: rule__XMemberFeatureCall__Group_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 ;
+    // InternalPerspectiveDsl.g:12717:1: rule__XMemberFeatureCall__Group_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12667:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
-            // InternalPerspectiveDsl.g:12668:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
+            // InternalPerspectiveDsl.g:12721:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
+            // InternalPerspectiveDsl.g:12722:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
             {
             pushFollow(FOLLOW_100);
             rule__XMemberFeatureCall__Group_1_1_1__1__Impl();
@@ -42114,23 +42279,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:12675:1: rule__XMemberFeatureCall__Group_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:12729:1: rule__XMemberFeatureCall__Group_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12679:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:12680:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:12733:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:12734:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:12680:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:12681:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:12734:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:12735:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:12682:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
-            // InternalPerspectiveDsl.g:12682:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
+            // InternalPerspectiveDsl.g:12736:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalPerspectiveDsl.g:12736:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1();
@@ -42165,14 +42330,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2"
-    // InternalPerspectiveDsl.g:12690:1: rule__XMemberFeatureCall__Group_1_1_1__2 : rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 ;
+    // InternalPerspectiveDsl.g:12744:1: rule__XMemberFeatureCall__Group_1_1_1__2 : rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12694:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
-            // InternalPerspectiveDsl.g:12695:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
+            // InternalPerspectiveDsl.g:12748:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
+            // InternalPerspectiveDsl.g:12749:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
             {
             pushFollow(FOLLOW_100);
             rule__XMemberFeatureCall__Group_1_1_1__2__Impl();
@@ -42203,35 +42368,35 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2__Impl"
-    // InternalPerspectiveDsl.g:12702:1: rule__XMemberFeatureCall__Group_1_1_1__2__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:12756:1: rule__XMemberFeatureCall__Group_1_1_1__2__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12706:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
-            // InternalPerspectiveDsl.g:12707:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalPerspectiveDsl.g:12760:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
+            // InternalPerspectiveDsl.g:12761:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:12707:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
-            // InternalPerspectiveDsl.g:12708:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            // InternalPerspectiveDsl.g:12761:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalPerspectiveDsl.g:12762:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); 
             }
-            // InternalPerspectiveDsl.g:12709:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            // InternalPerspectiveDsl.g:12763:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
             loop87:
             do {
                 int alt87=2;
                 int LA87_0 = input.LA(1);
 
-                if ( (LA87_0==98) ) {
+                if ( (LA87_0==100) ) {
                     alt87=1;
                 }
 
 
                 switch (alt87) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:12709:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
+            	    // InternalPerspectiveDsl.g:12763:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XMemberFeatureCall__Group_1_1_1_2__0();
@@ -42272,14 +42437,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3"
-    // InternalPerspectiveDsl.g:12717:1: rule__XMemberFeatureCall__Group_1_1_1__3 : rule__XMemberFeatureCall__Group_1_1_1__3__Impl ;
+    // InternalPerspectiveDsl.g:12771:1: rule__XMemberFeatureCall__Group_1_1_1__3 : rule__XMemberFeatureCall__Group_1_1_1__3__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12721:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
-            // InternalPerspectiveDsl.g:12722:2: rule__XMemberFeatureCall__Group_1_1_1__3__Impl
+            // InternalPerspectiveDsl.g:12775:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
+            // InternalPerspectiveDsl.g:12776:2: rule__XMemberFeatureCall__Group_1_1_1__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_1__3__Impl();
@@ -42305,17 +42470,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3__Impl"
-    // InternalPerspectiveDsl.g:12728:1: rule__XMemberFeatureCall__Group_1_1_1__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:12782:1: rule__XMemberFeatureCall__Group_1_1_1__3__Impl : ( '>' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12732:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:12733:1: ( '>' )
+            // InternalPerspectiveDsl.g:12786:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:12787:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:12733:1: ( '>' )
-            // InternalPerspectiveDsl.g:12734:2: '>'
+            // InternalPerspectiveDsl.g:12787:1: ( '>' )
+            // InternalPerspectiveDsl.g:12788:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3()); 
@@ -42346,14 +42511,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0"
-    // InternalPerspectiveDsl.g:12744:1: rule__XMemberFeatureCall__Group_1_1_1_2__0 : rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 ;
+    // InternalPerspectiveDsl.g:12798:1: rule__XMemberFeatureCall__Group_1_1_1_2__0 : rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12748:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
-            // InternalPerspectiveDsl.g:12749:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
+            // InternalPerspectiveDsl.g:12802:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
+            // InternalPerspectiveDsl.g:12803:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
             {
             pushFollow(FOLLOW_99);
             rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl();
@@ -42384,22 +42549,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl"
-    // InternalPerspectiveDsl.g:12756:1: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:12810:1: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl : ( ',' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12760:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:12761:1: ( ',' )
+            // InternalPerspectiveDsl.g:12814:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:12815:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:12761:1: ( ',' )
-            // InternalPerspectiveDsl.g:12762:2: ','
+            // InternalPerspectiveDsl.g:12815:1: ( ',' )
+            // InternalPerspectiveDsl.g:12816:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
             }
@@ -42425,14 +42590,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1"
-    // InternalPerspectiveDsl.g:12771:1: rule__XMemberFeatureCall__Group_1_1_1_2__1 : rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl ;
+    // InternalPerspectiveDsl.g:12825:1: rule__XMemberFeatureCall__Group_1_1_1_2__1 : rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12775:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
-            // InternalPerspectiveDsl.g:12776:2: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
+            // InternalPerspectiveDsl.g:12829:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
+            // InternalPerspectiveDsl.g:12830:2: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl();
@@ -42458,23 +42623,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl"
-    // InternalPerspectiveDsl.g:12782:1: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:12836:1: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12786:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
-            // InternalPerspectiveDsl.g:12787:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalPerspectiveDsl.g:12840:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
+            // InternalPerspectiveDsl.g:12841:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:12787:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
-            // InternalPerspectiveDsl.g:12788:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalPerspectiveDsl.g:12841:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalPerspectiveDsl.g:12842:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); 
             }
-            // InternalPerspectiveDsl.g:12789:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
-            // InternalPerspectiveDsl.g:12789:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
+            // InternalPerspectiveDsl.g:12843:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalPerspectiveDsl.g:12843:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1();
@@ -42509,14 +42674,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0"
-    // InternalPerspectiveDsl.g:12798:1: rule__XMemberFeatureCall__Group_1_1_3__0 : rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 ;
+    // InternalPerspectiveDsl.g:12852:1: rule__XMemberFeatureCall__Group_1_1_3__0 : rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12802:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
-            // InternalPerspectiveDsl.g:12803:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
+            // InternalPerspectiveDsl.g:12856:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
+            // InternalPerspectiveDsl.g:12857:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
             {
             pushFollow(FOLLOW_101);
             rule__XMemberFeatureCall__Group_1_1_3__0__Impl();
@@ -42547,23 +42712,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0__Impl"
-    // InternalPerspectiveDsl.g:12810:1: rule__XMemberFeatureCall__Group_1_1_3__0__Impl : ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:12864:1: rule__XMemberFeatureCall__Group_1_1_3__0__Impl : ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12814:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
-            // InternalPerspectiveDsl.g:12815:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalPerspectiveDsl.g:12868:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
+            // InternalPerspectiveDsl.g:12869:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:12815:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
-            // InternalPerspectiveDsl.g:12816:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalPerspectiveDsl.g:12869:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalPerspectiveDsl.g:12870:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); 
             }
-            // InternalPerspectiveDsl.g:12817:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
-            // InternalPerspectiveDsl.g:12817:3: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
+            // InternalPerspectiveDsl.g:12871:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalPerspectiveDsl.g:12871:3: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0();
@@ -42598,14 +42763,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1"
-    // InternalPerspectiveDsl.g:12825:1: rule__XMemberFeatureCall__Group_1_1_3__1 : rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 ;
+    // InternalPerspectiveDsl.g:12879:1: rule__XMemberFeatureCall__Group_1_1_3__1 : rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12829:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
-            // InternalPerspectiveDsl.g:12830:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
+            // InternalPerspectiveDsl.g:12883:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
+            // InternalPerspectiveDsl.g:12884:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
             {
             pushFollow(FOLLOW_101);
             rule__XMemberFeatureCall__Group_1_1_3__1__Impl();
@@ -42636,31 +42801,31 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1__Impl"
-    // InternalPerspectiveDsl.g:12837:1: rule__XMemberFeatureCall__Group_1_1_3__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) ;
+    // InternalPerspectiveDsl.g:12891:1: rule__XMemberFeatureCall__Group_1_1_3__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12841:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
-            // InternalPerspectiveDsl.g:12842:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalPerspectiveDsl.g:12895:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
+            // InternalPerspectiveDsl.g:12896:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
             {
-            // InternalPerspectiveDsl.g:12842:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
-            // InternalPerspectiveDsl.g:12843:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            // InternalPerspectiveDsl.g:12896:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalPerspectiveDsl.g:12897:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); 
             }
-            // InternalPerspectiveDsl.g:12844:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            // InternalPerspectiveDsl.g:12898:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
             int alt88=2;
             int LA88_0 = input.LA(1);
 
-            if ( ((LA88_0>=RULE_ID && LA88_0<=RULE_DECIMAL)||LA88_0==27||LA88_0==31||(LA88_0>=34 && LA88_0<=35)||LA88_0==40||(LA88_0>=45 && LA88_0<=50)||LA88_0==54||LA88_0==96||(LA88_0>=100 && LA88_0<=101)||LA88_0==104||LA88_0==106||(LA88_0>=110 && LA88_0<=118)||LA88_0==120||LA88_0==129||LA88_0==131) ) {
+            if ( ((LA88_0>=RULE_ID && LA88_0<=RULE_DECIMAL)||LA88_0==27||LA88_0==31||(LA88_0>=34 && LA88_0<=35)||LA88_0==40||(LA88_0>=45 && LA88_0<=50)||LA88_0==54||LA88_0==98||(LA88_0>=102 && LA88_0<=103)||LA88_0==106||LA88_0==108||(LA88_0>=112 && LA88_0<=120)||LA88_0==122||LA88_0==131||LA88_0==133) ) {
                 alt88=1;
             }
             switch (alt88) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:12844:3: rule__XMemberFeatureCall__Alternatives_1_1_3_1
+                    // InternalPerspectiveDsl.g:12898:3: rule__XMemberFeatureCall__Alternatives_1_1_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Alternatives_1_1_3_1();
@@ -42698,14 +42863,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2"
-    // InternalPerspectiveDsl.g:12852:1: rule__XMemberFeatureCall__Group_1_1_3__2 : rule__XMemberFeatureCall__Group_1_1_3__2__Impl ;
+    // InternalPerspectiveDsl.g:12906:1: rule__XMemberFeatureCall__Group_1_1_3__2 : rule__XMemberFeatureCall__Group_1_1_3__2__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12856:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
-            // InternalPerspectiveDsl.g:12857:2: rule__XMemberFeatureCall__Group_1_1_3__2__Impl
+            // InternalPerspectiveDsl.g:12910:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
+            // InternalPerspectiveDsl.g:12911:2: rule__XMemberFeatureCall__Group_1_1_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3__2__Impl();
@@ -42731,22 +42896,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2__Impl"
-    // InternalPerspectiveDsl.g:12863:1: rule__XMemberFeatureCall__Group_1_1_3__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:12917:1: rule__XMemberFeatureCall__Group_1_1_3__2__Impl : ( ')' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12867:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:12868:1: ( ')' )
+            // InternalPerspectiveDsl.g:12921:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:12922:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:12868:1: ( ')' )
-            // InternalPerspectiveDsl.g:12869:2: ')'
+            // InternalPerspectiveDsl.g:12922:1: ( ')' )
+            // InternalPerspectiveDsl.g:12923:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
             }
@@ -42772,14 +42937,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0"
-    // InternalPerspectiveDsl.g:12879:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 ;
+    // InternalPerspectiveDsl.g:12933:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12883:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
-            // InternalPerspectiveDsl.g:12884:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+            // InternalPerspectiveDsl.g:12937:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
+            // InternalPerspectiveDsl.g:12938:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
             {
             pushFollow(FOLLOW_60);
             rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl();
@@ -42810,23 +42975,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:12891:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:12945:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12895:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
-            // InternalPerspectiveDsl.g:12896:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:12949:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
+            // InternalPerspectiveDsl.g:12950:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:12896:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
-            // InternalPerspectiveDsl.g:12897:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalPerspectiveDsl.g:12950:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:12951:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:12898:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
-            // InternalPerspectiveDsl.g:12898:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
+            // InternalPerspectiveDsl.g:12952:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalPerspectiveDsl.g:12952:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0();
@@ -42861,14 +43026,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1"
-    // InternalPerspectiveDsl.g:12906:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:12960:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12910:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:12911:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
+            // InternalPerspectiveDsl.g:12964:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:12965:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl();
@@ -42894,35 +43059,35 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:12917:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:12971:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12921:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:12922:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:12975:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:12976:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:12922:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
-            // InternalPerspectiveDsl.g:12923:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:12976:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:12977:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:12924:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:12978:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
             loop89:
             do {
                 int alt89=2;
                 int LA89_0 = input.LA(1);
 
-                if ( (LA89_0==98) ) {
+                if ( (LA89_0==100) ) {
                     alt89=1;
                 }
 
 
                 switch (alt89) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:12924:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
+            	    // InternalPerspectiveDsl.g:12978:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0();
@@ -42963,14 +43128,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0"
-    // InternalPerspectiveDsl.g:12933:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 ;
+    // InternalPerspectiveDsl.g:12987:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12937:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
-            // InternalPerspectiveDsl.g:12938:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+            // InternalPerspectiveDsl.g:12991:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
+            // InternalPerspectiveDsl.g:12992:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl();
@@ -43001,22 +43166,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:12945:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:12999:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12949:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:12950:1: ( ',' )
+            // InternalPerspectiveDsl.g:13003:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:13004:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:12950:1: ( ',' )
-            // InternalPerspectiveDsl.g:12951:2: ','
+            // InternalPerspectiveDsl.g:13004:1: ( ',' )
+            // InternalPerspectiveDsl.g:13005:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
             }
@@ -43042,14 +43207,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1"
-    // InternalPerspectiveDsl.g:12960:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:13014:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12964:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:12965:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
+            // InternalPerspectiveDsl.g:13018:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:13019:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl();
@@ -43075,23 +43240,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:12971:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:13025:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12975:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:12976:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:13029:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:13030:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:12976:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:12977:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:13030:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:13031:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:12978:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
-            // InternalPerspectiveDsl.g:12978:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
+            // InternalPerspectiveDsl.g:13032:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:13032:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1();
@@ -43126,14 +43291,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__0"
-    // InternalPerspectiveDsl.g:12987:1: rule__XSetLiteral__Group__0 : rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:13041:1: rule__XSetLiteral__Group__0 : rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 ;
     public final void rule__XSetLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:12991:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:12992:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
+            // InternalPerspectiveDsl.g:13045:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:13046:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
             {
             pushFollow(FOLLOW_65);
             rule__XSetLiteral__Group__0__Impl();
@@ -43164,23 +43329,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:12999:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:13053:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XSetLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13003:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:13004:1: ( () )
+            // InternalPerspectiveDsl.g:13057:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13058:1: ( () )
             {
-            // InternalPerspectiveDsl.g:13004:1: ( () )
-            // InternalPerspectiveDsl.g:13005:2: ()
+            // InternalPerspectiveDsl.g:13058:1: ( () )
+            // InternalPerspectiveDsl.g:13059:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:13006:2: ()
-            // InternalPerspectiveDsl.g:13006:3: 
+            // InternalPerspectiveDsl.g:13060:2: ()
+            // InternalPerspectiveDsl.g:13060:3: 
             {
             }
 
@@ -43205,14 +43370,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__1"
-    // InternalPerspectiveDsl.g:13014:1: rule__XSetLiteral__Group__1 : rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 ;
+    // InternalPerspectiveDsl.g:13068:1: rule__XSetLiteral__Group__1 : rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 ;
     public final void rule__XSetLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13018:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
-            // InternalPerspectiveDsl.g:13019:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
+            // InternalPerspectiveDsl.g:13072:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
+            // InternalPerspectiveDsl.g:13073:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
             {
             pushFollow(FOLLOW_8);
             rule__XSetLiteral__Group__1__Impl();
@@ -43243,22 +43408,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13026:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
+    // InternalPerspectiveDsl.g:13080:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
     public final void rule__XSetLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13030:1: ( ( '#' ) )
-            // InternalPerspectiveDsl.g:13031:1: ( '#' )
+            // InternalPerspectiveDsl.g:13084:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:13085:1: ( '#' )
             {
-            // InternalPerspectiveDsl.g:13031:1: ( '#' )
-            // InternalPerspectiveDsl.g:13032:2: '#'
+            // InternalPerspectiveDsl.g:13085:1: ( '#' )
+            // InternalPerspectiveDsl.g:13086:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
             }
-            match(input,100,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
             }
@@ -43284,14 +43449,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__2"
-    // InternalPerspectiveDsl.g:13041:1: rule__XSetLiteral__Group__2 : rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 ;
+    // InternalPerspectiveDsl.g:13095:1: rule__XSetLiteral__Group__2 : rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 ;
     public final void rule__XSetLiteral__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13045:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
-            // InternalPerspectiveDsl.g:13046:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
+            // InternalPerspectiveDsl.g:13099:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
+            // InternalPerspectiveDsl.g:13100:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
             {
             pushFollow(FOLLOW_102);
             rule__XSetLiteral__Group__2__Impl();
@@ -43322,17 +43487,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__2__Impl"
-    // InternalPerspectiveDsl.g:13053:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:13107:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
     public final void rule__XSetLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13057:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:13058:1: ( '{' )
+            // InternalPerspectiveDsl.g:13111:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:13112:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:13058:1: ( '{' )
-            // InternalPerspectiveDsl.g:13059:2: '{'
+            // InternalPerspectiveDsl.g:13112:1: ( '{' )
+            // InternalPerspectiveDsl.g:13113:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
@@ -43363,14 +43528,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__3"
-    // InternalPerspectiveDsl.g:13068:1: rule__XSetLiteral__Group__3 : rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 ;
+    // InternalPerspectiveDsl.g:13122:1: rule__XSetLiteral__Group__3 : rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 ;
     public final void rule__XSetLiteral__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13072:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
-            // InternalPerspectiveDsl.g:13073:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
+            // InternalPerspectiveDsl.g:13126:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
+            // InternalPerspectiveDsl.g:13127:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
             {
             pushFollow(FOLLOW_102);
             rule__XSetLiteral__Group__3__Impl();
@@ -43401,31 +43566,31 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__3__Impl"
-    // InternalPerspectiveDsl.g:13080:1: rule__XSetLiteral__Group__3__Impl : ( ( rule__XSetLiteral__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:13134:1: rule__XSetLiteral__Group__3__Impl : ( ( rule__XSetLiteral__Group_3__0 )? ) ;
     public final void rule__XSetLiteral__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13084:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:13085:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:13138:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:13139:1: ( ( rule__XSetLiteral__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:13085:1: ( ( rule__XSetLiteral__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:13086:2: ( rule__XSetLiteral__Group_3__0 )?
+            // InternalPerspectiveDsl.g:13139:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:13140:2: ( rule__XSetLiteral__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:13087:2: ( rule__XSetLiteral__Group_3__0 )?
+            // InternalPerspectiveDsl.g:13141:2: ( rule__XSetLiteral__Group_3__0 )?
             int alt90=2;
             int LA90_0 = input.LA(1);
 
-            if ( ((LA90_0>=RULE_ID && LA90_0<=RULE_DECIMAL)||LA90_0==27||(LA90_0>=34 && LA90_0<=35)||LA90_0==40||(LA90_0>=45 && LA90_0<=50)||LA90_0==54||LA90_0==96||(LA90_0>=100 && LA90_0<=101)||LA90_0==104||LA90_0==106||(LA90_0>=110 && LA90_0<=118)||LA90_0==120||LA90_0==131) ) {
+            if ( ((LA90_0>=RULE_ID && LA90_0<=RULE_DECIMAL)||LA90_0==27||(LA90_0>=34 && LA90_0<=35)||LA90_0==40||(LA90_0>=45 && LA90_0<=50)||LA90_0==54||LA90_0==98||(LA90_0>=102 && LA90_0<=103)||LA90_0==106||LA90_0==108||(LA90_0>=112 && LA90_0<=120)||LA90_0==122||LA90_0==133) ) {
                 alt90=1;
             }
             switch (alt90) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:13087:3: rule__XSetLiteral__Group_3__0
+                    // InternalPerspectiveDsl.g:13141:3: rule__XSetLiteral__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSetLiteral__Group_3__0();
@@ -43463,14 +43628,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__4"
-    // InternalPerspectiveDsl.g:13095:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:13149:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
     public final void rule__XSetLiteral__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13099:1: ( rule__XSetLiteral__Group__4__Impl )
-            // InternalPerspectiveDsl.g:13100:2: rule__XSetLiteral__Group__4__Impl
+            // InternalPerspectiveDsl.g:13153:1: ( rule__XSetLiteral__Group__4__Impl )
+            // InternalPerspectiveDsl.g:13154:2: rule__XSetLiteral__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group__4__Impl();
@@ -43496,17 +43661,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__4__Impl"
-    // InternalPerspectiveDsl.g:13106:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:13160:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
     public final void rule__XSetLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13110:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:13111:1: ( '}' )
+            // InternalPerspectiveDsl.g:13164:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:13165:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:13111:1: ( '}' )
-            // InternalPerspectiveDsl.g:13112:2: '}'
+            // InternalPerspectiveDsl.g:13165:1: ( '}' )
+            // InternalPerspectiveDsl.g:13166:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
@@ -43537,14 +43702,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__0"
-    // InternalPerspectiveDsl.g:13122:1: rule__XSetLiteral__Group_3__0 : rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 ;
+    // InternalPerspectiveDsl.g:13176:1: rule__XSetLiteral__Group_3__0 : rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 ;
     public final void rule__XSetLiteral__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13126:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
-            // InternalPerspectiveDsl.g:13127:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
+            // InternalPerspectiveDsl.g:13180:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
+            // InternalPerspectiveDsl.g:13181:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
             {
             pushFollow(FOLLOW_60);
             rule__XSetLiteral__Group_3__0__Impl();
@@ -43575,23 +43740,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:13134:1: rule__XSetLiteral__Group_3__0__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:13188:1: rule__XSetLiteral__Group_3__0__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) ;
     public final void rule__XSetLiteral__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13138:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
-            // InternalPerspectiveDsl.g:13139:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:13192:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:13193:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:13139:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
-            // InternalPerspectiveDsl.g:13140:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:13193:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:13194:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); 
             }
-            // InternalPerspectiveDsl.g:13141:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
-            // InternalPerspectiveDsl.g:13141:3: rule__XSetLiteral__ElementsAssignment_3_0
+            // InternalPerspectiveDsl.g:13195:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:13195:3: rule__XSetLiteral__ElementsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__ElementsAssignment_3_0();
@@ -43626,14 +43791,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__1"
-    // InternalPerspectiveDsl.g:13149:1: rule__XSetLiteral__Group_3__1 : rule__XSetLiteral__Group_3__1__Impl ;
+    // InternalPerspectiveDsl.g:13203:1: rule__XSetLiteral__Group_3__1 : rule__XSetLiteral__Group_3__1__Impl ;
     public final void rule__XSetLiteral__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13153:1: ( rule__XSetLiteral__Group_3__1__Impl )
-            // InternalPerspectiveDsl.g:13154:2: rule__XSetLiteral__Group_3__1__Impl
+            // InternalPerspectiveDsl.g:13207:1: ( rule__XSetLiteral__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:13208:2: rule__XSetLiteral__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group_3__1__Impl();
@@ -43659,35 +43824,35 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:13160:1: rule__XSetLiteral__Group_3__1__Impl : ( ( rule__XSetLiteral__Group_3_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:13214:1: rule__XSetLiteral__Group_3__1__Impl : ( ( rule__XSetLiteral__Group_3_1__0 )* ) ;
     public final void rule__XSetLiteral__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13164:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
-            // InternalPerspectiveDsl.g:13165:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:13218:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13219:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:13165:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
-            // InternalPerspectiveDsl.g:13166:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:13219:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:13220:2: ( rule__XSetLiteral__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); 
             }
-            // InternalPerspectiveDsl.g:13167:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:13221:2: ( rule__XSetLiteral__Group_3_1__0 )*
             loop91:
             do {
                 int alt91=2;
                 int LA91_0 = input.LA(1);
 
-                if ( (LA91_0==98) ) {
+                if ( (LA91_0==100) ) {
                     alt91=1;
                 }
 
 
                 switch (alt91) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:13167:3: rule__XSetLiteral__Group_3_1__0
+            	    // InternalPerspectiveDsl.g:13221:3: rule__XSetLiteral__Group_3_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XSetLiteral__Group_3_1__0();
@@ -43728,14 +43893,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__0"
-    // InternalPerspectiveDsl.g:13176:1: rule__XSetLiteral__Group_3_1__0 : rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:13230:1: rule__XSetLiteral__Group_3_1__0 : rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 ;
     public final void rule__XSetLiteral__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13180:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:13181:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
+            // InternalPerspectiveDsl.g:13234:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:13235:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XSetLiteral__Group_3_1__0__Impl();
@@ -43766,22 +43931,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:13188:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:13242:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
     public final void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13192:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:13193:1: ( ',' )
+            // InternalPerspectiveDsl.g:13246:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:13247:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:13193:1: ( ',' )
-            // InternalPerspectiveDsl.g:13194:2: ','
+            // InternalPerspectiveDsl.g:13247:1: ( ',' )
+            // InternalPerspectiveDsl.g:13248:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
             }
@@ -43807,14 +43972,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__1"
-    // InternalPerspectiveDsl.g:13203:1: rule__XSetLiteral__Group_3_1__1 : rule__XSetLiteral__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:13257:1: rule__XSetLiteral__Group_3_1__1 : rule__XSetLiteral__Group_3_1__1__Impl ;
     public final void rule__XSetLiteral__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13207:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:13208:2: rule__XSetLiteral__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:13261:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:13262:2: rule__XSetLiteral__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group_3_1__1__Impl();
@@ -43840,23 +44005,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:13214:1: rule__XSetLiteral__Group_3_1__1__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:13268:1: rule__XSetLiteral__Group_3_1__1__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) ;
     public final void rule__XSetLiteral__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13218:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:13219:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:13272:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:13273:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:13219:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:13220:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:13273:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:13274:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:13221:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:13221:3: rule__XSetLiteral__ElementsAssignment_3_1_1
+            // InternalPerspectiveDsl.g:13275:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:13275:3: rule__XSetLiteral__ElementsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__ElementsAssignment_3_1_1();
@@ -43891,14 +44056,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__0"
-    // InternalPerspectiveDsl.g:13230:1: rule__XListLiteral__Group__0 : rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:13284:1: rule__XListLiteral__Group__0 : rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 ;
     public final void rule__XListLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13234:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:13235:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
+            // InternalPerspectiveDsl.g:13288:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:13289:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
             {
             pushFollow(FOLLOW_65);
             rule__XListLiteral__Group__0__Impl();
@@ -43929,23 +44094,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:13242:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:13296:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XListLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13246:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:13247:1: ( () )
+            // InternalPerspectiveDsl.g:13300:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13301:1: ( () )
             {
-            // InternalPerspectiveDsl.g:13247:1: ( () )
-            // InternalPerspectiveDsl.g:13248:2: ()
+            // InternalPerspectiveDsl.g:13301:1: ( () )
+            // InternalPerspectiveDsl.g:13302:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:13249:2: ()
-            // InternalPerspectiveDsl.g:13249:3: 
+            // InternalPerspectiveDsl.g:13303:2: ()
+            // InternalPerspectiveDsl.g:13303:3: 
             {
             }
 
@@ -43970,14 +44135,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__1"
-    // InternalPerspectiveDsl.g:13257:1: rule__XListLiteral__Group__1 : rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 ;
+    // InternalPerspectiveDsl.g:13311:1: rule__XListLiteral__Group__1 : rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 ;
     public final void rule__XListLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13261:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
-            // InternalPerspectiveDsl.g:13262:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
+            // InternalPerspectiveDsl.g:13315:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
+            // InternalPerspectiveDsl.g:13316:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
             {
             pushFollow(FOLLOW_66);
             rule__XListLiteral__Group__1__Impl();
@@ -44008,22 +44173,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13269:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
+    // InternalPerspectiveDsl.g:13323:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
     public final void rule__XListLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13273:1: ( ( '#' ) )
-            // InternalPerspectiveDsl.g:13274:1: ( '#' )
+            // InternalPerspectiveDsl.g:13327:1: ( ( '#' ) )
+            // InternalPerspectiveDsl.g:13328:1: ( '#' )
             {
-            // InternalPerspectiveDsl.g:13274:1: ( '#' )
-            // InternalPerspectiveDsl.g:13275:2: '#'
+            // InternalPerspectiveDsl.g:13328:1: ( '#' )
+            // InternalPerspectiveDsl.g:13329:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
             }
-            match(input,100,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
             }
@@ -44049,14 +44214,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__2"
-    // InternalPerspectiveDsl.g:13284:1: rule__XListLiteral__Group__2 : rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 ;
+    // InternalPerspectiveDsl.g:13338:1: rule__XListLiteral__Group__2 : rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 ;
     public final void rule__XListLiteral__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13288:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
-            // InternalPerspectiveDsl.g:13289:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
+            // InternalPerspectiveDsl.g:13342:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
+            // InternalPerspectiveDsl.g:13343:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
             {
             pushFollow(FOLLOW_64);
             rule__XListLiteral__Group__2__Impl();
@@ -44087,22 +44252,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__2__Impl"
-    // InternalPerspectiveDsl.g:13296:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:13350:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
     public final void rule__XListLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13300:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:13301:1: ( '[' )
+            // InternalPerspectiveDsl.g:13354:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:13355:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:13301:1: ( '[' )
-            // InternalPerspectiveDsl.g:13302:2: '['
+            // InternalPerspectiveDsl.g:13355:1: ( '[' )
+            // InternalPerspectiveDsl.g:13356:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
             }
-            match(input,101,FOLLOW_2); if (state.failed) return ;
+            match(input,103,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
             }
@@ -44128,14 +44293,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__3"
-    // InternalPerspectiveDsl.g:13311:1: rule__XListLiteral__Group__3 : rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 ;
+    // InternalPerspectiveDsl.g:13365:1: rule__XListLiteral__Group__3 : rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 ;
     public final void rule__XListLiteral__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13315:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
-            // InternalPerspectiveDsl.g:13316:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
+            // InternalPerspectiveDsl.g:13369:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
+            // InternalPerspectiveDsl.g:13370:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
             {
             pushFollow(FOLLOW_64);
             rule__XListLiteral__Group__3__Impl();
@@ -44166,31 +44331,31 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__3__Impl"
-    // InternalPerspectiveDsl.g:13323:1: rule__XListLiteral__Group__3__Impl : ( ( rule__XListLiteral__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:13377:1: rule__XListLiteral__Group__3__Impl : ( ( rule__XListLiteral__Group_3__0 )? ) ;
     public final void rule__XListLiteral__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13327:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:13328:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:13381:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:13382:1: ( ( rule__XListLiteral__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:13328:1: ( ( rule__XListLiteral__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:13329:2: ( rule__XListLiteral__Group_3__0 )?
+            // InternalPerspectiveDsl.g:13382:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:13383:2: ( rule__XListLiteral__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:13330:2: ( rule__XListLiteral__Group_3__0 )?
+            // InternalPerspectiveDsl.g:13384:2: ( rule__XListLiteral__Group_3__0 )?
             int alt92=2;
             int LA92_0 = input.LA(1);
 
-            if ( ((LA92_0>=RULE_ID && LA92_0<=RULE_DECIMAL)||LA92_0==27||(LA92_0>=34 && LA92_0<=35)||LA92_0==40||(LA92_0>=45 && LA92_0<=50)||LA92_0==54||LA92_0==96||(LA92_0>=100 && LA92_0<=101)||LA92_0==104||LA92_0==106||(LA92_0>=110 && LA92_0<=118)||LA92_0==120||LA92_0==131) ) {
+            if ( ((LA92_0>=RULE_ID && LA92_0<=RULE_DECIMAL)||LA92_0==27||(LA92_0>=34 && LA92_0<=35)||LA92_0==40||(LA92_0>=45 && LA92_0<=50)||LA92_0==54||LA92_0==98||(LA92_0>=102 && LA92_0<=103)||LA92_0==106||LA92_0==108||(LA92_0>=112 && LA92_0<=120)||LA92_0==122||LA92_0==133) ) {
                 alt92=1;
             }
             switch (alt92) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:13330:3: rule__XListLiteral__Group_3__0
+                    // InternalPerspectiveDsl.g:13384:3: rule__XListLiteral__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XListLiteral__Group_3__0();
@@ -44228,14 +44393,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__4"
-    // InternalPerspectiveDsl.g:13338:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:13392:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
     public final void rule__XListLiteral__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13342:1: ( rule__XListLiteral__Group__4__Impl )
-            // InternalPerspectiveDsl.g:13343:2: rule__XListLiteral__Group__4__Impl
+            // InternalPerspectiveDsl.g:13396:1: ( rule__XListLiteral__Group__4__Impl )
+            // InternalPerspectiveDsl.g:13397:2: rule__XListLiteral__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group__4__Impl();
@@ -44261,22 +44426,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__4__Impl"
-    // InternalPerspectiveDsl.g:13349:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:13403:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
     public final void rule__XListLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13353:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:13354:1: ( ']' )
+            // InternalPerspectiveDsl.g:13407:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:13408:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:13354:1: ( ']' )
-            // InternalPerspectiveDsl.g:13355:2: ']'
+            // InternalPerspectiveDsl.g:13408:1: ( ']' )
+            // InternalPerspectiveDsl.g:13409:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
             }
-            match(input,99,FOLLOW_2); if (state.failed) return ;
+            match(input,101,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
             }
@@ -44302,14 +44467,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__0"
-    // InternalPerspectiveDsl.g:13365:1: rule__XListLiteral__Group_3__0 : rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 ;
+    // InternalPerspectiveDsl.g:13419:1: rule__XListLiteral__Group_3__0 : rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 ;
     public final void rule__XListLiteral__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13369:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
-            // InternalPerspectiveDsl.g:13370:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
+            // InternalPerspectiveDsl.g:13423:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
+            // InternalPerspectiveDsl.g:13424:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
             {
             pushFollow(FOLLOW_60);
             rule__XListLiteral__Group_3__0__Impl();
@@ -44340,23 +44505,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:13377:1: rule__XListLiteral__Group_3__0__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:13431:1: rule__XListLiteral__Group_3__0__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) ;
     public final void rule__XListLiteral__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13381:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
-            // InternalPerspectiveDsl.g:13382:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:13435:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:13436:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:13382:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
-            // InternalPerspectiveDsl.g:13383:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:13436:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:13437:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); 
             }
-            // InternalPerspectiveDsl.g:13384:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
-            // InternalPerspectiveDsl.g:13384:3: rule__XListLiteral__ElementsAssignment_3_0
+            // InternalPerspectiveDsl.g:13438:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:13438:3: rule__XListLiteral__ElementsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__ElementsAssignment_3_0();
@@ -44391,14 +44556,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__1"
-    // InternalPerspectiveDsl.g:13392:1: rule__XListLiteral__Group_3__1 : rule__XListLiteral__Group_3__1__Impl ;
+    // InternalPerspectiveDsl.g:13446:1: rule__XListLiteral__Group_3__1 : rule__XListLiteral__Group_3__1__Impl ;
     public final void rule__XListLiteral__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13396:1: ( rule__XListLiteral__Group_3__1__Impl )
-            // InternalPerspectiveDsl.g:13397:2: rule__XListLiteral__Group_3__1__Impl
+            // InternalPerspectiveDsl.g:13450:1: ( rule__XListLiteral__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:13451:2: rule__XListLiteral__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group_3__1__Impl();
@@ -44424,35 +44589,35 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:13403:1: rule__XListLiteral__Group_3__1__Impl : ( ( rule__XListLiteral__Group_3_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:13457:1: rule__XListLiteral__Group_3__1__Impl : ( ( rule__XListLiteral__Group_3_1__0 )* ) ;
     public final void rule__XListLiteral__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13407:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
-            // InternalPerspectiveDsl.g:13408:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:13461:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13462:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:13408:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
-            // InternalPerspectiveDsl.g:13409:2: ( rule__XListLiteral__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:13462:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:13463:2: ( rule__XListLiteral__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup_3_1()); 
             }
-            // InternalPerspectiveDsl.g:13410:2: ( rule__XListLiteral__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:13464:2: ( rule__XListLiteral__Group_3_1__0 )*
             loop93:
             do {
                 int alt93=2;
                 int LA93_0 = input.LA(1);
 
-                if ( (LA93_0==98) ) {
+                if ( (LA93_0==100) ) {
                     alt93=1;
                 }
 
 
                 switch (alt93) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:13410:3: rule__XListLiteral__Group_3_1__0
+            	    // InternalPerspectiveDsl.g:13464:3: rule__XListLiteral__Group_3_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XListLiteral__Group_3_1__0();
@@ -44493,14 +44658,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__0"
-    // InternalPerspectiveDsl.g:13419:1: rule__XListLiteral__Group_3_1__0 : rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:13473:1: rule__XListLiteral__Group_3_1__0 : rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 ;
     public final void rule__XListLiteral__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13423:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:13424:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
+            // InternalPerspectiveDsl.g:13477:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:13478:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XListLiteral__Group_3_1__0__Impl();
@@ -44531,22 +44696,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:13431:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:13485:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
     public final void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13435:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:13436:1: ( ',' )
+            // InternalPerspectiveDsl.g:13489:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:13490:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:13436:1: ( ',' )
-            // InternalPerspectiveDsl.g:13437:2: ','
+            // InternalPerspectiveDsl.g:13490:1: ( ',' )
+            // InternalPerspectiveDsl.g:13491:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
             }
@@ -44572,14 +44737,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__1"
-    // InternalPerspectiveDsl.g:13446:1: rule__XListLiteral__Group_3_1__1 : rule__XListLiteral__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:13500:1: rule__XListLiteral__Group_3_1__1 : rule__XListLiteral__Group_3_1__1__Impl ;
     public final void rule__XListLiteral__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13450:1: ( rule__XListLiteral__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:13451:2: rule__XListLiteral__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:13504:1: ( rule__XListLiteral__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:13505:2: rule__XListLiteral__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group_3_1__1__Impl();
@@ -44605,23 +44770,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:13457:1: rule__XListLiteral__Group_3_1__1__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:13511:1: rule__XListLiteral__Group_3_1__1__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) ;
     public final void rule__XListLiteral__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13461:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:13462:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:13515:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:13516:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:13462:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:13463:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:13516:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:13517:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:13464:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:13464:3: rule__XListLiteral__ElementsAssignment_3_1_1
+            // InternalPerspectiveDsl.g:13518:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:13518:3: rule__XListLiteral__ElementsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__ElementsAssignment_3_1_1();
@@ -44656,14 +44821,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__0"
-    // InternalPerspectiveDsl.g:13473:1: rule__XClosure__Group__0 : rule__XClosure__Group__0__Impl rule__XClosure__Group__1 ;
+    // InternalPerspectiveDsl.g:13527:1: rule__XClosure__Group__0 : rule__XClosure__Group__0__Impl rule__XClosure__Group__1 ;
     public final void rule__XClosure__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13477:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
-            // InternalPerspectiveDsl.g:13478:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
+            // InternalPerspectiveDsl.g:13531:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
+            // InternalPerspectiveDsl.g:13532:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
             {
             pushFollow(FOLLOW_103);
             rule__XClosure__Group__0__Impl();
@@ -44694,23 +44859,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group__0__Impl"
-    // InternalPerspectiveDsl.g:13485:1: rule__XClosure__Group__0__Impl : ( ( rule__XClosure__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:13539:1: rule__XClosure__Group__0__Impl : ( ( rule__XClosure__Group_0__0 ) ) ;
     public final void rule__XClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13489:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:13490:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:13543:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:13544:1: ( ( rule__XClosure__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:13490:1: ( ( rule__XClosure__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:13491:2: ( rule__XClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:13544:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:13545:2: ( rule__XClosure__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:13492:2: ( rule__XClosure__Group_0__0 )
-            // InternalPerspectiveDsl.g:13492:3: rule__XClosure__Group_0__0
+            // InternalPerspectiveDsl.g:13546:2: ( rule__XClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:13546:3: rule__XClosure__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0__0();
@@ -44745,14 +44910,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__1"
-    // InternalPerspectiveDsl.g:13500:1: rule__XClosure__Group__1 : rule__XClosure__Group__1__Impl rule__XClosure__Group__2 ;
+    // InternalPerspectiveDsl.g:13554:1: rule__XClosure__Group__1 : rule__XClosure__Group__1__Impl rule__XClosure__Group__2 ;
     public final void rule__XClosure__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13504:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
-            // InternalPerspectiveDsl.g:13505:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
+            // InternalPerspectiveDsl.g:13558:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
+            // InternalPerspectiveDsl.g:13559:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
             {
             pushFollow(FOLLOW_103);
             rule__XClosure__Group__1__Impl();
@@ -44783,27 +44948,27 @@
 
 
     // $ANTLR start "rule__XClosure__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13512:1: rule__XClosure__Group__1__Impl : ( ( rule__XClosure__Group_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:13566:1: rule__XClosure__Group__1__Impl : ( ( rule__XClosure__Group_1__0 )? ) ;
     public final void rule__XClosure__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13516:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
-            // InternalPerspectiveDsl.g:13517:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:13570:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:13571:1: ( ( rule__XClosure__Group_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:13517:1: ( ( rule__XClosure__Group_1__0 )? )
-            // InternalPerspectiveDsl.g:13518:2: ( rule__XClosure__Group_1__0 )?
+            // InternalPerspectiveDsl.g:13571:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:13572:2: ( rule__XClosure__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:13519:2: ( rule__XClosure__Group_1__0 )?
+            // InternalPerspectiveDsl.g:13573:2: ( rule__XClosure__Group_1__0 )?
             int alt94=2;
             alt94 = dfa94.predict(input);
             switch (alt94) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:13519:3: rule__XClosure__Group_1__0
+                    // InternalPerspectiveDsl.g:13573:3: rule__XClosure__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XClosure__Group_1__0();
@@ -44841,14 +45006,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__2"
-    // InternalPerspectiveDsl.g:13527:1: rule__XClosure__Group__2 : rule__XClosure__Group__2__Impl rule__XClosure__Group__3 ;
+    // InternalPerspectiveDsl.g:13581:1: rule__XClosure__Group__2 : rule__XClosure__Group__2__Impl rule__XClosure__Group__3 ;
     public final void rule__XClosure__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13531:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
-            // InternalPerspectiveDsl.g:13532:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
+            // InternalPerspectiveDsl.g:13585:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
+            // InternalPerspectiveDsl.g:13586:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
             {
             pushFollow(FOLLOW_104);
             rule__XClosure__Group__2__Impl();
@@ -44879,23 +45044,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group__2__Impl"
-    // InternalPerspectiveDsl.g:13539:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:13593:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
     public final void rule__XClosure__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13543:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:13544:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:13597:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:13598:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:13544:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
-            // InternalPerspectiveDsl.g:13545:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:13598:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:13599:2: ( rule__XClosure__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:13546:2: ( rule__XClosure__ExpressionAssignment_2 )
-            // InternalPerspectiveDsl.g:13546:3: rule__XClosure__ExpressionAssignment_2
+            // InternalPerspectiveDsl.g:13600:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:13600:3: rule__XClosure__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__ExpressionAssignment_2();
@@ -44930,14 +45095,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__3"
-    // InternalPerspectiveDsl.g:13554:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:13608:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
     public final void rule__XClosure__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13558:1: ( rule__XClosure__Group__3__Impl )
-            // InternalPerspectiveDsl.g:13559:2: rule__XClosure__Group__3__Impl
+            // InternalPerspectiveDsl.g:13612:1: ( rule__XClosure__Group__3__Impl )
+            // InternalPerspectiveDsl.g:13613:2: rule__XClosure__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group__3__Impl();
@@ -44963,22 +45128,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group__3__Impl"
-    // InternalPerspectiveDsl.g:13565:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:13619:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
     public final void rule__XClosure__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13569:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:13570:1: ( ']' )
+            // InternalPerspectiveDsl.g:13623:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:13624:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:13570:1: ( ']' )
-            // InternalPerspectiveDsl.g:13571:2: ']'
+            // InternalPerspectiveDsl.g:13624:1: ( ']' )
+            // InternalPerspectiveDsl.g:13625:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
             }
-            match(input,99,FOLLOW_2); if (state.failed) return ;
+            match(input,101,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
             }
@@ -45004,14 +45169,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0__0"
-    // InternalPerspectiveDsl.g:13581:1: rule__XClosure__Group_0__0 : rule__XClosure__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:13635:1: rule__XClosure__Group_0__0 : rule__XClosure__Group_0__0__Impl ;
     public final void rule__XClosure__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13585:1: ( rule__XClosure__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:13586:2: rule__XClosure__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:13639:1: ( rule__XClosure__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:13640:2: rule__XClosure__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0__0__Impl();
@@ -45037,23 +45202,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:13592:1: rule__XClosure__Group_0__0__Impl : ( ( rule__XClosure__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:13646:1: rule__XClosure__Group_0__0__Impl : ( ( rule__XClosure__Group_0_0__0 ) ) ;
     public final void rule__XClosure__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13596:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:13597:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:13650:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:13651:1: ( ( rule__XClosure__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:13597:1: ( ( rule__XClosure__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:13598:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:13651:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:13652:2: ( rule__XClosure__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:13599:2: ( rule__XClosure__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:13599:3: rule__XClosure__Group_0_0__0
+            // InternalPerspectiveDsl.g:13653:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:13653:3: rule__XClosure__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0_0__0();
@@ -45088,14 +45253,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__0"
-    // InternalPerspectiveDsl.g:13608:1: rule__XClosure__Group_0_0__0 : rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:13662:1: rule__XClosure__Group_0_0__0 : rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 ;
     public final void rule__XClosure__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13612:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:13613:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
+            // InternalPerspectiveDsl.g:13666:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:13667:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
             {
             pushFollow(FOLLOW_66);
             rule__XClosure__Group_0_0__0__Impl();
@@ -45126,23 +45291,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:13620:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:13674:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13624:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:13625:1: ( () )
+            // InternalPerspectiveDsl.g:13678:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13679:1: ( () )
             {
-            // InternalPerspectiveDsl.g:13625:1: ( () )
-            // InternalPerspectiveDsl.g:13626:2: ()
+            // InternalPerspectiveDsl.g:13679:1: ( () )
+            // InternalPerspectiveDsl.g:13680:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:13627:2: ()
-            // InternalPerspectiveDsl.g:13627:3: 
+            // InternalPerspectiveDsl.g:13681:2: ()
+            // InternalPerspectiveDsl.g:13681:3: 
             {
             }
 
@@ -45167,14 +45332,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__1"
-    // InternalPerspectiveDsl.g:13635:1: rule__XClosure__Group_0_0__1 : rule__XClosure__Group_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:13689:1: rule__XClosure__Group_0_0__1 : rule__XClosure__Group_0_0__1__Impl ;
     public final void rule__XClosure__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13639:1: ( rule__XClosure__Group_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:13640:2: rule__XClosure__Group_0_0__1__Impl
+            // InternalPerspectiveDsl.g:13693:1: ( rule__XClosure__Group_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:13694:2: rule__XClosure__Group_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0_0__1__Impl();
@@ -45200,22 +45365,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:13646:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:13700:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
     public final void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13650:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:13651:1: ( '[' )
+            // InternalPerspectiveDsl.g:13704:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:13705:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:13651:1: ( '[' )
-            // InternalPerspectiveDsl.g:13652:2: '['
+            // InternalPerspectiveDsl.g:13705:1: ( '[' )
+            // InternalPerspectiveDsl.g:13706:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
             }
-            match(input,101,FOLLOW_2); if (state.failed) return ;
+            match(input,103,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
             }
@@ -45241,14 +45406,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1__0"
-    // InternalPerspectiveDsl.g:13662:1: rule__XClosure__Group_1__0 : rule__XClosure__Group_1__0__Impl ;
+    // InternalPerspectiveDsl.g:13716:1: rule__XClosure__Group_1__0 : rule__XClosure__Group_1__0__Impl ;
     public final void rule__XClosure__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13666:1: ( rule__XClosure__Group_1__0__Impl )
-            // InternalPerspectiveDsl.g:13667:2: rule__XClosure__Group_1__0__Impl
+            // InternalPerspectiveDsl.g:13720:1: ( rule__XClosure__Group_1__0__Impl )
+            // InternalPerspectiveDsl.g:13721:2: rule__XClosure__Group_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1__0__Impl();
@@ -45274,23 +45439,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:13673:1: rule__XClosure__Group_1__0__Impl : ( ( rule__XClosure__Group_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:13727:1: rule__XClosure__Group_1__0__Impl : ( ( rule__XClosure__Group_1_0__0 ) ) ;
     public final void rule__XClosure__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13677:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:13678:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:13731:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:13732:1: ( ( rule__XClosure__Group_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:13678:1: ( ( rule__XClosure__Group_1_0__0 ) )
-            // InternalPerspectiveDsl.g:13679:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:13732:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalPerspectiveDsl.g:13733:2: ( rule__XClosure__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0()); 
             }
-            // InternalPerspectiveDsl.g:13680:2: ( rule__XClosure__Group_1_0__0 )
-            // InternalPerspectiveDsl.g:13680:3: rule__XClosure__Group_1_0__0
+            // InternalPerspectiveDsl.g:13734:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalPerspectiveDsl.g:13734:3: rule__XClosure__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0__0();
@@ -45325,14 +45490,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__0"
-    // InternalPerspectiveDsl.g:13689:1: rule__XClosure__Group_1_0__0 : rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 ;
+    // InternalPerspectiveDsl.g:13743:1: rule__XClosure__Group_1_0__0 : rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 ;
     public final void rule__XClosure__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13693:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
-            // InternalPerspectiveDsl.g:13694:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
+            // InternalPerspectiveDsl.g:13747:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
+            // InternalPerspectiveDsl.g:13748:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
             {
             pushFollow(FOLLOW_105);
             rule__XClosure__Group_1_0__0__Impl();
@@ -45363,31 +45528,31 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:13701:1: rule__XClosure__Group_1_0__0__Impl : ( ( rule__XClosure__Group_1_0_0__0 )? ) ;
+    // InternalPerspectiveDsl.g:13755:1: rule__XClosure__Group_1_0__0__Impl : ( ( rule__XClosure__Group_1_0_0__0 )? ) ;
     public final void rule__XClosure__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13705:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
-            // InternalPerspectiveDsl.g:13706:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalPerspectiveDsl.g:13759:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
+            // InternalPerspectiveDsl.g:13760:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
             {
-            // InternalPerspectiveDsl.g:13706:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
-            // InternalPerspectiveDsl.g:13707:2: ( rule__XClosure__Group_1_0_0__0 )?
+            // InternalPerspectiveDsl.g:13760:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalPerspectiveDsl.g:13761:2: ( rule__XClosure__Group_1_0_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:13708:2: ( rule__XClosure__Group_1_0_0__0 )?
+            // InternalPerspectiveDsl.g:13762:2: ( rule__XClosure__Group_1_0_0__0 )?
             int alt95=2;
             int LA95_0 = input.LA(1);
 
-            if ( (LA95_0==RULE_ID||LA95_0==31||LA95_0==96) ) {
+            if ( (LA95_0==RULE_ID||LA95_0==31||LA95_0==98) ) {
                 alt95=1;
             }
             switch (alt95) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:13708:3: rule__XClosure__Group_1_0_0__0
+                    // InternalPerspectiveDsl.g:13762:3: rule__XClosure__Group_1_0_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XClosure__Group_1_0_0__0();
@@ -45425,14 +45590,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__1"
-    // InternalPerspectiveDsl.g:13716:1: rule__XClosure__Group_1_0__1 : rule__XClosure__Group_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:13770:1: rule__XClosure__Group_1_0__1 : rule__XClosure__Group_1_0__1__Impl ;
     public final void rule__XClosure__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13720:1: ( rule__XClosure__Group_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:13721:2: rule__XClosure__Group_1_0__1__Impl
+            // InternalPerspectiveDsl.g:13774:1: ( rule__XClosure__Group_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:13775:2: rule__XClosure__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0__1__Impl();
@@ -45458,23 +45623,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:13727:1: rule__XClosure__Group_1_0__1__Impl : ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:13781:1: rule__XClosure__Group_1_0__1__Impl : ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) ;
     public final void rule__XClosure__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13731:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
-            // InternalPerspectiveDsl.g:13732:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:13785:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
+            // InternalPerspectiveDsl.g:13786:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:13732:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
-            // InternalPerspectiveDsl.g:13733:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:13786:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalPerspectiveDsl.g:13787:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); 
             }
-            // InternalPerspectiveDsl.g:13734:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
-            // InternalPerspectiveDsl.g:13734:3: rule__XClosure__ExplicitSyntaxAssignment_1_0_1
+            // InternalPerspectiveDsl.g:13788:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalPerspectiveDsl.g:13788:3: rule__XClosure__ExplicitSyntaxAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__ExplicitSyntaxAssignment_1_0_1();
@@ -45509,14 +45674,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__0"
-    // InternalPerspectiveDsl.g:13743:1: rule__XClosure__Group_1_0_0__0 : rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:13797:1: rule__XClosure__Group_1_0_0__0 : rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 ;
     public final void rule__XClosure__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13747:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
-            // InternalPerspectiveDsl.g:13748:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
+            // InternalPerspectiveDsl.g:13801:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
+            // InternalPerspectiveDsl.g:13802:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
             {
             pushFollow(FOLLOW_60);
             rule__XClosure__Group_1_0_0__0__Impl();
@@ -45547,23 +45712,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:13755:1: rule__XClosure__Group_1_0_0__0__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:13809:1: rule__XClosure__Group_1_0_0__0__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) ;
     public final void rule__XClosure__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13759:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
-            // InternalPerspectiveDsl.g:13760:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:13813:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:13814:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:13760:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
-            // InternalPerspectiveDsl.g:13761:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalPerspectiveDsl.g:13814:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:13815:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:13762:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
-            // InternalPerspectiveDsl.g:13762:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
+            // InternalPerspectiveDsl.g:13816:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalPerspectiveDsl.g:13816:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0();
@@ -45598,14 +45763,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__1"
-    // InternalPerspectiveDsl.g:13770:1: rule__XClosure__Group_1_0_0__1 : rule__XClosure__Group_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:13824:1: rule__XClosure__Group_1_0_0__1 : rule__XClosure__Group_1_0_0__1__Impl ;
     public final void rule__XClosure__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13774:1: ( rule__XClosure__Group_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:13775:2: rule__XClosure__Group_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:13828:1: ( rule__XClosure__Group_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:13829:2: rule__XClosure__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0_0__1__Impl();
@@ -45631,35 +45796,35 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:13781:1: rule__XClosure__Group_1_0_0__1__Impl : ( ( rule__XClosure__Group_1_0_0_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:13835:1: rule__XClosure__Group_1_0_0__1__Impl : ( ( rule__XClosure__Group_1_0_0_1__0 )* ) ;
     public final void rule__XClosure__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13785:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
-            // InternalPerspectiveDsl.g:13786:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalPerspectiveDsl.g:13839:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13840:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:13786:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
-            // InternalPerspectiveDsl.g:13787:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            // InternalPerspectiveDsl.g:13840:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalPerspectiveDsl.g:13841:2: ( rule__XClosure__Group_1_0_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:13788:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            // InternalPerspectiveDsl.g:13842:2: ( rule__XClosure__Group_1_0_0_1__0 )*
             loop96:
             do {
                 int alt96=2;
                 int LA96_0 = input.LA(1);
 
-                if ( (LA96_0==98) ) {
+                if ( (LA96_0==100) ) {
                     alt96=1;
                 }
 
 
                 switch (alt96) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:13788:3: rule__XClosure__Group_1_0_0_1__0
+            	    // InternalPerspectiveDsl.g:13842:3: rule__XClosure__Group_1_0_0_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XClosure__Group_1_0_0_1__0();
@@ -45700,14 +45865,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__0"
-    // InternalPerspectiveDsl.g:13797:1: rule__XClosure__Group_1_0_0_1__0 : rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 ;
+    // InternalPerspectiveDsl.g:13851:1: rule__XClosure__Group_1_0_0_1__0 : rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 ;
     public final void rule__XClosure__Group_1_0_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13801:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
-            // InternalPerspectiveDsl.g:13802:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
+            // InternalPerspectiveDsl.g:13855:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
+            // InternalPerspectiveDsl.g:13856:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
             {
             pushFollow(FOLLOW_79);
             rule__XClosure__Group_1_0_0_1__0__Impl();
@@ -45738,22 +45903,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:13809:1: rule__XClosure__Group_1_0_0_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:13863:1: rule__XClosure__Group_1_0_0_1__0__Impl : ( ',' ) ;
     public final void rule__XClosure__Group_1_0_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13813:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:13814:1: ( ',' )
+            // InternalPerspectiveDsl.g:13867:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:13868:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:13814:1: ( ',' )
-            // InternalPerspectiveDsl.g:13815:2: ','
+            // InternalPerspectiveDsl.g:13868:1: ( ',' )
+            // InternalPerspectiveDsl.g:13869:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
             }
@@ -45779,14 +45944,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__1"
-    // InternalPerspectiveDsl.g:13824:1: rule__XClosure__Group_1_0_0_1__1 : rule__XClosure__Group_1_0_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:13878:1: rule__XClosure__Group_1_0_0_1__1 : rule__XClosure__Group_1_0_0_1__1__Impl ;
     public final void rule__XClosure__Group_1_0_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13828:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:13829:2: rule__XClosure__Group_1_0_0_1__1__Impl
+            // InternalPerspectiveDsl.g:13882:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:13883:2: rule__XClosure__Group_1_0_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0_0_1__1__Impl();
@@ -45812,23 +45977,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:13835:1: rule__XClosure__Group_1_0_0_1__1__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:13889:1: rule__XClosure__Group_1_0_0_1__1__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) ;
     public final void rule__XClosure__Group_1_0_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13839:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
-            // InternalPerspectiveDsl.g:13840:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalPerspectiveDsl.g:13893:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:13894:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:13840:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
-            // InternalPerspectiveDsl.g:13841:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalPerspectiveDsl.g:13894:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalPerspectiveDsl.g:13895:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:13842:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
-            // InternalPerspectiveDsl.g:13842:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
+            // InternalPerspectiveDsl.g:13896:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalPerspectiveDsl.g:13896:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1();
@@ -45863,14 +46028,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__0"
-    // InternalPerspectiveDsl.g:13851:1: rule__XExpressionInClosure__Group__0 : rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 ;
+    // InternalPerspectiveDsl.g:13905:1: rule__XExpressionInClosure__Group__0 : rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 ;
     public final void rule__XExpressionInClosure__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13855:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
-            // InternalPerspectiveDsl.g:13856:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
+            // InternalPerspectiveDsl.g:13909:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
+            // InternalPerspectiveDsl.g:13910:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
             {
             pushFollow(FOLLOW_103);
             rule__XExpressionInClosure__Group__0__Impl();
@@ -45901,23 +46066,23 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__0__Impl"
-    // InternalPerspectiveDsl.g:13863:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:13917:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
     public final void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13867:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:13868:1: ( () )
+            // InternalPerspectiveDsl.g:13921:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:13922:1: ( () )
             {
-            // InternalPerspectiveDsl.g:13868:1: ( () )
-            // InternalPerspectiveDsl.g:13869:2: ()
+            // InternalPerspectiveDsl.g:13922:1: ( () )
+            // InternalPerspectiveDsl.g:13923:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:13870:2: ()
-            // InternalPerspectiveDsl.g:13870:3: 
+            // InternalPerspectiveDsl.g:13924:2: ()
+            // InternalPerspectiveDsl.g:13924:3: 
             {
             }
 
@@ -45942,14 +46107,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__1"
-    // InternalPerspectiveDsl.g:13878:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:13932:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
     public final void rule__XExpressionInClosure__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13882:1: ( rule__XExpressionInClosure__Group__1__Impl )
-            // InternalPerspectiveDsl.g:13883:2: rule__XExpressionInClosure__Group__1__Impl
+            // InternalPerspectiveDsl.g:13936:1: ( rule__XExpressionInClosure__Group__1__Impl )
+            // InternalPerspectiveDsl.g:13937:2: rule__XExpressionInClosure__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group__1__Impl();
@@ -45975,35 +46140,35 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13889:1: rule__XExpressionInClosure__Group__1__Impl : ( ( rule__XExpressionInClosure__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:13943:1: rule__XExpressionInClosure__Group__1__Impl : ( ( rule__XExpressionInClosure__Group_1__0 )* ) ;
     public final void rule__XExpressionInClosure__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13893:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:13894:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:13947:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:13948:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:13894:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:13895:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            // InternalPerspectiveDsl.g:13948:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:13949:2: ( rule__XExpressionInClosure__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:13896:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            // InternalPerspectiveDsl.g:13950:2: ( rule__XExpressionInClosure__Group_1__0 )*
             loop97:
             do {
                 int alt97=2;
                 int LA97_0 = input.LA(1);
 
-                if ( ((LA97_0>=RULE_ID && LA97_0<=RULE_DECIMAL)||LA97_0==27||(LA97_0>=34 && LA97_0<=35)||LA97_0==40||(LA97_0>=44 && LA97_0<=50)||LA97_0==54||LA97_0==96||(LA97_0>=100 && LA97_0<=101)||LA97_0==104||LA97_0==106||(LA97_0>=110 && LA97_0<=118)||LA97_0==120||(LA97_0>=130 && LA97_0<=131)) ) {
+                if ( ((LA97_0>=RULE_ID && LA97_0<=RULE_DECIMAL)||LA97_0==27||(LA97_0>=34 && LA97_0<=35)||LA97_0==40||(LA97_0>=44 && LA97_0<=50)||LA97_0==54||LA97_0==98||(LA97_0>=102 && LA97_0<=103)||LA97_0==106||LA97_0==108||(LA97_0>=112 && LA97_0<=120)||LA97_0==122||(LA97_0>=132 && LA97_0<=133)) ) {
                     alt97=1;
                 }
 
 
                 switch (alt97) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:13896:3: rule__XExpressionInClosure__Group_1__0
+            	    // InternalPerspectiveDsl.g:13950:3: rule__XExpressionInClosure__Group_1__0
             	    {
             	    pushFollow(FOLLOW_106);
             	    rule__XExpressionInClosure__Group_1__0();
@@ -46044,14 +46209,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__0"
-    // InternalPerspectiveDsl.g:13905:1: rule__XExpressionInClosure__Group_1__0 : rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 ;
+    // InternalPerspectiveDsl.g:13959:1: rule__XExpressionInClosure__Group_1__0 : rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 ;
     public final void rule__XExpressionInClosure__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13909:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
-            // InternalPerspectiveDsl.g:13910:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
+            // InternalPerspectiveDsl.g:13963:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
+            // InternalPerspectiveDsl.g:13964:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
             {
             pushFollow(FOLLOW_54);
             rule__XExpressionInClosure__Group_1__0__Impl();
@@ -46082,23 +46247,23 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:13917:1: rule__XExpressionInClosure__Group_1__0__Impl : ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:13971:1: rule__XExpressionInClosure__Group_1__0__Impl : ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) ;
     public final void rule__XExpressionInClosure__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13921:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
-            // InternalPerspectiveDsl.g:13922:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalPerspectiveDsl.g:13975:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
+            // InternalPerspectiveDsl.g:13976:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:13922:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
-            // InternalPerspectiveDsl.g:13923:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalPerspectiveDsl.g:13976:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalPerspectiveDsl.g:13977:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); 
             }
-            // InternalPerspectiveDsl.g:13924:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
-            // InternalPerspectiveDsl.g:13924:3: rule__XExpressionInClosure__ExpressionsAssignment_1_0
+            // InternalPerspectiveDsl.g:13978:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalPerspectiveDsl.g:13978:3: rule__XExpressionInClosure__ExpressionsAssignment_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__ExpressionsAssignment_1_0();
@@ -46133,14 +46298,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__1"
-    // InternalPerspectiveDsl.g:13932:1: rule__XExpressionInClosure__Group_1__1 : rule__XExpressionInClosure__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:13986:1: rule__XExpressionInClosure__Group_1__1 : rule__XExpressionInClosure__Group_1__1__Impl ;
     public final void rule__XExpressionInClosure__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13936:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:13937:2: rule__XExpressionInClosure__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:13990:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:13991:2: rule__XExpressionInClosure__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group_1__1__Impl();
@@ -46166,33 +46331,33 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:13943:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
+    // InternalPerspectiveDsl.g:13997:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
     public final void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13947:1: ( ( ( ';' )? ) )
-            // InternalPerspectiveDsl.g:13948:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:14001:1: ( ( ( ';' )? ) )
+            // InternalPerspectiveDsl.g:14002:1: ( ( ';' )? )
             {
-            // InternalPerspectiveDsl.g:13948:1: ( ( ';' )? )
-            // InternalPerspectiveDsl.g:13949:2: ( ';' )?
+            // InternalPerspectiveDsl.g:14002:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:14003:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); 
             }
-            // InternalPerspectiveDsl.g:13950:2: ( ';' )?
+            // InternalPerspectiveDsl.g:14004:2: ( ';' )?
             int alt98=2;
             int LA98_0 = input.LA(1);
 
-            if ( (LA98_0==94) ) {
+            if ( (LA98_0==96) ) {
                 alt98=1;
             }
             switch (alt98) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:13950:3: ';'
+                    // InternalPerspectiveDsl.g:14004:3: ';'
                     {
-                    match(input,94,FOLLOW_2); if (state.failed) return ;
+                    match(input,96,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -46224,14 +46389,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__0"
-    // InternalPerspectiveDsl.g:13959:1: rule__XShortClosure__Group__0 : rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 ;
+    // InternalPerspectiveDsl.g:14013:1: rule__XShortClosure__Group__0 : rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 ;
     public final void rule__XShortClosure__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13963:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
-            // InternalPerspectiveDsl.g:13964:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
+            // InternalPerspectiveDsl.g:14017:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
+            // InternalPerspectiveDsl.g:14018:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
             {
             pushFollow(FOLLOW_62);
             rule__XShortClosure__Group__0__Impl();
@@ -46262,23 +46427,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__0__Impl"
-    // InternalPerspectiveDsl.g:13971:1: rule__XShortClosure__Group__0__Impl : ( ( rule__XShortClosure__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:14025:1: rule__XShortClosure__Group__0__Impl : ( ( rule__XShortClosure__Group_0__0 ) ) ;
     public final void rule__XShortClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13975:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:13976:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:14029:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14030:1: ( ( rule__XShortClosure__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:13976:1: ( ( rule__XShortClosure__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:13977:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:14030:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:14031:2: ( rule__XShortClosure__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:13978:2: ( rule__XShortClosure__Group_0__0 )
-            // InternalPerspectiveDsl.g:13978:3: rule__XShortClosure__Group_0__0
+            // InternalPerspectiveDsl.g:14032:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalPerspectiveDsl.g:14032:3: rule__XShortClosure__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0__0();
@@ -46313,14 +46478,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__1"
-    // InternalPerspectiveDsl.g:13986:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:14040:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
     public final void rule__XShortClosure__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:13990:1: ( rule__XShortClosure__Group__1__Impl )
-            // InternalPerspectiveDsl.g:13991:2: rule__XShortClosure__Group__1__Impl
+            // InternalPerspectiveDsl.g:14044:1: ( rule__XShortClosure__Group__1__Impl )
+            // InternalPerspectiveDsl.g:14045:2: rule__XShortClosure__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group__1__Impl();
@@ -46346,23 +46511,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__1__Impl"
-    // InternalPerspectiveDsl.g:13997:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:14051:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
     public final void rule__XShortClosure__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14001:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:14002:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:14055:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:14056:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:14002:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
-            // InternalPerspectiveDsl.g:14003:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:14056:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:14057:2: ( rule__XShortClosure__ExpressionAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:14004:2: ( rule__XShortClosure__ExpressionAssignment_1 )
-            // InternalPerspectiveDsl.g:14004:3: rule__XShortClosure__ExpressionAssignment_1
+            // InternalPerspectiveDsl.g:14058:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:14058:3: rule__XShortClosure__ExpressionAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__ExpressionAssignment_1();
@@ -46397,14 +46562,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0__0"
-    // InternalPerspectiveDsl.g:14013:1: rule__XShortClosure__Group_0__0 : rule__XShortClosure__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:14067:1: rule__XShortClosure__Group_0__0 : rule__XShortClosure__Group_0__0__Impl ;
     public final void rule__XShortClosure__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14017:1: ( rule__XShortClosure__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:14018:2: rule__XShortClosure__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:14071:1: ( rule__XShortClosure__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:14072:2: rule__XShortClosure__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0__0__Impl();
@@ -46430,23 +46595,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:14024:1: rule__XShortClosure__Group_0__0__Impl : ( ( rule__XShortClosure__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:14078:1: rule__XShortClosure__Group_0__0__Impl : ( ( rule__XShortClosure__Group_0_0__0 ) ) ;
     public final void rule__XShortClosure__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14028:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:14029:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14082:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14083:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:14029:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:14030:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:14083:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14084:2: ( rule__XShortClosure__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:14031:2: ( rule__XShortClosure__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:14031:3: rule__XShortClosure__Group_0_0__0
+            // InternalPerspectiveDsl.g:14085:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:14085:3: rule__XShortClosure__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0__0();
@@ -46481,14 +46646,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__0"
-    // InternalPerspectiveDsl.g:14040:1: rule__XShortClosure__Group_0_0__0 : rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:14094:1: rule__XShortClosure__Group_0_0__0 : rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 ;
     public final void rule__XShortClosure__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14044:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:14045:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
+            // InternalPerspectiveDsl.g:14098:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:14099:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
             {
             pushFollow(FOLLOW_105);
             rule__XShortClosure__Group_0_0__0__Impl();
@@ -46519,23 +46684,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:14052:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:14106:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14056:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:14057:1: ( () )
+            // InternalPerspectiveDsl.g:14110:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:14111:1: ( () )
             {
-            // InternalPerspectiveDsl.g:14057:1: ( () )
-            // InternalPerspectiveDsl.g:14058:2: ()
+            // InternalPerspectiveDsl.g:14111:1: ( () )
+            // InternalPerspectiveDsl.g:14112:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:14059:2: ()
-            // InternalPerspectiveDsl.g:14059:3: 
+            // InternalPerspectiveDsl.g:14113:2: ()
+            // InternalPerspectiveDsl.g:14113:3: 
             {
             }
 
@@ -46560,14 +46725,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__1"
-    // InternalPerspectiveDsl.g:14067:1: rule__XShortClosure__Group_0_0__1 : rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 ;
+    // InternalPerspectiveDsl.g:14121:1: rule__XShortClosure__Group_0_0__1 : rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 ;
     public final void rule__XShortClosure__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14071:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
-            // InternalPerspectiveDsl.g:14072:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
+            // InternalPerspectiveDsl.g:14125:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
+            // InternalPerspectiveDsl.g:14126:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
             {
             pushFollow(FOLLOW_105);
             rule__XShortClosure__Group_0_0__1__Impl();
@@ -46598,31 +46763,31 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:14079:1: rule__XShortClosure__Group_0_0__1__Impl : ( ( rule__XShortClosure__Group_0_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:14133:1: rule__XShortClosure__Group_0_0__1__Impl : ( ( rule__XShortClosure__Group_0_0_1__0 )? ) ;
     public final void rule__XShortClosure__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14083:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:14084:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalPerspectiveDsl.g:14137:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:14138:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:14084:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
-            // InternalPerspectiveDsl.g:14085:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            // InternalPerspectiveDsl.g:14138:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalPerspectiveDsl.g:14139:2: ( rule__XShortClosure__Group_0_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:14086:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            // InternalPerspectiveDsl.g:14140:2: ( rule__XShortClosure__Group_0_0_1__0 )?
             int alt99=2;
             int LA99_0 = input.LA(1);
 
-            if ( (LA99_0==RULE_ID||LA99_0==31||LA99_0==96) ) {
+            if ( (LA99_0==RULE_ID||LA99_0==31||LA99_0==98) ) {
                 alt99=1;
             }
             switch (alt99) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:14086:3: rule__XShortClosure__Group_0_0_1__0
+                    // InternalPerspectiveDsl.g:14140:3: rule__XShortClosure__Group_0_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XShortClosure__Group_0_0_1__0();
@@ -46660,14 +46825,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__2"
-    // InternalPerspectiveDsl.g:14094:1: rule__XShortClosure__Group_0_0__2 : rule__XShortClosure__Group_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:14148:1: rule__XShortClosure__Group_0_0__2 : rule__XShortClosure__Group_0_0__2__Impl ;
     public final void rule__XShortClosure__Group_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14098:1: ( rule__XShortClosure__Group_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:14099:2: rule__XShortClosure__Group_0_0__2__Impl
+            // InternalPerspectiveDsl.g:14152:1: ( rule__XShortClosure__Group_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:14153:2: rule__XShortClosure__Group_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0__2__Impl();
@@ -46693,23 +46858,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:14105:1: rule__XShortClosure__Group_0_0__2__Impl : ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) ;
+    // InternalPerspectiveDsl.g:14159:1: rule__XShortClosure__Group_0_0__2__Impl : ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) ;
     public final void rule__XShortClosure__Group_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14109:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
-            // InternalPerspectiveDsl.g:14110:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalPerspectiveDsl.g:14163:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
+            // InternalPerspectiveDsl.g:14164:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
             {
-            // InternalPerspectiveDsl.g:14110:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
-            // InternalPerspectiveDsl.g:14111:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalPerspectiveDsl.g:14164:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalPerspectiveDsl.g:14165:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); 
             }
-            // InternalPerspectiveDsl.g:14112:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
-            // InternalPerspectiveDsl.g:14112:3: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
+            // InternalPerspectiveDsl.g:14166:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalPerspectiveDsl.g:14166:3: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2();
@@ -46744,14 +46909,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__0"
-    // InternalPerspectiveDsl.g:14121:1: rule__XShortClosure__Group_0_0_1__0 : rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 ;
+    // InternalPerspectiveDsl.g:14175:1: rule__XShortClosure__Group_0_0_1__0 : rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 ;
     public final void rule__XShortClosure__Group_0_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14125:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
-            // InternalPerspectiveDsl.g:14126:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
+            // InternalPerspectiveDsl.g:14179:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
+            // InternalPerspectiveDsl.g:14180:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
             {
             pushFollow(FOLLOW_60);
             rule__XShortClosure__Group_0_0_1__0__Impl();
@@ -46782,23 +46947,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:14133:1: rule__XShortClosure__Group_0_0_1__0__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:14187:1: rule__XShortClosure__Group_0_0_1__0__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) ;
     public final void rule__XShortClosure__Group_0_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14137:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
-            // InternalPerspectiveDsl.g:14138:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalPerspectiveDsl.g:14191:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:14192:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:14138:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
-            // InternalPerspectiveDsl.g:14139:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalPerspectiveDsl.g:14192:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalPerspectiveDsl.g:14193:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:14140:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
-            // InternalPerspectiveDsl.g:14140:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
+            // InternalPerspectiveDsl.g:14194:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalPerspectiveDsl.g:14194:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0();
@@ -46833,14 +46998,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__1"
-    // InternalPerspectiveDsl.g:14148:1: rule__XShortClosure__Group_0_0_1__1 : rule__XShortClosure__Group_0_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:14202:1: rule__XShortClosure__Group_0_0_1__1 : rule__XShortClosure__Group_0_0_1__1__Impl ;
     public final void rule__XShortClosure__Group_0_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14152:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:14153:2: rule__XShortClosure__Group_0_0_1__1__Impl
+            // InternalPerspectiveDsl.g:14206:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:14207:2: rule__XShortClosure__Group_0_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0_1__1__Impl();
@@ -46866,35 +47031,35 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:14159:1: rule__XShortClosure__Group_0_0_1__1__Impl : ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:14213:1: rule__XShortClosure__Group_0_0_1__1__Impl : ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) ;
     public final void rule__XShortClosure__Group_0_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14163:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:14164:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:14217:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:14218:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:14164:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
-            // InternalPerspectiveDsl.g:14165:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:14218:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:14219:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:14166:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:14220:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
             loop100:
             do {
                 int alt100=2;
                 int LA100_0 = input.LA(1);
 
-                if ( (LA100_0==98) ) {
+                if ( (LA100_0==100) ) {
                     alt100=1;
                 }
 
 
                 switch (alt100) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:14166:3: rule__XShortClosure__Group_0_0_1_1__0
+            	    // InternalPerspectiveDsl.g:14220:3: rule__XShortClosure__Group_0_0_1_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XShortClosure__Group_0_0_1_1__0();
@@ -46935,14 +47100,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0"
-    // InternalPerspectiveDsl.g:14175:1: rule__XShortClosure__Group_0_0_1_1__0 : rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 ;
+    // InternalPerspectiveDsl.g:14229:1: rule__XShortClosure__Group_0_0_1_1__0 : rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 ;
     public final void rule__XShortClosure__Group_0_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14179:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
-            // InternalPerspectiveDsl.g:14180:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
+            // InternalPerspectiveDsl.g:14233:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
+            // InternalPerspectiveDsl.g:14234:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
             {
             pushFollow(FOLLOW_79);
             rule__XShortClosure__Group_0_0_1_1__0__Impl();
@@ -46973,22 +47138,22 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:14187:1: rule__XShortClosure__Group_0_0_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:14241:1: rule__XShortClosure__Group_0_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XShortClosure__Group_0_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14191:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:14192:1: ( ',' )
+            // InternalPerspectiveDsl.g:14245:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:14246:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:14192:1: ( ',' )
-            // InternalPerspectiveDsl.g:14193:2: ','
+            // InternalPerspectiveDsl.g:14246:1: ( ',' )
+            // InternalPerspectiveDsl.g:14247:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
             }
@@ -47014,14 +47179,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1"
-    // InternalPerspectiveDsl.g:14202:1: rule__XShortClosure__Group_0_0_1_1__1 : rule__XShortClosure__Group_0_0_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:14256:1: rule__XShortClosure__Group_0_0_1_1__1 : rule__XShortClosure__Group_0_0_1_1__1__Impl ;
     public final void rule__XShortClosure__Group_0_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14206:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:14207:2: rule__XShortClosure__Group_0_0_1_1__1__Impl
+            // InternalPerspectiveDsl.g:14260:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:14261:2: rule__XShortClosure__Group_0_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0_1_1__1__Impl();
@@ -47047,23 +47212,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:14213:1: rule__XShortClosure__Group_0_0_1_1__1__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:14267:1: rule__XShortClosure__Group_0_0_1_1__1__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) ;
     public final void rule__XShortClosure__Group_0_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14217:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:14218:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:14271:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:14272:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:14218:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
-            // InternalPerspectiveDsl.g:14219:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalPerspectiveDsl.g:14272:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:14273:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:14220:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
-            // InternalPerspectiveDsl.g:14220:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
+            // InternalPerspectiveDsl.g:14274:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalPerspectiveDsl.g:14274:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1();
@@ -47098,14 +47263,14 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__0"
-    // InternalPerspectiveDsl.g:14229:1: rule__XParenthesizedExpression__Group__0 : rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:14283:1: rule__XParenthesizedExpression__Group__0 : rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 ;
     public final void rule__XParenthesizedExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14233:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
-            // InternalPerspectiveDsl.g:14234:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
+            // InternalPerspectiveDsl.g:14287:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
+            // InternalPerspectiveDsl.g:14288:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
             {
             pushFollow(FOLLOW_62);
             rule__XParenthesizedExpression__Group__0__Impl();
@@ -47136,22 +47301,22 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:14241:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:14295:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
     public final void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14245:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:14246:1: ( '(' )
+            // InternalPerspectiveDsl.g:14299:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:14300:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:14246:1: ( '(' )
-            // InternalPerspectiveDsl.g:14247:2: '('
+            // InternalPerspectiveDsl.g:14300:1: ( '(' )
+            // InternalPerspectiveDsl.g:14301:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
             }
@@ -47177,14 +47342,14 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__1"
-    // InternalPerspectiveDsl.g:14256:1: rule__XParenthesizedExpression__Group__1 : rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:14310:1: rule__XParenthesizedExpression__Group__1 : rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 ;
     public final void rule__XParenthesizedExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14260:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
-            // InternalPerspectiveDsl.g:14261:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
+            // InternalPerspectiveDsl.g:14314:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
+            // InternalPerspectiveDsl.g:14315:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
             {
             pushFollow(FOLLOW_107);
             rule__XParenthesizedExpression__Group__1__Impl();
@@ -47215,17 +47380,17 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:14268:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:14322:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
     public final void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14272:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:14273:1: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:14326:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:14327:1: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:14273:1: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:14274:2: ruleXExpression
+            // InternalPerspectiveDsl.g:14327:1: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:14328:2: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -47260,14 +47425,14 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__2"
-    // InternalPerspectiveDsl.g:14283:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:14337:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
     public final void rule__XParenthesizedExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14287:1: ( rule__XParenthesizedExpression__Group__2__Impl )
-            // InternalPerspectiveDsl.g:14288:2: rule__XParenthesizedExpression__Group__2__Impl
+            // InternalPerspectiveDsl.g:14341:1: ( rule__XParenthesizedExpression__Group__2__Impl )
+            // InternalPerspectiveDsl.g:14342:2: rule__XParenthesizedExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XParenthesizedExpression__Group__2__Impl();
@@ -47293,22 +47458,22 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:14294:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:14348:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14298:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:14299:1: ( ')' )
+            // InternalPerspectiveDsl.g:14352:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:14353:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:14299:1: ( ')' )
-            // InternalPerspectiveDsl.g:14300:2: ')'
+            // InternalPerspectiveDsl.g:14353:1: ( ')' )
+            // InternalPerspectiveDsl.g:14354:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -47334,14 +47499,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__0"
-    // InternalPerspectiveDsl.g:14310:1: rule__XIfExpression__Group__0 : rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:14364:1: rule__XIfExpression__Group__0 : rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 ;
     public final void rule__XIfExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14314:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
-            // InternalPerspectiveDsl.g:14315:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
+            // InternalPerspectiveDsl.g:14368:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
+            // InternalPerspectiveDsl.g:14369:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
             {
             pushFollow(FOLLOW_108);
             rule__XIfExpression__Group__0__Impl();
@@ -47372,23 +47537,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:14322:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:14376:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
     public final void rule__XIfExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14326:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:14327:1: ( () )
+            // InternalPerspectiveDsl.g:14380:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:14381:1: ( () )
             {
-            // InternalPerspectiveDsl.g:14327:1: ( () )
-            // InternalPerspectiveDsl.g:14328:2: ()
+            // InternalPerspectiveDsl.g:14381:1: ( () )
+            // InternalPerspectiveDsl.g:14382:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:14329:2: ()
-            // InternalPerspectiveDsl.g:14329:3: 
+            // InternalPerspectiveDsl.g:14383:2: ()
+            // InternalPerspectiveDsl.g:14383:3: 
             {
             }
 
@@ -47413,14 +47578,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__1"
-    // InternalPerspectiveDsl.g:14337:1: rule__XIfExpression__Group__1 : rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:14391:1: rule__XIfExpression__Group__1 : rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 ;
     public final void rule__XIfExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14341:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
-            // InternalPerspectiveDsl.g:14342:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
+            // InternalPerspectiveDsl.g:14395:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
+            // InternalPerspectiveDsl.g:14396:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
             {
             pushFollow(FOLLOW_58);
             rule__XIfExpression__Group__1__Impl();
@@ -47451,22 +47616,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:14349:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
+    // InternalPerspectiveDsl.g:14403:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
     public final void rule__XIfExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14353:1: ( ( 'if' ) )
-            // InternalPerspectiveDsl.g:14354:1: ( 'if' )
+            // InternalPerspectiveDsl.g:14407:1: ( ( 'if' ) )
+            // InternalPerspectiveDsl.g:14408:1: ( 'if' )
             {
-            // InternalPerspectiveDsl.g:14354:1: ( 'if' )
-            // InternalPerspectiveDsl.g:14355:2: 'if'
+            // InternalPerspectiveDsl.g:14408:1: ( 'if' )
+            // InternalPerspectiveDsl.g:14409:2: 'if'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
             }
-            match(input,104,FOLLOW_2); if (state.failed) return ;
+            match(input,106,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
             }
@@ -47492,14 +47657,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__2"
-    // InternalPerspectiveDsl.g:14364:1: rule__XIfExpression__Group__2 : rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:14418:1: rule__XIfExpression__Group__2 : rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 ;
     public final void rule__XIfExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14368:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
-            // InternalPerspectiveDsl.g:14369:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
+            // InternalPerspectiveDsl.g:14422:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
+            // InternalPerspectiveDsl.g:14423:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
             {
             pushFollow(FOLLOW_62);
             rule__XIfExpression__Group__2__Impl();
@@ -47530,22 +47695,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:14376:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:14430:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XIfExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14380:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:14381:1: ( '(' )
+            // InternalPerspectiveDsl.g:14434:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:14435:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:14381:1: ( '(' )
-            // InternalPerspectiveDsl.g:14382:2: '('
+            // InternalPerspectiveDsl.g:14435:1: ( '(' )
+            // InternalPerspectiveDsl.g:14436:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -47571,14 +47736,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__3"
-    // InternalPerspectiveDsl.g:14391:1: rule__XIfExpression__Group__3 : rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:14445:1: rule__XIfExpression__Group__3 : rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 ;
     public final void rule__XIfExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14395:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
-            // InternalPerspectiveDsl.g:14396:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
+            // InternalPerspectiveDsl.g:14449:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
+            // InternalPerspectiveDsl.g:14450:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
             {
             pushFollow(FOLLOW_107);
             rule__XIfExpression__Group__3__Impl();
@@ -47609,23 +47774,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:14403:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:14457:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
     public final void rule__XIfExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14407:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:14408:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalPerspectiveDsl.g:14461:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:14462:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:14408:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
-            // InternalPerspectiveDsl.g:14409:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalPerspectiveDsl.g:14462:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalPerspectiveDsl.g:14463:2: ( rule__XIfExpression__IfAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:14410:2: ( rule__XIfExpression__IfAssignment_3 )
-            // InternalPerspectiveDsl.g:14410:3: rule__XIfExpression__IfAssignment_3
+            // InternalPerspectiveDsl.g:14464:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalPerspectiveDsl.g:14464:3: rule__XIfExpression__IfAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__IfAssignment_3();
@@ -47660,14 +47825,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__4"
-    // InternalPerspectiveDsl.g:14418:1: rule__XIfExpression__Group__4 : rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:14472:1: rule__XIfExpression__Group__4 : rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 ;
     public final void rule__XIfExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14422:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
-            // InternalPerspectiveDsl.g:14423:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
+            // InternalPerspectiveDsl.g:14476:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
+            // InternalPerspectiveDsl.g:14477:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
             {
             pushFollow(FOLLOW_62);
             rule__XIfExpression__Group__4__Impl();
@@ -47698,22 +47863,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:14430:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:14484:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
     public final void rule__XIfExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14434:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:14435:1: ( ')' )
+            // InternalPerspectiveDsl.g:14488:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:14489:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:14435:1: ( ')' )
-            // InternalPerspectiveDsl.g:14436:2: ')'
+            // InternalPerspectiveDsl.g:14489:1: ( ')' )
+            // InternalPerspectiveDsl.g:14490:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
             }
@@ -47739,14 +47904,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__5"
-    // InternalPerspectiveDsl.g:14445:1: rule__XIfExpression__Group__5 : rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 ;
+    // InternalPerspectiveDsl.g:14499:1: rule__XIfExpression__Group__5 : rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 ;
     public final void rule__XIfExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14449:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
-            // InternalPerspectiveDsl.g:14450:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
+            // InternalPerspectiveDsl.g:14503:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
+            // InternalPerspectiveDsl.g:14504:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
             {
             pushFollow(FOLLOW_109);
             rule__XIfExpression__Group__5__Impl();
@@ -47777,23 +47942,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:14457:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
+    // InternalPerspectiveDsl.g:14511:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
     public final void rule__XIfExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14461:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
-            // InternalPerspectiveDsl.g:14462:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalPerspectiveDsl.g:14515:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:14516:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
             {
-            // InternalPerspectiveDsl.g:14462:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
-            // InternalPerspectiveDsl.g:14463:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalPerspectiveDsl.g:14516:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalPerspectiveDsl.g:14517:2: ( rule__XIfExpression__ThenAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:14464:2: ( rule__XIfExpression__ThenAssignment_5 )
-            // InternalPerspectiveDsl.g:14464:3: rule__XIfExpression__ThenAssignment_5
+            // InternalPerspectiveDsl.g:14518:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalPerspectiveDsl.g:14518:3: rule__XIfExpression__ThenAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__ThenAssignment_5();
@@ -47828,14 +47993,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__6"
-    // InternalPerspectiveDsl.g:14472:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
+    // InternalPerspectiveDsl.g:14526:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
     public final void rule__XIfExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14476:1: ( rule__XIfExpression__Group__6__Impl )
-            // InternalPerspectiveDsl.g:14477:2: rule__XIfExpression__Group__6__Impl
+            // InternalPerspectiveDsl.g:14530:1: ( rule__XIfExpression__Group__6__Impl )
+            // InternalPerspectiveDsl.g:14531:2: rule__XIfExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group__6__Impl();
@@ -47861,26 +48026,26 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__6__Impl"
-    // InternalPerspectiveDsl.g:14483:1: rule__XIfExpression__Group__6__Impl : ( ( rule__XIfExpression__Group_6__0 )? ) ;
+    // InternalPerspectiveDsl.g:14537:1: rule__XIfExpression__Group__6__Impl : ( ( rule__XIfExpression__Group_6__0 )? ) ;
     public final void rule__XIfExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14487:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
-            // InternalPerspectiveDsl.g:14488:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalPerspectiveDsl.g:14541:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
+            // InternalPerspectiveDsl.g:14542:1: ( ( rule__XIfExpression__Group_6__0 )? )
             {
-            // InternalPerspectiveDsl.g:14488:1: ( ( rule__XIfExpression__Group_6__0 )? )
-            // InternalPerspectiveDsl.g:14489:2: ( rule__XIfExpression__Group_6__0 )?
+            // InternalPerspectiveDsl.g:14542:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalPerspectiveDsl.g:14543:2: ( rule__XIfExpression__Group_6__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getGroup_6()); 
             }
-            // InternalPerspectiveDsl.g:14490:2: ( rule__XIfExpression__Group_6__0 )?
+            // InternalPerspectiveDsl.g:14544:2: ( rule__XIfExpression__Group_6__0 )?
             int alt101=2;
             int LA101_0 = input.LA(1);
 
-            if ( (LA101_0==105) ) {
+            if ( (LA101_0==107) ) {
                 int LA101_1 = input.LA(2);
 
                 if ( (synpred160_InternalPerspectiveDsl()) ) {
@@ -47889,7 +48054,7 @@
             }
             switch (alt101) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:14490:3: rule__XIfExpression__Group_6__0
+                    // InternalPerspectiveDsl.g:14544:3: rule__XIfExpression__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XIfExpression__Group_6__0();
@@ -47927,14 +48092,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__0"
-    // InternalPerspectiveDsl.g:14499:1: rule__XIfExpression__Group_6__0 : rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 ;
+    // InternalPerspectiveDsl.g:14553:1: rule__XIfExpression__Group_6__0 : rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 ;
     public final void rule__XIfExpression__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14503:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
-            // InternalPerspectiveDsl.g:14504:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
+            // InternalPerspectiveDsl.g:14557:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
+            // InternalPerspectiveDsl.g:14558:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
             {
             pushFollow(FOLLOW_62);
             rule__XIfExpression__Group_6__0__Impl();
@@ -47965,25 +48130,25 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__0__Impl"
-    // InternalPerspectiveDsl.g:14511:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
+    // InternalPerspectiveDsl.g:14565:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
     public final void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14515:1: ( ( ( 'else' ) ) )
-            // InternalPerspectiveDsl.g:14516:1: ( ( 'else' ) )
+            // InternalPerspectiveDsl.g:14569:1: ( ( ( 'else' ) ) )
+            // InternalPerspectiveDsl.g:14570:1: ( ( 'else' ) )
             {
-            // InternalPerspectiveDsl.g:14516:1: ( ( 'else' ) )
-            // InternalPerspectiveDsl.g:14517:2: ( 'else' )
+            // InternalPerspectiveDsl.g:14570:1: ( ( 'else' ) )
+            // InternalPerspectiveDsl.g:14571:2: ( 'else' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); 
             }
-            // InternalPerspectiveDsl.g:14518:2: ( 'else' )
-            // InternalPerspectiveDsl.g:14518:3: 'else'
+            // InternalPerspectiveDsl.g:14572:2: ( 'else' )
+            // InternalPerspectiveDsl.g:14572:3: 'else'
             {
-            match(input,105,FOLLOW_2); if (state.failed) return ;
+            match(input,107,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -48012,14 +48177,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__1"
-    // InternalPerspectiveDsl.g:14526:1: rule__XIfExpression__Group_6__1 : rule__XIfExpression__Group_6__1__Impl ;
+    // InternalPerspectiveDsl.g:14580:1: rule__XIfExpression__Group_6__1 : rule__XIfExpression__Group_6__1__Impl ;
     public final void rule__XIfExpression__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14530:1: ( rule__XIfExpression__Group_6__1__Impl )
-            // InternalPerspectiveDsl.g:14531:2: rule__XIfExpression__Group_6__1__Impl
+            // InternalPerspectiveDsl.g:14584:1: ( rule__XIfExpression__Group_6__1__Impl )
+            // InternalPerspectiveDsl.g:14585:2: rule__XIfExpression__Group_6__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group_6__1__Impl();
@@ -48045,23 +48210,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__1__Impl"
-    // InternalPerspectiveDsl.g:14537:1: rule__XIfExpression__Group_6__1__Impl : ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) ;
+    // InternalPerspectiveDsl.g:14591:1: rule__XIfExpression__Group_6__1__Impl : ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) ;
     public final void rule__XIfExpression__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14541:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
-            // InternalPerspectiveDsl.g:14542:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalPerspectiveDsl.g:14595:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
+            // InternalPerspectiveDsl.g:14596:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
             {
-            // InternalPerspectiveDsl.g:14542:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
-            // InternalPerspectiveDsl.g:14543:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalPerspectiveDsl.g:14596:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalPerspectiveDsl.g:14597:2: ( rule__XIfExpression__ElseAssignment_6_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); 
             }
-            // InternalPerspectiveDsl.g:14544:2: ( rule__XIfExpression__ElseAssignment_6_1 )
-            // InternalPerspectiveDsl.g:14544:3: rule__XIfExpression__ElseAssignment_6_1
+            // InternalPerspectiveDsl.g:14598:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalPerspectiveDsl.g:14598:3: rule__XIfExpression__ElseAssignment_6_1
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__ElseAssignment_6_1();
@@ -48096,14 +48261,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__0"
-    // InternalPerspectiveDsl.g:14553:1: rule__XSwitchExpression__Group__0 : rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:14607:1: rule__XSwitchExpression__Group__0 : rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 ;
     public final void rule__XSwitchExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14557:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
-            // InternalPerspectiveDsl.g:14558:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
+            // InternalPerspectiveDsl.g:14611:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
+            // InternalPerspectiveDsl.g:14612:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
             {
             pushFollow(FOLLOW_110);
             rule__XSwitchExpression__Group__0__Impl();
@@ -48134,23 +48299,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:14565:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:14619:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
     public final void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14569:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:14570:1: ( () )
+            // InternalPerspectiveDsl.g:14623:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:14624:1: ( () )
             {
-            // InternalPerspectiveDsl.g:14570:1: ( () )
-            // InternalPerspectiveDsl.g:14571:2: ()
+            // InternalPerspectiveDsl.g:14624:1: ( () )
+            // InternalPerspectiveDsl.g:14625:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:14572:2: ()
-            // InternalPerspectiveDsl.g:14572:3: 
+            // InternalPerspectiveDsl.g:14626:2: ()
+            // InternalPerspectiveDsl.g:14626:3: 
             {
             }
 
@@ -48175,14 +48340,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__1"
-    // InternalPerspectiveDsl.g:14580:1: rule__XSwitchExpression__Group__1 : rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:14634:1: rule__XSwitchExpression__Group__1 : rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 ;
     public final void rule__XSwitchExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14584:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
-            // InternalPerspectiveDsl.g:14585:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
+            // InternalPerspectiveDsl.g:14638:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
+            // InternalPerspectiveDsl.g:14639:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
             {
             pushFollow(FOLLOW_111);
             rule__XSwitchExpression__Group__1__Impl();
@@ -48213,22 +48378,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:14592:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
+    // InternalPerspectiveDsl.g:14646:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
     public final void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14596:1: ( ( 'switch' ) )
-            // InternalPerspectiveDsl.g:14597:1: ( 'switch' )
+            // InternalPerspectiveDsl.g:14650:1: ( ( 'switch' ) )
+            // InternalPerspectiveDsl.g:14651:1: ( 'switch' )
             {
-            // InternalPerspectiveDsl.g:14597:1: ( 'switch' )
-            // InternalPerspectiveDsl.g:14598:2: 'switch'
+            // InternalPerspectiveDsl.g:14651:1: ( 'switch' )
+            // InternalPerspectiveDsl.g:14652:2: 'switch'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
             }
-            match(input,106,FOLLOW_2); if (state.failed) return ;
+            match(input,108,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
             }
@@ -48254,14 +48419,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__2"
-    // InternalPerspectiveDsl.g:14607:1: rule__XSwitchExpression__Group__2 : rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:14661:1: rule__XSwitchExpression__Group__2 : rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 ;
     public final void rule__XSwitchExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14611:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
-            // InternalPerspectiveDsl.g:14612:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
+            // InternalPerspectiveDsl.g:14665:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
+            // InternalPerspectiveDsl.g:14666:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
             {
             pushFollow(FOLLOW_8);
             rule__XSwitchExpression__Group__2__Impl();
@@ -48292,23 +48457,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:14619:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
+    // InternalPerspectiveDsl.g:14673:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
     public final void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14623:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
-            // InternalPerspectiveDsl.g:14624:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:14677:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
+            // InternalPerspectiveDsl.g:14678:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
             {
-            // InternalPerspectiveDsl.g:14624:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
-            // InternalPerspectiveDsl.g:14625:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalPerspectiveDsl.g:14678:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:14679:2: ( rule__XSwitchExpression__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); 
             }
-            // InternalPerspectiveDsl.g:14626:2: ( rule__XSwitchExpression__Alternatives_2 )
-            // InternalPerspectiveDsl.g:14626:3: rule__XSwitchExpression__Alternatives_2
+            // InternalPerspectiveDsl.g:14680:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalPerspectiveDsl.g:14680:3: rule__XSwitchExpression__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Alternatives_2();
@@ -48343,14 +48508,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__3"
-    // InternalPerspectiveDsl.g:14634:1: rule__XSwitchExpression__Group__3 : rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:14688:1: rule__XSwitchExpression__Group__3 : rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 ;
     public final void rule__XSwitchExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14638:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
-            // InternalPerspectiveDsl.g:14639:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
+            // InternalPerspectiveDsl.g:14692:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
+            // InternalPerspectiveDsl.g:14693:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
             {
             pushFollow(FOLLOW_112);
             rule__XSwitchExpression__Group__3__Impl();
@@ -48381,17 +48546,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:14646:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:14700:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
     public final void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14650:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:14651:1: ( '{' )
+            // InternalPerspectiveDsl.g:14704:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:14705:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:14651:1: ( '{' )
-            // InternalPerspectiveDsl.g:14652:2: '{'
+            // InternalPerspectiveDsl.g:14705:1: ( '{' )
+            // InternalPerspectiveDsl.g:14706:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
@@ -48422,14 +48587,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__4"
-    // InternalPerspectiveDsl.g:14661:1: rule__XSwitchExpression__Group__4 : rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:14715:1: rule__XSwitchExpression__Group__4 : rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 ;
     public final void rule__XSwitchExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14665:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
-            // InternalPerspectiveDsl.g:14666:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
+            // InternalPerspectiveDsl.g:14719:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
+            // InternalPerspectiveDsl.g:14720:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
             {
             pushFollow(FOLLOW_112);
             rule__XSwitchExpression__Group__4__Impl();
@@ -48460,35 +48625,35 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:14673:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
+    // InternalPerspectiveDsl.g:14727:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
     public final void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14677:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
-            // InternalPerspectiveDsl.g:14678:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalPerspectiveDsl.g:14731:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
+            // InternalPerspectiveDsl.g:14732:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
             {
-            // InternalPerspectiveDsl.g:14678:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
-            // InternalPerspectiveDsl.g:14679:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            // InternalPerspectiveDsl.g:14732:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalPerspectiveDsl.g:14733:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); 
             }
-            // InternalPerspectiveDsl.g:14680:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            // InternalPerspectiveDsl.g:14734:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
             loop102:
             do {
                 int alt102=2;
                 int LA102_0 = input.LA(1);
 
-                if ( (LA102_0==RULE_ID||LA102_0==31||LA102_0==96||LA102_0==98||LA102_0==107||LA102_0==109) ) {
+                if ( (LA102_0==RULE_ID||LA102_0==31||LA102_0==98||LA102_0==100||LA102_0==109||LA102_0==111) ) {
                     alt102=1;
                 }
 
 
                 switch (alt102) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:14680:3: rule__XSwitchExpression__CasesAssignment_4
+            	    // InternalPerspectiveDsl.g:14734:3: rule__XSwitchExpression__CasesAssignment_4
             	    {
             	    pushFollow(FOLLOW_113);
             	    rule__XSwitchExpression__CasesAssignment_4();
@@ -48529,14 +48694,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__5"
-    // InternalPerspectiveDsl.g:14688:1: rule__XSwitchExpression__Group__5 : rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 ;
+    // InternalPerspectiveDsl.g:14742:1: rule__XSwitchExpression__Group__5 : rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 ;
     public final void rule__XSwitchExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14692:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
-            // InternalPerspectiveDsl.g:14693:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
+            // InternalPerspectiveDsl.g:14746:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
+            // InternalPerspectiveDsl.g:14747:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
             {
             pushFollow(FOLLOW_112);
             rule__XSwitchExpression__Group__5__Impl();
@@ -48567,31 +48732,31 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:14700:1: rule__XSwitchExpression__Group__5__Impl : ( ( rule__XSwitchExpression__Group_5__0 )? ) ;
+    // InternalPerspectiveDsl.g:14754:1: rule__XSwitchExpression__Group__5__Impl : ( ( rule__XSwitchExpression__Group_5__0 )? ) ;
     public final void rule__XSwitchExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14704:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
-            // InternalPerspectiveDsl.g:14705:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalPerspectiveDsl.g:14758:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
+            // InternalPerspectiveDsl.g:14759:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
             {
-            // InternalPerspectiveDsl.g:14705:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
-            // InternalPerspectiveDsl.g:14706:2: ( rule__XSwitchExpression__Group_5__0 )?
+            // InternalPerspectiveDsl.g:14759:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalPerspectiveDsl.g:14760:2: ( rule__XSwitchExpression__Group_5__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); 
             }
-            // InternalPerspectiveDsl.g:14707:2: ( rule__XSwitchExpression__Group_5__0 )?
+            // InternalPerspectiveDsl.g:14761:2: ( rule__XSwitchExpression__Group_5__0 )?
             int alt103=2;
             int LA103_0 = input.LA(1);
 
-            if ( (LA103_0==108) ) {
+            if ( (LA103_0==110) ) {
                 alt103=1;
             }
             switch (alt103) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:14707:3: rule__XSwitchExpression__Group_5__0
+                    // InternalPerspectiveDsl.g:14761:3: rule__XSwitchExpression__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_5__0();
@@ -48629,14 +48794,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__6"
-    // InternalPerspectiveDsl.g:14715:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
+    // InternalPerspectiveDsl.g:14769:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
     public final void rule__XSwitchExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14719:1: ( rule__XSwitchExpression__Group__6__Impl )
-            // InternalPerspectiveDsl.g:14720:2: rule__XSwitchExpression__Group__6__Impl
+            // InternalPerspectiveDsl.g:14773:1: ( rule__XSwitchExpression__Group__6__Impl )
+            // InternalPerspectiveDsl.g:14774:2: rule__XSwitchExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group__6__Impl();
@@ -48662,17 +48827,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__6__Impl"
-    // InternalPerspectiveDsl.g:14726:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:14780:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
     public final void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14730:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:14731:1: ( '}' )
+            // InternalPerspectiveDsl.g:14784:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:14785:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:14731:1: ( '}' )
-            // InternalPerspectiveDsl.g:14732:2: '}'
+            // InternalPerspectiveDsl.g:14785:1: ( '}' )
+            // InternalPerspectiveDsl.g:14786:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
@@ -48703,14 +48868,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__0"
-    // InternalPerspectiveDsl.g:14742:1: rule__XSwitchExpression__Group_2_0__0 : rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 ;
+    // InternalPerspectiveDsl.g:14796:1: rule__XSwitchExpression__Group_2_0__0 : rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 ;
     public final void rule__XSwitchExpression__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14746:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
-            // InternalPerspectiveDsl.g:14747:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
+            // InternalPerspectiveDsl.g:14800:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
+            // InternalPerspectiveDsl.g:14801:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
             {
             pushFollow(FOLLOW_62);
             rule__XSwitchExpression__Group_2_0__0__Impl();
@@ -48741,23 +48906,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__0__Impl"
-    // InternalPerspectiveDsl.g:14754:1: rule__XSwitchExpression__Group_2_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:14808:1: rule__XSwitchExpression__Group_2_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14758:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:14759:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14812:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14813:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:14759:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
-            // InternalPerspectiveDsl.g:14760:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:14813:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14814:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); 
             }
-            // InternalPerspectiveDsl.g:14761:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
-            // InternalPerspectiveDsl.g:14761:3: rule__XSwitchExpression__Group_2_0_0__0
+            // InternalPerspectiveDsl.g:14815:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:14815:3: rule__XSwitchExpression__Group_2_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0__0();
@@ -48792,14 +48957,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__1"
-    // InternalPerspectiveDsl.g:14769:1: rule__XSwitchExpression__Group_2_0__1 : rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 ;
+    // InternalPerspectiveDsl.g:14823:1: rule__XSwitchExpression__Group_2_0__1 : rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 ;
     public final void rule__XSwitchExpression__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14773:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
-            // InternalPerspectiveDsl.g:14774:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
+            // InternalPerspectiveDsl.g:14827:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
+            // InternalPerspectiveDsl.g:14828:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
             {
             pushFollow(FOLLOW_107);
             rule__XSwitchExpression__Group_2_0__1__Impl();
@@ -48830,23 +48995,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__1__Impl"
-    // InternalPerspectiveDsl.g:14781:1: rule__XSwitchExpression__Group_2_0__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:14835:1: rule__XSwitchExpression__Group_2_0__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14785:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
-            // InternalPerspectiveDsl.g:14786:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalPerspectiveDsl.g:14839:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
+            // InternalPerspectiveDsl.g:14840:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:14786:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
-            // InternalPerspectiveDsl.g:14787:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalPerspectiveDsl.g:14840:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalPerspectiveDsl.g:14841:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); 
             }
-            // InternalPerspectiveDsl.g:14788:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
-            // InternalPerspectiveDsl.g:14788:3: rule__XSwitchExpression__SwitchAssignment_2_0_1
+            // InternalPerspectiveDsl.g:14842:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalPerspectiveDsl.g:14842:3: rule__XSwitchExpression__SwitchAssignment_2_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__SwitchAssignment_2_0_1();
@@ -48881,14 +49046,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__2"
-    // InternalPerspectiveDsl.g:14796:1: rule__XSwitchExpression__Group_2_0__2 : rule__XSwitchExpression__Group_2_0__2__Impl ;
+    // InternalPerspectiveDsl.g:14850:1: rule__XSwitchExpression__Group_2_0__2 : rule__XSwitchExpression__Group_2_0__2__Impl ;
     public final void rule__XSwitchExpression__Group_2_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14800:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
-            // InternalPerspectiveDsl.g:14801:2: rule__XSwitchExpression__Group_2_0__2__Impl
+            // InternalPerspectiveDsl.g:14854:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
+            // InternalPerspectiveDsl.g:14855:2: rule__XSwitchExpression__Group_2_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0__2__Impl();
@@ -48914,22 +49079,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__2__Impl"
-    // InternalPerspectiveDsl.g:14807:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:14861:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
     public final void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14811:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:14812:1: ( ')' )
+            // InternalPerspectiveDsl.g:14865:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:14866:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:14812:1: ( ')' )
-            // InternalPerspectiveDsl.g:14813:2: ')'
+            // InternalPerspectiveDsl.g:14866:1: ( ')' )
+            // InternalPerspectiveDsl.g:14867:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
             }
@@ -48955,14 +49120,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0"
-    // InternalPerspectiveDsl.g:14823:1: rule__XSwitchExpression__Group_2_0_0__0 : rule__XSwitchExpression__Group_2_0_0__0__Impl ;
+    // InternalPerspectiveDsl.g:14877:1: rule__XSwitchExpression__Group_2_0_0__0 : rule__XSwitchExpression__Group_2_0_0__0__Impl ;
     public final void rule__XSwitchExpression__Group_2_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14827:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
-            // InternalPerspectiveDsl.g:14828:2: rule__XSwitchExpression__Group_2_0_0__0__Impl
+            // InternalPerspectiveDsl.g:14881:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
+            // InternalPerspectiveDsl.g:14882:2: rule__XSwitchExpression__Group_2_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0__0__Impl();
@@ -48988,23 +49153,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:14834:1: rule__XSwitchExpression__Group_2_0_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:14888:1: rule__XSwitchExpression__Group_2_0_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14838:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:14839:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14892:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:14893:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:14839:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
-            // InternalPerspectiveDsl.g:14840:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalPerspectiveDsl.g:14893:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalPerspectiveDsl.g:14894:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:14841:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
-            // InternalPerspectiveDsl.g:14841:3: rule__XSwitchExpression__Group_2_0_0_0__0
+            // InternalPerspectiveDsl.g:14895:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalPerspectiveDsl.g:14895:3: rule__XSwitchExpression__Group_2_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0_0__0();
@@ -49039,14 +49204,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0"
-    // InternalPerspectiveDsl.g:14850:1: rule__XSwitchExpression__Group_2_0_0_0__0 : rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 ;
+    // InternalPerspectiveDsl.g:14904:1: rule__XSwitchExpression__Group_2_0_0_0__0 : rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14854:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
-            // InternalPerspectiveDsl.g:14855:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
+            // InternalPerspectiveDsl.g:14908:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
+            // InternalPerspectiveDsl.g:14909:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
             {
             pushFollow(FOLLOW_79);
             rule__XSwitchExpression__Group_2_0_0_0__0__Impl();
@@ -49077,22 +49242,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:14862:1: rule__XSwitchExpression__Group_2_0_0_0__0__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:14916:1: rule__XSwitchExpression__Group_2_0_0_0__0__Impl : ( '(' ) ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14866:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:14867:1: ( '(' )
+            // InternalPerspectiveDsl.g:14920:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:14921:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:14867:1: ( '(' )
-            // InternalPerspectiveDsl.g:14868:2: '('
+            // InternalPerspectiveDsl.g:14921:1: ( '(' )
+            // InternalPerspectiveDsl.g:14922:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
             }
@@ -49118,14 +49283,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1"
-    // InternalPerspectiveDsl.g:14877:1: rule__XSwitchExpression__Group_2_0_0_0__1 : rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 ;
+    // InternalPerspectiveDsl.g:14931:1: rule__XSwitchExpression__Group_2_0_0_0__1 : rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14881:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
-            // InternalPerspectiveDsl.g:14882:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
+            // InternalPerspectiveDsl.g:14935:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
+            // InternalPerspectiveDsl.g:14936:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
             {
             pushFollow(FOLLOW_114);
             rule__XSwitchExpression__Group_2_0_0_0__1__Impl();
@@ -49156,23 +49321,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:14889:1: rule__XSwitchExpression__Group_2_0_0_0__1__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:14943:1: rule__XSwitchExpression__Group_2_0_0_0__1__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14893:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:14894:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:14947:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:14948:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:14894:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
-            // InternalPerspectiveDsl.g:14895:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalPerspectiveDsl.g:14948:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalPerspectiveDsl.g:14949:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:14896:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
-            // InternalPerspectiveDsl.g:14896:3: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
+            // InternalPerspectiveDsl.g:14950:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalPerspectiveDsl.g:14950:3: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1();
@@ -49207,14 +49372,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2"
-    // InternalPerspectiveDsl.g:14904:1: rule__XSwitchExpression__Group_2_0_0_0__2 : rule__XSwitchExpression__Group_2_0_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:14958:1: rule__XSwitchExpression__Group_2_0_0_0__2 : rule__XSwitchExpression__Group_2_0_0_0__2__Impl ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14908:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:14909:2: rule__XSwitchExpression__Group_2_0_0_0__2__Impl
+            // InternalPerspectiveDsl.g:14962:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:14963:2: rule__XSwitchExpression__Group_2_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0_0__2__Impl();
@@ -49240,22 +49405,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:14915:1: rule__XSwitchExpression__Group_2_0_0_0__2__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:14969:1: rule__XSwitchExpression__Group_2_0_0_0__2__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14919:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:14920:1: ( ':' )
+            // InternalPerspectiveDsl.g:14973:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:14974:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:14920:1: ( ':' )
-            // InternalPerspectiveDsl.g:14921:2: ':'
+            // InternalPerspectiveDsl.g:14974:1: ( ':' )
+            // InternalPerspectiveDsl.g:14975:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
             }
-            match(input,107,FOLLOW_2); if (state.failed) return ;
+            match(input,109,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
             }
@@ -49281,14 +49446,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__0"
-    // InternalPerspectiveDsl.g:14931:1: rule__XSwitchExpression__Group_2_1__0 : rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 ;
+    // InternalPerspectiveDsl.g:14985:1: rule__XSwitchExpression__Group_2_1__0 : rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 ;
     public final void rule__XSwitchExpression__Group_2_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14935:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
-            // InternalPerspectiveDsl.g:14936:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
+            // InternalPerspectiveDsl.g:14989:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
+            // InternalPerspectiveDsl.g:14990:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
             {
             pushFollow(FOLLOW_111);
             rule__XSwitchExpression__Group_2_1__0__Impl();
@@ -49319,27 +49484,27 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__0__Impl"
-    // InternalPerspectiveDsl.g:14943:1: rule__XSwitchExpression__Group_2_1__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) ;
+    // InternalPerspectiveDsl.g:14997:1: rule__XSwitchExpression__Group_2_1__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) ;
     public final void rule__XSwitchExpression__Group_2_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14947:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
-            // InternalPerspectiveDsl.g:14948:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalPerspectiveDsl.g:15001:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
+            // InternalPerspectiveDsl.g:15002:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
             {
-            // InternalPerspectiveDsl.g:14948:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
-            // InternalPerspectiveDsl.g:14949:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            // InternalPerspectiveDsl.g:15002:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalPerspectiveDsl.g:15003:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); 
             }
-            // InternalPerspectiveDsl.g:14950:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            // InternalPerspectiveDsl.g:15004:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
             int alt104=2;
             alt104 = dfa104.predict(input);
             switch (alt104) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:14950:3: rule__XSwitchExpression__Group_2_1_0__0
+                    // InternalPerspectiveDsl.g:15004:3: rule__XSwitchExpression__Group_2_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_1_0__0();
@@ -49377,14 +49542,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__1"
-    // InternalPerspectiveDsl.g:14958:1: rule__XSwitchExpression__Group_2_1__1 : rule__XSwitchExpression__Group_2_1__1__Impl ;
+    // InternalPerspectiveDsl.g:15012:1: rule__XSwitchExpression__Group_2_1__1 : rule__XSwitchExpression__Group_2_1__1__Impl ;
     public final void rule__XSwitchExpression__Group_2_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14962:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
-            // InternalPerspectiveDsl.g:14963:2: rule__XSwitchExpression__Group_2_1__1__Impl
+            // InternalPerspectiveDsl.g:15016:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
+            // InternalPerspectiveDsl.g:15017:2: rule__XSwitchExpression__Group_2_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1__1__Impl();
@@ -49410,23 +49575,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__1__Impl"
-    // InternalPerspectiveDsl.g:14969:1: rule__XSwitchExpression__Group_2_1__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:15023:1: rule__XSwitchExpression__Group_2_1__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) ;
     public final void rule__XSwitchExpression__Group_2_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14973:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
-            // InternalPerspectiveDsl.g:14974:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalPerspectiveDsl.g:15027:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
+            // InternalPerspectiveDsl.g:15028:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:14974:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
-            // InternalPerspectiveDsl.g:14975:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalPerspectiveDsl.g:15028:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalPerspectiveDsl.g:15029:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); 
             }
-            // InternalPerspectiveDsl.g:14976:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
-            // InternalPerspectiveDsl.g:14976:3: rule__XSwitchExpression__SwitchAssignment_2_1_1
+            // InternalPerspectiveDsl.g:15030:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalPerspectiveDsl.g:15030:3: rule__XSwitchExpression__SwitchAssignment_2_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__SwitchAssignment_2_1_1();
@@ -49461,14 +49626,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0"
-    // InternalPerspectiveDsl.g:14985:1: rule__XSwitchExpression__Group_2_1_0__0 : rule__XSwitchExpression__Group_2_1_0__0__Impl ;
+    // InternalPerspectiveDsl.g:15039:1: rule__XSwitchExpression__Group_2_1_0__0 : rule__XSwitchExpression__Group_2_1_0__0__Impl ;
     public final void rule__XSwitchExpression__Group_2_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:14989:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
-            // InternalPerspectiveDsl.g:14990:2: rule__XSwitchExpression__Group_2_1_0__0__Impl
+            // InternalPerspectiveDsl.g:15043:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
+            // InternalPerspectiveDsl.g:15044:2: rule__XSwitchExpression__Group_2_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0__0__Impl();
@@ -49494,23 +49659,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:14996:1: rule__XSwitchExpression__Group_2_1_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:15050:1: rule__XSwitchExpression__Group_2_1_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15000:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:15001:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:15054:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:15055:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:15001:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
-            // InternalPerspectiveDsl.g:15002:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalPerspectiveDsl.g:15055:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalPerspectiveDsl.g:15056:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:15003:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
-            // InternalPerspectiveDsl.g:15003:3: rule__XSwitchExpression__Group_2_1_0_0__0
+            // InternalPerspectiveDsl.g:15057:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalPerspectiveDsl.g:15057:3: rule__XSwitchExpression__Group_2_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0_0__0();
@@ -49545,14 +49710,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0"
-    // InternalPerspectiveDsl.g:15012:1: rule__XSwitchExpression__Group_2_1_0_0__0 : rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 ;
+    // InternalPerspectiveDsl.g:15066:1: rule__XSwitchExpression__Group_2_1_0_0__0 : rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15016:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
-            // InternalPerspectiveDsl.g:15017:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
+            // InternalPerspectiveDsl.g:15070:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
+            // InternalPerspectiveDsl.g:15071:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
             {
             pushFollow(FOLLOW_114);
             rule__XSwitchExpression__Group_2_1_0_0__0__Impl();
@@ -49583,23 +49748,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:15024:1: rule__XSwitchExpression__Group_2_1_0_0__0__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:15078:1: rule__XSwitchExpression__Group_2_1_0_0__0__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15028:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
-            // InternalPerspectiveDsl.g:15029:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:15082:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:15083:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:15029:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
-            // InternalPerspectiveDsl.g:15030:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalPerspectiveDsl.g:15083:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalPerspectiveDsl.g:15084:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:15031:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
-            // InternalPerspectiveDsl.g:15031:3: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
+            // InternalPerspectiveDsl.g:15085:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalPerspectiveDsl.g:15085:3: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0();
@@ -49634,14 +49799,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1"
-    // InternalPerspectiveDsl.g:15039:1: rule__XSwitchExpression__Group_2_1_0_0__1 : rule__XSwitchExpression__Group_2_1_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:15093:1: rule__XSwitchExpression__Group_2_1_0_0__1 : rule__XSwitchExpression__Group_2_1_0_0__1__Impl ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15043:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:15044:2: rule__XSwitchExpression__Group_2_1_0_0__1__Impl
+            // InternalPerspectiveDsl.g:15097:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:15098:2: rule__XSwitchExpression__Group_2_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0_0__1__Impl();
@@ -49667,22 +49832,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:15050:1: rule__XSwitchExpression__Group_2_1_0_0__1__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:15104:1: rule__XSwitchExpression__Group_2_1_0_0__1__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15054:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:15055:1: ( ':' )
+            // InternalPerspectiveDsl.g:15108:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:15109:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:15055:1: ( ':' )
-            // InternalPerspectiveDsl.g:15056:2: ':'
+            // InternalPerspectiveDsl.g:15109:1: ( ':' )
+            // InternalPerspectiveDsl.g:15110:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
             }
-            match(input,107,FOLLOW_2); if (state.failed) return ;
+            match(input,109,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
             }
@@ -49708,14 +49873,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__0"
-    // InternalPerspectiveDsl.g:15066:1: rule__XSwitchExpression__Group_5__0 : rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 ;
+    // InternalPerspectiveDsl.g:15120:1: rule__XSwitchExpression__Group_5__0 : rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 ;
     public final void rule__XSwitchExpression__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15070:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
-            // InternalPerspectiveDsl.g:15071:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
+            // InternalPerspectiveDsl.g:15124:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
+            // InternalPerspectiveDsl.g:15125:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
             {
             pushFollow(FOLLOW_114);
             rule__XSwitchExpression__Group_5__0__Impl();
@@ -49746,22 +49911,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__0__Impl"
-    // InternalPerspectiveDsl.g:15078:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
+    // InternalPerspectiveDsl.g:15132:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
     public final void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15082:1: ( ( 'default' ) )
-            // InternalPerspectiveDsl.g:15083:1: ( 'default' )
+            // InternalPerspectiveDsl.g:15136:1: ( ( 'default' ) )
+            // InternalPerspectiveDsl.g:15137:1: ( 'default' )
             {
-            // InternalPerspectiveDsl.g:15083:1: ( 'default' )
-            // InternalPerspectiveDsl.g:15084:2: 'default'
+            // InternalPerspectiveDsl.g:15137:1: ( 'default' )
+            // InternalPerspectiveDsl.g:15138:2: 'default'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
             }
-            match(input,108,FOLLOW_2); if (state.failed) return ;
+            match(input,110,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
             }
@@ -49787,14 +49952,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__1"
-    // InternalPerspectiveDsl.g:15093:1: rule__XSwitchExpression__Group_5__1 : rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 ;
+    // InternalPerspectiveDsl.g:15147:1: rule__XSwitchExpression__Group_5__1 : rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 ;
     public final void rule__XSwitchExpression__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15097:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
-            // InternalPerspectiveDsl.g:15098:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
+            // InternalPerspectiveDsl.g:15151:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
+            // InternalPerspectiveDsl.g:15152:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
             {
             pushFollow(FOLLOW_62);
             rule__XSwitchExpression__Group_5__1__Impl();
@@ -49825,22 +49990,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__1__Impl"
-    // InternalPerspectiveDsl.g:15105:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:15159:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15109:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:15110:1: ( ':' )
+            // InternalPerspectiveDsl.g:15163:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:15164:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:15110:1: ( ':' )
-            // InternalPerspectiveDsl.g:15111:2: ':'
+            // InternalPerspectiveDsl.g:15164:1: ( ':' )
+            // InternalPerspectiveDsl.g:15165:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
             }
-            match(input,107,FOLLOW_2); if (state.failed) return ;
+            match(input,109,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
             }
@@ -49866,14 +50031,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__2"
-    // InternalPerspectiveDsl.g:15120:1: rule__XSwitchExpression__Group_5__2 : rule__XSwitchExpression__Group_5__2__Impl ;
+    // InternalPerspectiveDsl.g:15174:1: rule__XSwitchExpression__Group_5__2 : rule__XSwitchExpression__Group_5__2__Impl ;
     public final void rule__XSwitchExpression__Group_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15124:1: ( rule__XSwitchExpression__Group_5__2__Impl )
-            // InternalPerspectiveDsl.g:15125:2: rule__XSwitchExpression__Group_5__2__Impl
+            // InternalPerspectiveDsl.g:15178:1: ( rule__XSwitchExpression__Group_5__2__Impl )
+            // InternalPerspectiveDsl.g:15179:2: rule__XSwitchExpression__Group_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_5__2__Impl();
@@ -49899,23 +50064,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__2__Impl"
-    // InternalPerspectiveDsl.g:15131:1: rule__XSwitchExpression__Group_5__2__Impl : ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) ;
+    // InternalPerspectiveDsl.g:15185:1: rule__XSwitchExpression__Group_5__2__Impl : ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) ;
     public final void rule__XSwitchExpression__Group_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15135:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
-            // InternalPerspectiveDsl.g:15136:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalPerspectiveDsl.g:15189:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
+            // InternalPerspectiveDsl.g:15190:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
             {
-            // InternalPerspectiveDsl.g:15136:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
-            // InternalPerspectiveDsl.g:15137:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalPerspectiveDsl.g:15190:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalPerspectiveDsl.g:15191:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); 
             }
-            // InternalPerspectiveDsl.g:15138:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
-            // InternalPerspectiveDsl.g:15138:3: rule__XSwitchExpression__DefaultAssignment_5_2
+            // InternalPerspectiveDsl.g:15192:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalPerspectiveDsl.g:15192:3: rule__XSwitchExpression__DefaultAssignment_5_2
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DefaultAssignment_5_2();
@@ -49950,14 +50115,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__0"
-    // InternalPerspectiveDsl.g:15147:1: rule__XCasePart__Group__0 : rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 ;
+    // InternalPerspectiveDsl.g:15201:1: rule__XCasePart__Group__0 : rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 ;
     public final void rule__XCasePart__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15151:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
-            // InternalPerspectiveDsl.g:15152:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
+            // InternalPerspectiveDsl.g:15205:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
+            // InternalPerspectiveDsl.g:15206:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
             {
             pushFollow(FOLLOW_115);
             rule__XCasePart__Group__0__Impl();
@@ -49988,23 +50153,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__0__Impl"
-    // InternalPerspectiveDsl.g:15159:1: rule__XCasePart__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:15213:1: rule__XCasePart__Group__0__Impl : ( () ) ;
     public final void rule__XCasePart__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15163:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:15164:1: ( () )
+            // InternalPerspectiveDsl.g:15217:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15218:1: ( () )
             {
-            // InternalPerspectiveDsl.g:15164:1: ( () )
-            // InternalPerspectiveDsl.g:15165:2: ()
+            // InternalPerspectiveDsl.g:15218:1: ( () )
+            // InternalPerspectiveDsl.g:15219:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); 
             }
-            // InternalPerspectiveDsl.g:15166:2: ()
-            // InternalPerspectiveDsl.g:15166:3: 
+            // InternalPerspectiveDsl.g:15220:2: ()
+            // InternalPerspectiveDsl.g:15220:3: 
             {
             }
 
@@ -50029,14 +50194,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__1"
-    // InternalPerspectiveDsl.g:15174:1: rule__XCasePart__Group__1 : rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 ;
+    // InternalPerspectiveDsl.g:15228:1: rule__XCasePart__Group__1 : rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 ;
     public final void rule__XCasePart__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15178:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
-            // InternalPerspectiveDsl.g:15179:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
+            // InternalPerspectiveDsl.g:15232:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
+            // InternalPerspectiveDsl.g:15233:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
             {
             pushFollow(FOLLOW_115);
             rule__XCasePart__Group__1__Impl();
@@ -50067,31 +50232,31 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__1__Impl"
-    // InternalPerspectiveDsl.g:15186:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
+    // InternalPerspectiveDsl.g:15240:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
     public final void rule__XCasePart__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15190:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
-            // InternalPerspectiveDsl.g:15191:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalPerspectiveDsl.g:15244:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
+            // InternalPerspectiveDsl.g:15245:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
             {
-            // InternalPerspectiveDsl.g:15191:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
-            // InternalPerspectiveDsl.g:15192:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            // InternalPerspectiveDsl.g:15245:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalPerspectiveDsl.g:15246:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:15193:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            // InternalPerspectiveDsl.g:15247:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
             int alt105=2;
             int LA105_0 = input.LA(1);
 
-            if ( (LA105_0==RULE_ID||LA105_0==31||LA105_0==96) ) {
+            if ( (LA105_0==RULE_ID||LA105_0==31||LA105_0==98) ) {
                 alt105=1;
             }
             switch (alt105) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:15193:3: rule__XCasePart__TypeGuardAssignment_1
+                    // InternalPerspectiveDsl.g:15247:3: rule__XCasePart__TypeGuardAssignment_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__TypeGuardAssignment_1();
@@ -50129,14 +50294,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__2"
-    // InternalPerspectiveDsl.g:15201:1: rule__XCasePart__Group__2 : rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 ;
+    // InternalPerspectiveDsl.g:15255:1: rule__XCasePart__Group__2 : rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 ;
     public final void rule__XCasePart__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15205:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
-            // InternalPerspectiveDsl.g:15206:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
+            // InternalPerspectiveDsl.g:15259:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
+            // InternalPerspectiveDsl.g:15260:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
             {
             pushFollow(FOLLOW_115);
             rule__XCasePart__Group__2__Impl();
@@ -50167,31 +50332,31 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__2__Impl"
-    // InternalPerspectiveDsl.g:15213:1: rule__XCasePart__Group__2__Impl : ( ( rule__XCasePart__Group_2__0 )? ) ;
+    // InternalPerspectiveDsl.g:15267:1: rule__XCasePart__Group__2__Impl : ( ( rule__XCasePart__Group_2__0 )? ) ;
     public final void rule__XCasePart__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15217:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
-            // InternalPerspectiveDsl.g:15218:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalPerspectiveDsl.g:15271:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
+            // InternalPerspectiveDsl.g:15272:1: ( ( rule__XCasePart__Group_2__0 )? )
             {
-            // InternalPerspectiveDsl.g:15218:1: ( ( rule__XCasePart__Group_2__0 )? )
-            // InternalPerspectiveDsl.g:15219:2: ( rule__XCasePart__Group_2__0 )?
+            // InternalPerspectiveDsl.g:15272:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalPerspectiveDsl.g:15273:2: ( rule__XCasePart__Group_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getGroup_2()); 
             }
-            // InternalPerspectiveDsl.g:15220:2: ( rule__XCasePart__Group_2__0 )?
+            // InternalPerspectiveDsl.g:15274:2: ( rule__XCasePart__Group_2__0 )?
             int alt106=2;
             int LA106_0 = input.LA(1);
 
-            if ( (LA106_0==109) ) {
+            if ( (LA106_0==111) ) {
                 alt106=1;
             }
             switch (alt106) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:15220:3: rule__XCasePart__Group_2__0
+                    // InternalPerspectiveDsl.g:15274:3: rule__XCasePart__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__Group_2__0();
@@ -50229,14 +50394,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__3"
-    // InternalPerspectiveDsl.g:15228:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:15282:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
     public final void rule__XCasePart__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15232:1: ( rule__XCasePart__Group__3__Impl )
-            // InternalPerspectiveDsl.g:15233:2: rule__XCasePart__Group__3__Impl
+            // InternalPerspectiveDsl.g:15286:1: ( rule__XCasePart__Group__3__Impl )
+            // InternalPerspectiveDsl.g:15287:2: rule__XCasePart__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group__3__Impl();
@@ -50262,23 +50427,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__3__Impl"
-    // InternalPerspectiveDsl.g:15239:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
+    // InternalPerspectiveDsl.g:15293:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
     public final void rule__XCasePart__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15243:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
-            // InternalPerspectiveDsl.g:15244:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:15297:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
+            // InternalPerspectiveDsl.g:15298:1: ( ( rule__XCasePart__Alternatives_3 ) )
             {
-            // InternalPerspectiveDsl.g:15244:1: ( ( rule__XCasePart__Alternatives_3 ) )
-            // InternalPerspectiveDsl.g:15245:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalPerspectiveDsl.g:15298:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:15299:2: ( rule__XCasePart__Alternatives_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getAlternatives_3()); 
             }
-            // InternalPerspectiveDsl.g:15246:2: ( rule__XCasePart__Alternatives_3 )
-            // InternalPerspectiveDsl.g:15246:3: rule__XCasePart__Alternatives_3
+            // InternalPerspectiveDsl.g:15300:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalPerspectiveDsl.g:15300:3: rule__XCasePart__Alternatives_3
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Alternatives_3();
@@ -50313,14 +50478,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__0"
-    // InternalPerspectiveDsl.g:15255:1: rule__XCasePart__Group_2__0 : rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 ;
+    // InternalPerspectiveDsl.g:15309:1: rule__XCasePart__Group_2__0 : rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 ;
     public final void rule__XCasePart__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15259:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
-            // InternalPerspectiveDsl.g:15260:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
+            // InternalPerspectiveDsl.g:15313:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
+            // InternalPerspectiveDsl.g:15314:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
             {
             pushFollow(FOLLOW_62);
             rule__XCasePart__Group_2__0__Impl();
@@ -50351,22 +50516,22 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__0__Impl"
-    // InternalPerspectiveDsl.g:15267:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
+    // InternalPerspectiveDsl.g:15321:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
     public final void rule__XCasePart__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15271:1: ( ( 'case' ) )
-            // InternalPerspectiveDsl.g:15272:1: ( 'case' )
+            // InternalPerspectiveDsl.g:15325:1: ( ( 'case' ) )
+            // InternalPerspectiveDsl.g:15326:1: ( 'case' )
             {
-            // InternalPerspectiveDsl.g:15272:1: ( 'case' )
-            // InternalPerspectiveDsl.g:15273:2: 'case'
+            // InternalPerspectiveDsl.g:15326:1: ( 'case' )
+            // InternalPerspectiveDsl.g:15327:2: 'case'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
             }
-            match(input,109,FOLLOW_2); if (state.failed) return ;
+            match(input,111,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
             }
@@ -50392,14 +50557,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__1"
-    // InternalPerspectiveDsl.g:15282:1: rule__XCasePart__Group_2__1 : rule__XCasePart__Group_2__1__Impl ;
+    // InternalPerspectiveDsl.g:15336:1: rule__XCasePart__Group_2__1 : rule__XCasePart__Group_2__1__Impl ;
     public final void rule__XCasePart__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15286:1: ( rule__XCasePart__Group_2__1__Impl )
-            // InternalPerspectiveDsl.g:15287:2: rule__XCasePart__Group_2__1__Impl
+            // InternalPerspectiveDsl.g:15340:1: ( rule__XCasePart__Group_2__1__Impl )
+            // InternalPerspectiveDsl.g:15341:2: rule__XCasePart__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group_2__1__Impl();
@@ -50425,23 +50590,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__1__Impl"
-    // InternalPerspectiveDsl.g:15293:1: rule__XCasePart__Group_2__1__Impl : ( ( rule__XCasePart__CaseAssignment_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:15347:1: rule__XCasePart__Group_2__1__Impl : ( ( rule__XCasePart__CaseAssignment_2_1 ) ) ;
     public final void rule__XCasePart__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15297:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
-            // InternalPerspectiveDsl.g:15298:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalPerspectiveDsl.g:15351:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
+            // InternalPerspectiveDsl.g:15352:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:15298:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
-            // InternalPerspectiveDsl.g:15299:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalPerspectiveDsl.g:15352:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalPerspectiveDsl.g:15353:2: ( rule__XCasePart__CaseAssignment_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); 
             }
-            // InternalPerspectiveDsl.g:15300:2: ( rule__XCasePart__CaseAssignment_2_1 )
-            // InternalPerspectiveDsl.g:15300:3: rule__XCasePart__CaseAssignment_2_1
+            // InternalPerspectiveDsl.g:15354:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalPerspectiveDsl.g:15354:3: rule__XCasePart__CaseAssignment_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__CaseAssignment_2_1();
@@ -50476,14 +50641,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__0"
-    // InternalPerspectiveDsl.g:15309:1: rule__XCasePart__Group_3_0__0 : rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 ;
+    // InternalPerspectiveDsl.g:15363:1: rule__XCasePart__Group_3_0__0 : rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 ;
     public final void rule__XCasePart__Group_3_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15313:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
-            // InternalPerspectiveDsl.g:15314:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
+            // InternalPerspectiveDsl.g:15367:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:15368:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
             {
             pushFollow(FOLLOW_62);
             rule__XCasePart__Group_3_0__0__Impl();
@@ -50514,22 +50679,22 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__0__Impl"
-    // InternalPerspectiveDsl.g:15321:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:15375:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
     public final void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15325:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:15326:1: ( ':' )
+            // InternalPerspectiveDsl.g:15379:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:15380:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:15326:1: ( ':' )
-            // InternalPerspectiveDsl.g:15327:2: ':'
+            // InternalPerspectiveDsl.g:15380:1: ( ':' )
+            // InternalPerspectiveDsl.g:15381:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
             }
-            match(input,107,FOLLOW_2); if (state.failed) return ;
+            match(input,109,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
             }
@@ -50555,14 +50720,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__1"
-    // InternalPerspectiveDsl.g:15336:1: rule__XCasePart__Group_3_0__1 : rule__XCasePart__Group_3_0__1__Impl ;
+    // InternalPerspectiveDsl.g:15390:1: rule__XCasePart__Group_3_0__1 : rule__XCasePart__Group_3_0__1__Impl ;
     public final void rule__XCasePart__Group_3_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15340:1: ( rule__XCasePart__Group_3_0__1__Impl )
-            // InternalPerspectiveDsl.g:15341:2: rule__XCasePart__Group_3_0__1__Impl
+            // InternalPerspectiveDsl.g:15394:1: ( rule__XCasePart__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:15395:2: rule__XCasePart__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group_3_0__1__Impl();
@@ -50588,23 +50753,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__1__Impl"
-    // InternalPerspectiveDsl.g:15347:1: rule__XCasePart__Group_3_0__1__Impl : ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:15401:1: rule__XCasePart__Group_3_0__1__Impl : ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) ;
     public final void rule__XCasePart__Group_3_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15351:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
-            // InternalPerspectiveDsl.g:15352:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:15405:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
+            // InternalPerspectiveDsl.g:15406:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:15352:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
-            // InternalPerspectiveDsl.g:15353:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:15406:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalPerspectiveDsl.g:15407:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); 
             }
-            // InternalPerspectiveDsl.g:15354:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
-            // InternalPerspectiveDsl.g:15354:3: rule__XCasePart__ThenAssignment_3_0_1
+            // InternalPerspectiveDsl.g:15408:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalPerspectiveDsl.g:15408:3: rule__XCasePart__ThenAssignment_3_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__ThenAssignment_3_0_1();
@@ -50639,14 +50804,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__0"
-    // InternalPerspectiveDsl.g:15363:1: rule__XForLoopExpression__Group__0 : rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:15417:1: rule__XForLoopExpression__Group__0 : rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 ;
     public final void rule__XForLoopExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15367:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
-            // InternalPerspectiveDsl.g:15368:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
+            // InternalPerspectiveDsl.g:15421:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
+            // InternalPerspectiveDsl.g:15422:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
             {
             pushFollow(FOLLOW_62);
             rule__XForLoopExpression__Group__0__Impl();
@@ -50677,23 +50842,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:15375:1: rule__XForLoopExpression__Group__0__Impl : ( ( rule__XForLoopExpression__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:15429:1: rule__XForLoopExpression__Group__0__Impl : ( ( rule__XForLoopExpression__Group_0__0 ) ) ;
     public final void rule__XForLoopExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15379:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:15380:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:15433:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:15434:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:15380:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:15381:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:15434:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:15435:2: ( rule__XForLoopExpression__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:15382:2: ( rule__XForLoopExpression__Group_0__0 )
-            // InternalPerspectiveDsl.g:15382:3: rule__XForLoopExpression__Group_0__0
+            // InternalPerspectiveDsl.g:15436:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:15436:3: rule__XForLoopExpression__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0__0();
@@ -50728,14 +50893,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__1"
-    // InternalPerspectiveDsl.g:15390:1: rule__XForLoopExpression__Group__1 : rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:15444:1: rule__XForLoopExpression__Group__1 : rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 ;
     public final void rule__XForLoopExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15394:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
-            // InternalPerspectiveDsl.g:15395:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
+            // InternalPerspectiveDsl.g:15448:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
+            // InternalPerspectiveDsl.g:15449:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
             {
             pushFollow(FOLLOW_107);
             rule__XForLoopExpression__Group__1__Impl();
@@ -50766,23 +50931,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:15402:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:15456:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
     public final void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15406:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:15407:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:15460:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:15461:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:15407:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
-            // InternalPerspectiveDsl.g:15408:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:15461:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalPerspectiveDsl.g:15462:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:15409:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
-            // InternalPerspectiveDsl.g:15409:3: rule__XForLoopExpression__ForExpressionAssignment_1
+            // InternalPerspectiveDsl.g:15463:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalPerspectiveDsl.g:15463:3: rule__XForLoopExpression__ForExpressionAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__ForExpressionAssignment_1();
@@ -50817,14 +50982,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__2"
-    // InternalPerspectiveDsl.g:15417:1: rule__XForLoopExpression__Group__2 : rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:15471:1: rule__XForLoopExpression__Group__2 : rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 ;
     public final void rule__XForLoopExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15421:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
-            // InternalPerspectiveDsl.g:15422:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
+            // InternalPerspectiveDsl.g:15475:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
+            // InternalPerspectiveDsl.g:15476:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
             {
             pushFollow(FOLLOW_62);
             rule__XForLoopExpression__Group__2__Impl();
@@ -50855,22 +51020,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:15429:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:15483:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15433:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:15434:1: ( ')' )
+            // InternalPerspectiveDsl.g:15487:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:15488:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:15434:1: ( ')' )
-            // InternalPerspectiveDsl.g:15435:2: ')'
+            // InternalPerspectiveDsl.g:15488:1: ( ')' )
+            // InternalPerspectiveDsl.g:15489:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -50896,14 +51061,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__3"
-    // InternalPerspectiveDsl.g:15444:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:15498:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
     public final void rule__XForLoopExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15448:1: ( rule__XForLoopExpression__Group__3__Impl )
-            // InternalPerspectiveDsl.g:15449:2: rule__XForLoopExpression__Group__3__Impl
+            // InternalPerspectiveDsl.g:15502:1: ( rule__XForLoopExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:15503:2: rule__XForLoopExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group__3__Impl();
@@ -50929,23 +51094,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:15455:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:15509:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
     public final void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15459:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:15460:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:15513:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:15514:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:15460:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
-            // InternalPerspectiveDsl.g:15461:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:15514:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:15515:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:15462:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
-            // InternalPerspectiveDsl.g:15462:3: rule__XForLoopExpression__EachExpressionAssignment_3
+            // InternalPerspectiveDsl.g:15516:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:15516:3: rule__XForLoopExpression__EachExpressionAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__EachExpressionAssignment_3();
@@ -50980,14 +51145,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0__0"
-    // InternalPerspectiveDsl.g:15471:1: rule__XForLoopExpression__Group_0__0 : rule__XForLoopExpression__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:15525:1: rule__XForLoopExpression__Group_0__0 : rule__XForLoopExpression__Group_0__0__Impl ;
     public final void rule__XForLoopExpression__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15475:1: ( rule__XForLoopExpression__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:15476:2: rule__XForLoopExpression__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:15529:1: ( rule__XForLoopExpression__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:15530:2: rule__XForLoopExpression__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0__0__Impl();
@@ -51013,23 +51178,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:15482:1: rule__XForLoopExpression__Group_0__0__Impl : ( ( rule__XForLoopExpression__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:15536:1: rule__XForLoopExpression__Group_0__0__Impl : ( ( rule__XForLoopExpression__Group_0_0__0 ) ) ;
     public final void rule__XForLoopExpression__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15486:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:15487:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:15540:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:15541:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:15487:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:15488:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:15541:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:15542:2: ( rule__XForLoopExpression__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:15489:2: ( rule__XForLoopExpression__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:15489:3: rule__XForLoopExpression__Group_0_0__0
+            // InternalPerspectiveDsl.g:15543:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:15543:3: rule__XForLoopExpression__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0_0__0();
@@ -51064,14 +51229,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__0"
-    // InternalPerspectiveDsl.g:15498:1: rule__XForLoopExpression__Group_0_0__0 : rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:15552:1: rule__XForLoopExpression__Group_0_0__0 : rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 ;
     public final void rule__XForLoopExpression__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15502:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:15503:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
+            // InternalPerspectiveDsl.g:15556:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:15557:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
             {
             pushFollow(FOLLOW_116);
             rule__XForLoopExpression__Group_0_0__0__Impl();
@@ -51102,23 +51267,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:15510:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:15564:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15514:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:15515:1: ( () )
+            // InternalPerspectiveDsl.g:15568:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15569:1: ( () )
             {
-            // InternalPerspectiveDsl.g:15515:1: ( () )
-            // InternalPerspectiveDsl.g:15516:2: ()
+            // InternalPerspectiveDsl.g:15569:1: ( () )
+            // InternalPerspectiveDsl.g:15570:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:15517:2: ()
-            // InternalPerspectiveDsl.g:15517:3: 
+            // InternalPerspectiveDsl.g:15571:2: ()
+            // InternalPerspectiveDsl.g:15571:3: 
             {
             }
 
@@ -51143,14 +51308,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__1"
-    // InternalPerspectiveDsl.g:15525:1: rule__XForLoopExpression__Group_0_0__1 : rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 ;
+    // InternalPerspectiveDsl.g:15579:1: rule__XForLoopExpression__Group_0_0__1 : rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 ;
     public final void rule__XForLoopExpression__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15529:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
-            // InternalPerspectiveDsl.g:15530:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
+            // InternalPerspectiveDsl.g:15583:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
+            // InternalPerspectiveDsl.g:15584:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
             {
             pushFollow(FOLLOW_58);
             rule__XForLoopExpression__Group_0_0__1__Impl();
@@ -51181,22 +51346,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:15537:1: rule__XForLoopExpression__Group_0_0__1__Impl : ( 'for' ) ;
+    // InternalPerspectiveDsl.g:15591:1: rule__XForLoopExpression__Group_0_0__1__Impl : ( 'for' ) ;
     public final void rule__XForLoopExpression__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15541:1: ( ( 'for' ) )
-            // InternalPerspectiveDsl.g:15542:1: ( 'for' )
+            // InternalPerspectiveDsl.g:15595:1: ( ( 'for' ) )
+            // InternalPerspectiveDsl.g:15596:1: ( 'for' )
             {
-            // InternalPerspectiveDsl.g:15542:1: ( 'for' )
-            // InternalPerspectiveDsl.g:15543:2: 'for'
+            // InternalPerspectiveDsl.g:15596:1: ( 'for' )
+            // InternalPerspectiveDsl.g:15597:2: 'for'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
             }
-            match(input,110,FOLLOW_2); if (state.failed) return ;
+            match(input,112,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
             }
@@ -51222,14 +51387,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__2"
-    // InternalPerspectiveDsl.g:15552:1: rule__XForLoopExpression__Group_0_0__2 : rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 ;
+    // InternalPerspectiveDsl.g:15606:1: rule__XForLoopExpression__Group_0_0__2 : rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 ;
     public final void rule__XForLoopExpression__Group_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15556:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
-            // InternalPerspectiveDsl.g:15557:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
+            // InternalPerspectiveDsl.g:15610:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
+            // InternalPerspectiveDsl.g:15611:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
             {
             pushFollow(FOLLOW_79);
             rule__XForLoopExpression__Group_0_0__2__Impl();
@@ -51260,22 +51425,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:15564:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:15618:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
     public final void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15568:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:15569:1: ( '(' )
+            // InternalPerspectiveDsl.g:15622:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:15623:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:15569:1: ( '(' )
-            // InternalPerspectiveDsl.g:15570:2: '('
+            // InternalPerspectiveDsl.g:15623:1: ( '(' )
+            // InternalPerspectiveDsl.g:15624:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
@@ -51301,14 +51466,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__3"
-    // InternalPerspectiveDsl.g:15579:1: rule__XForLoopExpression__Group_0_0__3 : rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 ;
+    // InternalPerspectiveDsl.g:15633:1: rule__XForLoopExpression__Group_0_0__3 : rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 ;
     public final void rule__XForLoopExpression__Group_0_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15583:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
-            // InternalPerspectiveDsl.g:15584:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
+            // InternalPerspectiveDsl.g:15637:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
+            // InternalPerspectiveDsl.g:15638:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
             {
             pushFollow(FOLLOW_114);
             rule__XForLoopExpression__Group_0_0__3__Impl();
@@ -51339,23 +51504,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__3__Impl"
-    // InternalPerspectiveDsl.g:15591:1: rule__XForLoopExpression__Group_0_0__3__Impl : ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) ;
+    // InternalPerspectiveDsl.g:15645:1: rule__XForLoopExpression__Group_0_0__3__Impl : ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) ;
     public final void rule__XForLoopExpression__Group_0_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15595:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
-            // InternalPerspectiveDsl.g:15596:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalPerspectiveDsl.g:15649:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
+            // InternalPerspectiveDsl.g:15650:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
             {
-            // InternalPerspectiveDsl.g:15596:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
-            // InternalPerspectiveDsl.g:15597:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalPerspectiveDsl.g:15650:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalPerspectiveDsl.g:15651:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); 
             }
-            // InternalPerspectiveDsl.g:15598:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
-            // InternalPerspectiveDsl.g:15598:3: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
+            // InternalPerspectiveDsl.g:15652:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalPerspectiveDsl.g:15652:3: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__DeclaredParamAssignment_0_0_3();
@@ -51390,14 +51555,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__4"
-    // InternalPerspectiveDsl.g:15606:1: rule__XForLoopExpression__Group_0_0__4 : rule__XForLoopExpression__Group_0_0__4__Impl ;
+    // InternalPerspectiveDsl.g:15660:1: rule__XForLoopExpression__Group_0_0__4 : rule__XForLoopExpression__Group_0_0__4__Impl ;
     public final void rule__XForLoopExpression__Group_0_0__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15610:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
-            // InternalPerspectiveDsl.g:15611:2: rule__XForLoopExpression__Group_0_0__4__Impl
+            // InternalPerspectiveDsl.g:15664:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
+            // InternalPerspectiveDsl.g:15665:2: rule__XForLoopExpression__Group_0_0__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0_0__4__Impl();
@@ -51423,22 +51588,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__4__Impl"
-    // InternalPerspectiveDsl.g:15617:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
+    // InternalPerspectiveDsl.g:15671:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
     public final void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15621:1: ( ( ':' ) )
-            // InternalPerspectiveDsl.g:15622:1: ( ':' )
+            // InternalPerspectiveDsl.g:15675:1: ( ( ':' ) )
+            // InternalPerspectiveDsl.g:15676:1: ( ':' )
             {
-            // InternalPerspectiveDsl.g:15622:1: ( ':' )
-            // InternalPerspectiveDsl.g:15623:2: ':'
+            // InternalPerspectiveDsl.g:15676:1: ( ':' )
+            // InternalPerspectiveDsl.g:15677:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
             }
-            match(input,107,FOLLOW_2); if (state.failed) return ;
+            match(input,109,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
             }
@@ -51464,14 +51629,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__0"
-    // InternalPerspectiveDsl.g:15633:1: rule__XBasicForLoopExpression__Group__0 : rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:15687:1: rule__XBasicForLoopExpression__Group__0 : rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 ;
     public final void rule__XBasicForLoopExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15637:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
-            // InternalPerspectiveDsl.g:15638:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
+            // InternalPerspectiveDsl.g:15691:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
+            // InternalPerspectiveDsl.g:15692:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
             {
             pushFollow(FOLLOW_116);
             rule__XBasicForLoopExpression__Group__0__Impl();
@@ -51502,23 +51667,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:15645:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:15699:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
     public final void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15649:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:15650:1: ( () )
+            // InternalPerspectiveDsl.g:15703:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:15704:1: ( () )
             {
-            // InternalPerspectiveDsl.g:15650:1: ( () )
-            // InternalPerspectiveDsl.g:15651:2: ()
+            // InternalPerspectiveDsl.g:15704:1: ( () )
+            // InternalPerspectiveDsl.g:15705:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:15652:2: ()
-            // InternalPerspectiveDsl.g:15652:3: 
+            // InternalPerspectiveDsl.g:15706:2: ()
+            // InternalPerspectiveDsl.g:15706:3: 
             {
             }
 
@@ -51543,14 +51708,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__1"
-    // InternalPerspectiveDsl.g:15660:1: rule__XBasicForLoopExpression__Group__1 : rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:15714:1: rule__XBasicForLoopExpression__Group__1 : rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 ;
     public final void rule__XBasicForLoopExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15664:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
-            // InternalPerspectiveDsl.g:15665:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
+            // InternalPerspectiveDsl.g:15718:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
+            // InternalPerspectiveDsl.g:15719:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
             {
             pushFollow(FOLLOW_58);
             rule__XBasicForLoopExpression__Group__1__Impl();
@@ -51581,22 +51746,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:15672:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
+    // InternalPerspectiveDsl.g:15726:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
     public final void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15676:1: ( ( 'for' ) )
-            // InternalPerspectiveDsl.g:15677:1: ( 'for' )
+            // InternalPerspectiveDsl.g:15730:1: ( ( 'for' ) )
+            // InternalPerspectiveDsl.g:15731:1: ( 'for' )
             {
-            // InternalPerspectiveDsl.g:15677:1: ( 'for' )
-            // InternalPerspectiveDsl.g:15678:2: 'for'
+            // InternalPerspectiveDsl.g:15731:1: ( 'for' )
+            // InternalPerspectiveDsl.g:15732:2: 'for'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
             }
-            match(input,110,FOLLOW_2); if (state.failed) return ;
+            match(input,112,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
             }
@@ -51622,14 +51787,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__2"
-    // InternalPerspectiveDsl.g:15687:1: rule__XBasicForLoopExpression__Group__2 : rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:15741:1: rule__XBasicForLoopExpression__Group__2 : rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 ;
     public final void rule__XBasicForLoopExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15691:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
-            // InternalPerspectiveDsl.g:15692:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
+            // InternalPerspectiveDsl.g:15745:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
+            // InternalPerspectiveDsl.g:15746:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
             {
             pushFollow(FOLLOW_117);
             rule__XBasicForLoopExpression__Group__2__Impl();
@@ -51660,22 +51825,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:15699:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:15753:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15703:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:15704:1: ( '(' )
+            // InternalPerspectiveDsl.g:15757:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:15758:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:15704:1: ( '(' )
-            // InternalPerspectiveDsl.g:15705:2: '('
+            // InternalPerspectiveDsl.g:15758:1: ( '(' )
+            // InternalPerspectiveDsl.g:15759:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -51701,14 +51866,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__3"
-    // InternalPerspectiveDsl.g:15714:1: rule__XBasicForLoopExpression__Group__3 : rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:15768:1: rule__XBasicForLoopExpression__Group__3 : rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 ;
     public final void rule__XBasicForLoopExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15718:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
-            // InternalPerspectiveDsl.g:15719:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
+            // InternalPerspectiveDsl.g:15772:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
+            // InternalPerspectiveDsl.g:15773:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
             {
             pushFollow(FOLLOW_117);
             rule__XBasicForLoopExpression__Group__3__Impl();
@@ -51739,31 +51904,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:15726:1: rule__XBasicForLoopExpression__Group__3__Impl : ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:15780:1: rule__XBasicForLoopExpression__Group__3__Impl : ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) ;
     public final void rule__XBasicForLoopExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15730:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:15731:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:15784:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:15785:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:15731:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:15732:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            // InternalPerspectiveDsl.g:15785:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:15786:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:15733:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            // InternalPerspectiveDsl.g:15787:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
             int alt107=2;
             int LA107_0 = input.LA(1);
 
-            if ( ((LA107_0>=RULE_ID && LA107_0<=RULE_DECIMAL)||LA107_0==27||(LA107_0>=34 && LA107_0<=35)||LA107_0==40||(LA107_0>=44 && LA107_0<=50)||LA107_0==54||LA107_0==96||(LA107_0>=100 && LA107_0<=101)||LA107_0==104||LA107_0==106||(LA107_0>=110 && LA107_0<=118)||LA107_0==120||(LA107_0>=130 && LA107_0<=131)) ) {
+            if ( ((LA107_0>=RULE_ID && LA107_0<=RULE_DECIMAL)||LA107_0==27||(LA107_0>=34 && LA107_0<=35)||LA107_0==40||(LA107_0>=44 && LA107_0<=50)||LA107_0==54||LA107_0==98||(LA107_0>=102 && LA107_0<=103)||LA107_0==106||LA107_0==108||(LA107_0>=112 && LA107_0<=120)||LA107_0==122||(LA107_0>=132 && LA107_0<=133)) ) {
                 alt107=1;
             }
             switch (alt107) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:15733:3: rule__XBasicForLoopExpression__Group_3__0
+                    // InternalPerspectiveDsl.g:15787:3: rule__XBasicForLoopExpression__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__Group_3__0();
@@ -51801,14 +51966,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__4"
-    // InternalPerspectiveDsl.g:15741:1: rule__XBasicForLoopExpression__Group__4 : rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:15795:1: rule__XBasicForLoopExpression__Group__4 : rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 ;
     public final void rule__XBasicForLoopExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15745:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
-            // InternalPerspectiveDsl.g:15746:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
+            // InternalPerspectiveDsl.g:15799:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
+            // InternalPerspectiveDsl.g:15800:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
             {
             pushFollow(FOLLOW_118);
             rule__XBasicForLoopExpression__Group__4__Impl();
@@ -51839,22 +52004,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:15753:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
+    // InternalPerspectiveDsl.g:15807:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
     public final void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15757:1: ( ( ';' ) )
-            // InternalPerspectiveDsl.g:15758:1: ( ';' )
+            // InternalPerspectiveDsl.g:15811:1: ( ( ';' ) )
+            // InternalPerspectiveDsl.g:15812:1: ( ';' )
             {
-            // InternalPerspectiveDsl.g:15758:1: ( ';' )
-            // InternalPerspectiveDsl.g:15759:2: ';'
+            // InternalPerspectiveDsl.g:15812:1: ( ';' )
+            // InternalPerspectiveDsl.g:15813:2: ';'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,96,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
             }
@@ -51880,14 +52045,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__5"
-    // InternalPerspectiveDsl.g:15768:1: rule__XBasicForLoopExpression__Group__5 : rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 ;
+    // InternalPerspectiveDsl.g:15822:1: rule__XBasicForLoopExpression__Group__5 : rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 ;
     public final void rule__XBasicForLoopExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15772:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
-            // InternalPerspectiveDsl.g:15773:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
+            // InternalPerspectiveDsl.g:15826:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
+            // InternalPerspectiveDsl.g:15827:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
             {
             pushFollow(FOLLOW_118);
             rule__XBasicForLoopExpression__Group__5__Impl();
@@ -51918,31 +52083,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:15780:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
+    // InternalPerspectiveDsl.g:15834:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
     public final void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15784:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
-            // InternalPerspectiveDsl.g:15785:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalPerspectiveDsl.g:15838:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
+            // InternalPerspectiveDsl.g:15839:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
             {
-            // InternalPerspectiveDsl.g:15785:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
-            // InternalPerspectiveDsl.g:15786:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            // InternalPerspectiveDsl.g:15839:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalPerspectiveDsl.g:15840:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:15787:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            // InternalPerspectiveDsl.g:15841:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
             int alt108=2;
             int LA108_0 = input.LA(1);
 
-            if ( ((LA108_0>=RULE_ID && LA108_0<=RULE_DECIMAL)||LA108_0==27||(LA108_0>=34 && LA108_0<=35)||LA108_0==40||(LA108_0>=45 && LA108_0<=50)||LA108_0==54||LA108_0==96||(LA108_0>=100 && LA108_0<=101)||LA108_0==104||LA108_0==106||(LA108_0>=110 && LA108_0<=118)||LA108_0==120||LA108_0==131) ) {
+            if ( ((LA108_0>=RULE_ID && LA108_0<=RULE_DECIMAL)||LA108_0==27||(LA108_0>=34 && LA108_0<=35)||LA108_0==40||(LA108_0>=45 && LA108_0<=50)||LA108_0==54||LA108_0==98||(LA108_0>=102 && LA108_0<=103)||LA108_0==106||LA108_0==108||(LA108_0>=112 && LA108_0<=120)||LA108_0==122||LA108_0==133) ) {
                 alt108=1;
             }
             switch (alt108) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:15787:3: rule__XBasicForLoopExpression__ExpressionAssignment_5
+                    // InternalPerspectiveDsl.g:15841:3: rule__XBasicForLoopExpression__ExpressionAssignment_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__ExpressionAssignment_5();
@@ -51980,14 +52145,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__6"
-    // InternalPerspectiveDsl.g:15795:1: rule__XBasicForLoopExpression__Group__6 : rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 ;
+    // InternalPerspectiveDsl.g:15849:1: rule__XBasicForLoopExpression__Group__6 : rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 ;
     public final void rule__XBasicForLoopExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15799:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
-            // InternalPerspectiveDsl.g:15800:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
+            // InternalPerspectiveDsl.g:15853:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
+            // InternalPerspectiveDsl.g:15854:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
             {
             pushFollow(FOLLOW_59);
             rule__XBasicForLoopExpression__Group__6__Impl();
@@ -52018,22 +52183,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__6__Impl"
-    // InternalPerspectiveDsl.g:15807:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
+    // InternalPerspectiveDsl.g:15861:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
     public final void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15811:1: ( ( ';' ) )
-            // InternalPerspectiveDsl.g:15812:1: ( ';' )
+            // InternalPerspectiveDsl.g:15865:1: ( ( ';' ) )
+            // InternalPerspectiveDsl.g:15866:1: ( ';' )
             {
-            // InternalPerspectiveDsl.g:15812:1: ( ';' )
-            // InternalPerspectiveDsl.g:15813:2: ';'
+            // InternalPerspectiveDsl.g:15866:1: ( ';' )
+            // InternalPerspectiveDsl.g:15867:2: ';'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,96,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
             }
@@ -52059,14 +52224,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__7"
-    // InternalPerspectiveDsl.g:15822:1: rule__XBasicForLoopExpression__Group__7 : rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 ;
+    // InternalPerspectiveDsl.g:15876:1: rule__XBasicForLoopExpression__Group__7 : rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 ;
     public final void rule__XBasicForLoopExpression__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15826:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
-            // InternalPerspectiveDsl.g:15827:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
+            // InternalPerspectiveDsl.g:15880:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
+            // InternalPerspectiveDsl.g:15881:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
             {
             pushFollow(FOLLOW_59);
             rule__XBasicForLoopExpression__Group__7__Impl();
@@ -52097,31 +52262,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__7__Impl"
-    // InternalPerspectiveDsl.g:15834:1: rule__XBasicForLoopExpression__Group__7__Impl : ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) ;
+    // InternalPerspectiveDsl.g:15888:1: rule__XBasicForLoopExpression__Group__7__Impl : ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) ;
     public final void rule__XBasicForLoopExpression__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15838:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
-            // InternalPerspectiveDsl.g:15839:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalPerspectiveDsl.g:15892:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
+            // InternalPerspectiveDsl.g:15893:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
             {
-            // InternalPerspectiveDsl.g:15839:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
-            // InternalPerspectiveDsl.g:15840:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            // InternalPerspectiveDsl.g:15893:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalPerspectiveDsl.g:15894:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); 
             }
-            // InternalPerspectiveDsl.g:15841:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            // InternalPerspectiveDsl.g:15895:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
             int alt109=2;
             int LA109_0 = input.LA(1);
 
-            if ( ((LA109_0>=RULE_ID && LA109_0<=RULE_DECIMAL)||LA109_0==27||(LA109_0>=34 && LA109_0<=35)||LA109_0==40||(LA109_0>=45 && LA109_0<=50)||LA109_0==54||LA109_0==96||(LA109_0>=100 && LA109_0<=101)||LA109_0==104||LA109_0==106||(LA109_0>=110 && LA109_0<=118)||LA109_0==120||LA109_0==131) ) {
+            if ( ((LA109_0>=RULE_ID && LA109_0<=RULE_DECIMAL)||LA109_0==27||(LA109_0>=34 && LA109_0<=35)||LA109_0==40||(LA109_0>=45 && LA109_0<=50)||LA109_0==54||LA109_0==98||(LA109_0>=102 && LA109_0<=103)||LA109_0==106||LA109_0==108||(LA109_0>=112 && LA109_0<=120)||LA109_0==122||LA109_0==133) ) {
                 alt109=1;
             }
             switch (alt109) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:15841:3: rule__XBasicForLoopExpression__Group_7__0
+                    // InternalPerspectiveDsl.g:15895:3: rule__XBasicForLoopExpression__Group_7__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__Group_7__0();
@@ -52159,14 +52324,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__8"
-    // InternalPerspectiveDsl.g:15849:1: rule__XBasicForLoopExpression__Group__8 : rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 ;
+    // InternalPerspectiveDsl.g:15903:1: rule__XBasicForLoopExpression__Group__8 : rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 ;
     public final void rule__XBasicForLoopExpression__Group__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15853:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
-            // InternalPerspectiveDsl.g:15854:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
+            // InternalPerspectiveDsl.g:15907:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
+            // InternalPerspectiveDsl.g:15908:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
             {
             pushFollow(FOLLOW_62);
             rule__XBasicForLoopExpression__Group__8__Impl();
@@ -52197,22 +52362,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__8__Impl"
-    // InternalPerspectiveDsl.g:15861:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:15915:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
     public final void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15865:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:15866:1: ( ')' )
+            // InternalPerspectiveDsl.g:15919:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:15920:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:15866:1: ( ')' )
-            // InternalPerspectiveDsl.g:15867:2: ')'
+            // InternalPerspectiveDsl.g:15920:1: ( ')' )
+            // InternalPerspectiveDsl.g:15921:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
             }
@@ -52238,14 +52403,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__9"
-    // InternalPerspectiveDsl.g:15876:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
+    // InternalPerspectiveDsl.g:15930:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
     public final void rule__XBasicForLoopExpression__Group__9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15880:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
-            // InternalPerspectiveDsl.g:15881:2: rule__XBasicForLoopExpression__Group__9__Impl
+            // InternalPerspectiveDsl.g:15934:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
+            // InternalPerspectiveDsl.g:15935:2: rule__XBasicForLoopExpression__Group__9__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group__9__Impl();
@@ -52271,23 +52436,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__9__Impl"
-    // InternalPerspectiveDsl.g:15887:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
+    // InternalPerspectiveDsl.g:15941:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
     public final void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15891:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
-            // InternalPerspectiveDsl.g:15892:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalPerspectiveDsl.g:15945:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
+            // InternalPerspectiveDsl.g:15946:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
             {
-            // InternalPerspectiveDsl.g:15892:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
-            // InternalPerspectiveDsl.g:15893:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalPerspectiveDsl.g:15946:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalPerspectiveDsl.g:15947:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); 
             }
-            // InternalPerspectiveDsl.g:15894:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
-            // InternalPerspectiveDsl.g:15894:3: rule__XBasicForLoopExpression__EachExpressionAssignment_9
+            // InternalPerspectiveDsl.g:15948:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalPerspectiveDsl.g:15948:3: rule__XBasicForLoopExpression__EachExpressionAssignment_9
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__EachExpressionAssignment_9();
@@ -52322,14 +52487,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0"
-    // InternalPerspectiveDsl.g:15903:1: rule__XBasicForLoopExpression__Group_3__0 : rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 ;
+    // InternalPerspectiveDsl.g:15957:1: rule__XBasicForLoopExpression__Group_3__0 : rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 ;
     public final void rule__XBasicForLoopExpression__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15907:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
-            // InternalPerspectiveDsl.g:15908:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
+            // InternalPerspectiveDsl.g:15961:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
+            // InternalPerspectiveDsl.g:15962:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
             {
             pushFollow(FOLLOW_60);
             rule__XBasicForLoopExpression__Group_3__0__Impl();
@@ -52360,23 +52525,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:15915:1: rule__XBasicForLoopExpression__Group_3__0__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:15969:1: rule__XBasicForLoopExpression__Group_3__0__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15919:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
-            // InternalPerspectiveDsl.g:15920:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:15973:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:15974:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:15920:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
-            // InternalPerspectiveDsl.g:15921:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:15974:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:15975:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); 
             }
-            // InternalPerspectiveDsl.g:15922:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
-            // InternalPerspectiveDsl.g:15922:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
+            // InternalPerspectiveDsl.g:15976:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalPerspectiveDsl.g:15976:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0();
@@ -52411,14 +52576,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1"
-    // InternalPerspectiveDsl.g:15930:1: rule__XBasicForLoopExpression__Group_3__1 : rule__XBasicForLoopExpression__Group_3__1__Impl ;
+    // InternalPerspectiveDsl.g:15984:1: rule__XBasicForLoopExpression__Group_3__1 : rule__XBasicForLoopExpression__Group_3__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15934:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
-            // InternalPerspectiveDsl.g:15935:2: rule__XBasicForLoopExpression__Group_3__1__Impl
+            // InternalPerspectiveDsl.g:15988:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:15989:2: rule__XBasicForLoopExpression__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_3__1__Impl();
@@ -52444,35 +52609,35 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:15941:1: rule__XBasicForLoopExpression__Group_3__1__Impl : ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:15995:1: rule__XBasicForLoopExpression__Group_3__1__Impl : ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) ;
     public final void rule__XBasicForLoopExpression__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15945:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
-            // InternalPerspectiveDsl.g:15946:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:15999:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
+            // InternalPerspectiveDsl.g:16000:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:15946:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
-            // InternalPerspectiveDsl.g:15947:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:16000:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalPerspectiveDsl.g:16001:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); 
             }
-            // InternalPerspectiveDsl.g:15948:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            // InternalPerspectiveDsl.g:16002:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
             loop110:
             do {
                 int alt110=2;
                 int LA110_0 = input.LA(1);
 
-                if ( (LA110_0==98) ) {
+                if ( (LA110_0==100) ) {
                     alt110=1;
                 }
 
 
                 switch (alt110) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:15948:3: rule__XBasicForLoopExpression__Group_3_1__0
+            	    // InternalPerspectiveDsl.g:16002:3: rule__XBasicForLoopExpression__Group_3_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XBasicForLoopExpression__Group_3_1__0();
@@ -52513,14 +52678,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0"
-    // InternalPerspectiveDsl.g:15957:1: rule__XBasicForLoopExpression__Group_3_1__0 : rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:16011:1: rule__XBasicForLoopExpression__Group_3_1__0 : rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 ;
     public final void rule__XBasicForLoopExpression__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15961:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:15962:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
+            // InternalPerspectiveDsl.g:16015:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:16016:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
             {
             pushFollow(FOLLOW_119);
             rule__XBasicForLoopExpression__Group_3_1__0__Impl();
@@ -52551,22 +52716,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:15969:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:16023:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
     public final void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15973:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:15974:1: ( ',' )
+            // InternalPerspectiveDsl.g:16027:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:16028:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:15974:1: ( ',' )
-            // InternalPerspectiveDsl.g:15975:2: ','
+            // InternalPerspectiveDsl.g:16028:1: ( ',' )
+            // InternalPerspectiveDsl.g:16029:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
             }
@@ -52592,14 +52757,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1"
-    // InternalPerspectiveDsl.g:15984:1: rule__XBasicForLoopExpression__Group_3_1__1 : rule__XBasicForLoopExpression__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:16038:1: rule__XBasicForLoopExpression__Group_3_1__1 : rule__XBasicForLoopExpression__Group_3_1__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15988:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:15989:2: rule__XBasicForLoopExpression__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:16042:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:16043:2: rule__XBasicForLoopExpression__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_3_1__1__Impl();
@@ -52625,23 +52790,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:15995:1: rule__XBasicForLoopExpression__Group_3_1__1__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:16049:1: rule__XBasicForLoopExpression__Group_3_1__1__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:15999:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:16000:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:16053:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:16054:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:16000:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:16001:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:16054:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:16055:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:16002:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:16002:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
+            // InternalPerspectiveDsl.g:16056:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:16056:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1();
@@ -52676,14 +52841,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0"
-    // InternalPerspectiveDsl.g:16011:1: rule__XBasicForLoopExpression__Group_7__0 : rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 ;
+    // InternalPerspectiveDsl.g:16065:1: rule__XBasicForLoopExpression__Group_7__0 : rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 ;
     public final void rule__XBasicForLoopExpression__Group_7__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16015:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
-            // InternalPerspectiveDsl.g:16016:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
+            // InternalPerspectiveDsl.g:16069:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
+            // InternalPerspectiveDsl.g:16070:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
             {
             pushFollow(FOLLOW_60);
             rule__XBasicForLoopExpression__Group_7__0__Impl();
@@ -52714,23 +52879,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0__Impl"
-    // InternalPerspectiveDsl.g:16023:1: rule__XBasicForLoopExpression__Group_7__0__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) ;
+    // InternalPerspectiveDsl.g:16077:1: rule__XBasicForLoopExpression__Group_7__0__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_7__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16027:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
-            // InternalPerspectiveDsl.g:16028:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalPerspectiveDsl.g:16081:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
+            // InternalPerspectiveDsl.g:16082:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
             {
-            // InternalPerspectiveDsl.g:16028:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
-            // InternalPerspectiveDsl.g:16029:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalPerspectiveDsl.g:16082:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalPerspectiveDsl.g:16083:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); 
             }
-            // InternalPerspectiveDsl.g:16030:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
-            // InternalPerspectiveDsl.g:16030:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
+            // InternalPerspectiveDsl.g:16084:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalPerspectiveDsl.g:16084:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0();
@@ -52765,14 +52930,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1"
-    // InternalPerspectiveDsl.g:16038:1: rule__XBasicForLoopExpression__Group_7__1 : rule__XBasicForLoopExpression__Group_7__1__Impl ;
+    // InternalPerspectiveDsl.g:16092:1: rule__XBasicForLoopExpression__Group_7__1 : rule__XBasicForLoopExpression__Group_7__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_7__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16042:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
-            // InternalPerspectiveDsl.g:16043:2: rule__XBasicForLoopExpression__Group_7__1__Impl
+            // InternalPerspectiveDsl.g:16096:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
+            // InternalPerspectiveDsl.g:16097:2: rule__XBasicForLoopExpression__Group_7__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_7__1__Impl();
@@ -52798,35 +52963,35 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1__Impl"
-    // InternalPerspectiveDsl.g:16049:1: rule__XBasicForLoopExpression__Group_7__1__Impl : ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:16103:1: rule__XBasicForLoopExpression__Group_7__1__Impl : ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) ;
     public final void rule__XBasicForLoopExpression__Group_7__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16053:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
-            // InternalPerspectiveDsl.g:16054:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalPerspectiveDsl.g:16107:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
+            // InternalPerspectiveDsl.g:16108:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:16054:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
-            // InternalPerspectiveDsl.g:16055:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            // InternalPerspectiveDsl.g:16108:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalPerspectiveDsl.g:16109:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); 
             }
-            // InternalPerspectiveDsl.g:16056:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            // InternalPerspectiveDsl.g:16110:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
             loop111:
             do {
                 int alt111=2;
                 int LA111_0 = input.LA(1);
 
-                if ( (LA111_0==98) ) {
+                if ( (LA111_0==100) ) {
                     alt111=1;
                 }
 
 
                 switch (alt111) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:16056:3: rule__XBasicForLoopExpression__Group_7_1__0
+            	    // InternalPerspectiveDsl.g:16110:3: rule__XBasicForLoopExpression__Group_7_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XBasicForLoopExpression__Group_7_1__0();
@@ -52867,14 +53032,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0"
-    // InternalPerspectiveDsl.g:16065:1: rule__XBasicForLoopExpression__Group_7_1__0 : rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 ;
+    // InternalPerspectiveDsl.g:16119:1: rule__XBasicForLoopExpression__Group_7_1__0 : rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 ;
     public final void rule__XBasicForLoopExpression__Group_7_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16069:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
-            // InternalPerspectiveDsl.g:16070:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
+            // InternalPerspectiveDsl.g:16123:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
+            // InternalPerspectiveDsl.g:16124:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XBasicForLoopExpression__Group_7_1__0__Impl();
@@ -52905,22 +53070,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0__Impl"
-    // InternalPerspectiveDsl.g:16077:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:16131:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
     public final void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16081:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:16082:1: ( ',' )
+            // InternalPerspectiveDsl.g:16135:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:16136:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:16082:1: ( ',' )
-            // InternalPerspectiveDsl.g:16083:2: ','
+            // InternalPerspectiveDsl.g:16136:1: ( ',' )
+            // InternalPerspectiveDsl.g:16137:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
             }
@@ -52946,14 +53111,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1"
-    // InternalPerspectiveDsl.g:16092:1: rule__XBasicForLoopExpression__Group_7_1__1 : rule__XBasicForLoopExpression__Group_7_1__1__Impl ;
+    // InternalPerspectiveDsl.g:16146:1: rule__XBasicForLoopExpression__Group_7_1__1 : rule__XBasicForLoopExpression__Group_7_1__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_7_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16096:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
-            // InternalPerspectiveDsl.g:16097:2: rule__XBasicForLoopExpression__Group_7_1__1__Impl
+            // InternalPerspectiveDsl.g:16150:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
+            // InternalPerspectiveDsl.g:16151:2: rule__XBasicForLoopExpression__Group_7_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_7_1__1__Impl();
@@ -52979,23 +53144,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1__Impl"
-    // InternalPerspectiveDsl.g:16103:1: rule__XBasicForLoopExpression__Group_7_1__1__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:16157:1: rule__XBasicForLoopExpression__Group_7_1__1__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_7_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16107:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
-            // InternalPerspectiveDsl.g:16108:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalPerspectiveDsl.g:16161:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
+            // InternalPerspectiveDsl.g:16162:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:16108:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
-            // InternalPerspectiveDsl.g:16109:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalPerspectiveDsl.g:16162:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalPerspectiveDsl.g:16163:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); 
             }
-            // InternalPerspectiveDsl.g:16110:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
-            // InternalPerspectiveDsl.g:16110:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
+            // InternalPerspectiveDsl.g:16164:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalPerspectiveDsl.g:16164:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1();
@@ -53030,14 +53195,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__0"
-    // InternalPerspectiveDsl.g:16119:1: rule__XWhileExpression__Group__0 : rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:16173:1: rule__XWhileExpression__Group__0 : rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 ;
     public final void rule__XWhileExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16123:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
-            // InternalPerspectiveDsl.g:16124:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
+            // InternalPerspectiveDsl.g:16177:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
+            // InternalPerspectiveDsl.g:16178:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
             {
             pushFollow(FOLLOW_120);
             rule__XWhileExpression__Group__0__Impl();
@@ -53068,23 +53233,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16131:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:16185:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
     public final void rule__XWhileExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16135:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:16136:1: ( () )
+            // InternalPerspectiveDsl.g:16189:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:16190:1: ( () )
             {
-            // InternalPerspectiveDsl.g:16136:1: ( () )
-            // InternalPerspectiveDsl.g:16137:2: ()
+            // InternalPerspectiveDsl.g:16190:1: ( () )
+            // InternalPerspectiveDsl.g:16191:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:16138:2: ()
-            // InternalPerspectiveDsl.g:16138:3: 
+            // InternalPerspectiveDsl.g:16192:2: ()
+            // InternalPerspectiveDsl.g:16192:3: 
             {
             }
 
@@ -53109,14 +53274,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__1"
-    // InternalPerspectiveDsl.g:16146:1: rule__XWhileExpression__Group__1 : rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:16200:1: rule__XWhileExpression__Group__1 : rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 ;
     public final void rule__XWhileExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16150:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
-            // InternalPerspectiveDsl.g:16151:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
+            // InternalPerspectiveDsl.g:16204:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
+            // InternalPerspectiveDsl.g:16205:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
             {
             pushFollow(FOLLOW_58);
             rule__XWhileExpression__Group__1__Impl();
@@ -53147,22 +53312,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16158:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
+    // InternalPerspectiveDsl.g:16212:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
     public final void rule__XWhileExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16162:1: ( ( 'while' ) )
-            // InternalPerspectiveDsl.g:16163:1: ( 'while' )
+            // InternalPerspectiveDsl.g:16216:1: ( ( 'while' ) )
+            // InternalPerspectiveDsl.g:16217:1: ( 'while' )
             {
-            // InternalPerspectiveDsl.g:16163:1: ( 'while' )
-            // InternalPerspectiveDsl.g:16164:2: 'while'
+            // InternalPerspectiveDsl.g:16217:1: ( 'while' )
+            // InternalPerspectiveDsl.g:16218:2: 'while'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
             }
-            match(input,111,FOLLOW_2); if (state.failed) return ;
+            match(input,113,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
             }
@@ -53188,14 +53353,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__2"
-    // InternalPerspectiveDsl.g:16173:1: rule__XWhileExpression__Group__2 : rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:16227:1: rule__XWhileExpression__Group__2 : rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 ;
     public final void rule__XWhileExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16177:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
-            // InternalPerspectiveDsl.g:16178:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
+            // InternalPerspectiveDsl.g:16231:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
+            // InternalPerspectiveDsl.g:16232:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
             {
             pushFollow(FOLLOW_62);
             rule__XWhileExpression__Group__2__Impl();
@@ -53226,22 +53391,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:16185:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:16239:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XWhileExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16189:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:16190:1: ( '(' )
+            // InternalPerspectiveDsl.g:16243:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:16244:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:16190:1: ( '(' )
-            // InternalPerspectiveDsl.g:16191:2: '('
+            // InternalPerspectiveDsl.g:16244:1: ( '(' )
+            // InternalPerspectiveDsl.g:16245:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -53267,14 +53432,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__3"
-    // InternalPerspectiveDsl.g:16200:1: rule__XWhileExpression__Group__3 : rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:16254:1: rule__XWhileExpression__Group__3 : rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 ;
     public final void rule__XWhileExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16204:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
-            // InternalPerspectiveDsl.g:16205:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
+            // InternalPerspectiveDsl.g:16258:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
+            // InternalPerspectiveDsl.g:16259:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
             {
             pushFollow(FOLLOW_107);
             rule__XWhileExpression__Group__3__Impl();
@@ -53305,23 +53470,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:16212:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:16266:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
     public final void rule__XWhileExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16216:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:16217:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalPerspectiveDsl.g:16270:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:16271:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:16217:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
-            // InternalPerspectiveDsl.g:16218:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalPerspectiveDsl.g:16271:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalPerspectiveDsl.g:16272:2: ( rule__XWhileExpression__PredicateAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:16219:2: ( rule__XWhileExpression__PredicateAssignment_3 )
-            // InternalPerspectiveDsl.g:16219:3: rule__XWhileExpression__PredicateAssignment_3
+            // InternalPerspectiveDsl.g:16273:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalPerspectiveDsl.g:16273:3: rule__XWhileExpression__PredicateAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__PredicateAssignment_3();
@@ -53356,14 +53521,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__4"
-    // InternalPerspectiveDsl.g:16227:1: rule__XWhileExpression__Group__4 : rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:16281:1: rule__XWhileExpression__Group__4 : rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 ;
     public final void rule__XWhileExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16231:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
-            // InternalPerspectiveDsl.g:16232:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
+            // InternalPerspectiveDsl.g:16285:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
+            // InternalPerspectiveDsl.g:16286:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
             {
             pushFollow(FOLLOW_62);
             rule__XWhileExpression__Group__4__Impl();
@@ -53394,22 +53559,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:16239:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:16293:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
     public final void rule__XWhileExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16243:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:16244:1: ( ')' )
+            // InternalPerspectiveDsl.g:16297:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:16298:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:16244:1: ( ')' )
-            // InternalPerspectiveDsl.g:16245:2: ')'
+            // InternalPerspectiveDsl.g:16298:1: ( ')' )
+            // InternalPerspectiveDsl.g:16299:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
             }
@@ -53435,14 +53600,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__5"
-    // InternalPerspectiveDsl.g:16254:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
+    // InternalPerspectiveDsl.g:16308:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
     public final void rule__XWhileExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16258:1: ( rule__XWhileExpression__Group__5__Impl )
-            // InternalPerspectiveDsl.g:16259:2: rule__XWhileExpression__Group__5__Impl
+            // InternalPerspectiveDsl.g:16312:1: ( rule__XWhileExpression__Group__5__Impl )
+            // InternalPerspectiveDsl.g:16313:2: rule__XWhileExpression__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__Group__5__Impl();
@@ -53468,23 +53633,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:16265:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
+    // InternalPerspectiveDsl.g:16319:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
     public final void rule__XWhileExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16269:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
-            // InternalPerspectiveDsl.g:16270:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalPerspectiveDsl.g:16323:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:16324:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
             {
-            // InternalPerspectiveDsl.g:16270:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
-            // InternalPerspectiveDsl.g:16271:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalPerspectiveDsl.g:16324:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalPerspectiveDsl.g:16325:2: ( rule__XWhileExpression__BodyAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:16272:2: ( rule__XWhileExpression__BodyAssignment_5 )
-            // InternalPerspectiveDsl.g:16272:3: rule__XWhileExpression__BodyAssignment_5
+            // InternalPerspectiveDsl.g:16326:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalPerspectiveDsl.g:16326:3: rule__XWhileExpression__BodyAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__BodyAssignment_5();
@@ -53519,14 +53684,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__0"
-    // InternalPerspectiveDsl.g:16281:1: rule__XDoWhileExpression__Group__0 : rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:16335:1: rule__XDoWhileExpression__Group__0 : rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 ;
     public final void rule__XDoWhileExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16285:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
-            // InternalPerspectiveDsl.g:16286:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
+            // InternalPerspectiveDsl.g:16339:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
+            // InternalPerspectiveDsl.g:16340:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
             {
             pushFollow(FOLLOW_121);
             rule__XDoWhileExpression__Group__0__Impl();
@@ -53557,23 +53722,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16293:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:16347:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
     public final void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16297:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:16298:1: ( () )
+            // InternalPerspectiveDsl.g:16351:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:16352:1: ( () )
             {
-            // InternalPerspectiveDsl.g:16298:1: ( () )
-            // InternalPerspectiveDsl.g:16299:2: ()
+            // InternalPerspectiveDsl.g:16352:1: ( () )
+            // InternalPerspectiveDsl.g:16353:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:16300:2: ()
-            // InternalPerspectiveDsl.g:16300:3: 
+            // InternalPerspectiveDsl.g:16354:2: ()
+            // InternalPerspectiveDsl.g:16354:3: 
             {
             }
 
@@ -53598,14 +53763,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__1"
-    // InternalPerspectiveDsl.g:16308:1: rule__XDoWhileExpression__Group__1 : rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:16362:1: rule__XDoWhileExpression__Group__1 : rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 ;
     public final void rule__XDoWhileExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16312:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
-            // InternalPerspectiveDsl.g:16313:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
+            // InternalPerspectiveDsl.g:16366:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
+            // InternalPerspectiveDsl.g:16367:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
             {
             pushFollow(FOLLOW_62);
             rule__XDoWhileExpression__Group__1__Impl();
@@ -53636,22 +53801,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16320:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
+    // InternalPerspectiveDsl.g:16374:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
     public final void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16324:1: ( ( 'do' ) )
-            // InternalPerspectiveDsl.g:16325:1: ( 'do' )
+            // InternalPerspectiveDsl.g:16378:1: ( ( 'do' ) )
+            // InternalPerspectiveDsl.g:16379:1: ( 'do' )
             {
-            // InternalPerspectiveDsl.g:16325:1: ( 'do' )
-            // InternalPerspectiveDsl.g:16326:2: 'do'
+            // InternalPerspectiveDsl.g:16379:1: ( 'do' )
+            // InternalPerspectiveDsl.g:16380:2: 'do'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
             }
-            match(input,112,FOLLOW_2); if (state.failed) return ;
+            match(input,114,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
             }
@@ -53677,14 +53842,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__2"
-    // InternalPerspectiveDsl.g:16335:1: rule__XDoWhileExpression__Group__2 : rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:16389:1: rule__XDoWhileExpression__Group__2 : rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 ;
     public final void rule__XDoWhileExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16339:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
-            // InternalPerspectiveDsl.g:16340:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
+            // InternalPerspectiveDsl.g:16393:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
+            // InternalPerspectiveDsl.g:16394:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
             {
             pushFollow(FOLLOW_120);
             rule__XDoWhileExpression__Group__2__Impl();
@@ -53715,23 +53880,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:16347:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:16401:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
     public final void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16351:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:16352:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalPerspectiveDsl.g:16405:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:16406:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:16352:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
-            // InternalPerspectiveDsl.g:16353:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalPerspectiveDsl.g:16406:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalPerspectiveDsl.g:16407:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:16354:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
-            // InternalPerspectiveDsl.g:16354:3: rule__XDoWhileExpression__BodyAssignment_2
+            // InternalPerspectiveDsl.g:16408:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalPerspectiveDsl.g:16408:3: rule__XDoWhileExpression__BodyAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__BodyAssignment_2();
@@ -53766,14 +53931,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__3"
-    // InternalPerspectiveDsl.g:16362:1: rule__XDoWhileExpression__Group__3 : rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 ;
+    // InternalPerspectiveDsl.g:16416:1: rule__XDoWhileExpression__Group__3 : rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 ;
     public final void rule__XDoWhileExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16366:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
-            // InternalPerspectiveDsl.g:16367:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
+            // InternalPerspectiveDsl.g:16420:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
+            // InternalPerspectiveDsl.g:16421:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
             {
             pushFollow(FOLLOW_58);
             rule__XDoWhileExpression__Group__3__Impl();
@@ -53804,22 +53969,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:16374:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
+    // InternalPerspectiveDsl.g:16428:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
     public final void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16378:1: ( ( 'while' ) )
-            // InternalPerspectiveDsl.g:16379:1: ( 'while' )
+            // InternalPerspectiveDsl.g:16432:1: ( ( 'while' ) )
+            // InternalPerspectiveDsl.g:16433:1: ( 'while' )
             {
-            // InternalPerspectiveDsl.g:16379:1: ( 'while' )
-            // InternalPerspectiveDsl.g:16380:2: 'while'
+            // InternalPerspectiveDsl.g:16433:1: ( 'while' )
+            // InternalPerspectiveDsl.g:16434:2: 'while'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
             }
-            match(input,111,FOLLOW_2); if (state.failed) return ;
+            match(input,113,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
             }
@@ -53845,14 +54010,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__4"
-    // InternalPerspectiveDsl.g:16389:1: rule__XDoWhileExpression__Group__4 : rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 ;
+    // InternalPerspectiveDsl.g:16443:1: rule__XDoWhileExpression__Group__4 : rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 ;
     public final void rule__XDoWhileExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16393:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
-            // InternalPerspectiveDsl.g:16394:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
+            // InternalPerspectiveDsl.g:16447:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
+            // InternalPerspectiveDsl.g:16448:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
             {
             pushFollow(FOLLOW_62);
             rule__XDoWhileExpression__Group__4__Impl();
@@ -53883,22 +54048,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__4__Impl"
-    // InternalPerspectiveDsl.g:16401:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:16455:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
     public final void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16405:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:16406:1: ( '(' )
+            // InternalPerspectiveDsl.g:16459:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:16460:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:16406:1: ( '(' )
-            // InternalPerspectiveDsl.g:16407:2: '('
+            // InternalPerspectiveDsl.g:16460:1: ( '(' )
+            // InternalPerspectiveDsl.g:16461:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
             }
@@ -53924,14 +54089,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__5"
-    // InternalPerspectiveDsl.g:16416:1: rule__XDoWhileExpression__Group__5 : rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 ;
+    // InternalPerspectiveDsl.g:16470:1: rule__XDoWhileExpression__Group__5 : rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 ;
     public final void rule__XDoWhileExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16420:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
-            // InternalPerspectiveDsl.g:16421:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
+            // InternalPerspectiveDsl.g:16474:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
+            // InternalPerspectiveDsl.g:16475:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
             {
             pushFollow(FOLLOW_107);
             rule__XDoWhileExpression__Group__5__Impl();
@@ -53962,23 +54127,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__5__Impl"
-    // InternalPerspectiveDsl.g:16428:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
+    // InternalPerspectiveDsl.g:16482:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
     public final void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16432:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
-            // InternalPerspectiveDsl.g:16433:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalPerspectiveDsl.g:16486:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
+            // InternalPerspectiveDsl.g:16487:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
             {
-            // InternalPerspectiveDsl.g:16433:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
-            // InternalPerspectiveDsl.g:16434:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalPerspectiveDsl.g:16487:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalPerspectiveDsl.g:16488:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:16435:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
-            // InternalPerspectiveDsl.g:16435:3: rule__XDoWhileExpression__PredicateAssignment_5
+            // InternalPerspectiveDsl.g:16489:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalPerspectiveDsl.g:16489:3: rule__XDoWhileExpression__PredicateAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__PredicateAssignment_5();
@@ -54013,14 +54178,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__6"
-    // InternalPerspectiveDsl.g:16443:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
+    // InternalPerspectiveDsl.g:16497:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
     public final void rule__XDoWhileExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16447:1: ( rule__XDoWhileExpression__Group__6__Impl )
-            // InternalPerspectiveDsl.g:16448:2: rule__XDoWhileExpression__Group__6__Impl
+            // InternalPerspectiveDsl.g:16501:1: ( rule__XDoWhileExpression__Group__6__Impl )
+            // InternalPerspectiveDsl.g:16502:2: rule__XDoWhileExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__Group__6__Impl();
@@ -54046,22 +54211,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__6__Impl"
-    // InternalPerspectiveDsl.g:16454:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:16508:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
     public final void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16458:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:16459:1: ( ')' )
+            // InternalPerspectiveDsl.g:16512:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:16513:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:16459:1: ( ')' )
-            // InternalPerspectiveDsl.g:16460:2: ')'
+            // InternalPerspectiveDsl.g:16513:1: ( ')' )
+            // InternalPerspectiveDsl.g:16514:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
             }
@@ -54087,14 +54252,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__0"
-    // InternalPerspectiveDsl.g:16470:1: rule__XBlockExpression__Group__0 : rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:16524:1: rule__XBlockExpression__Group__0 : rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 ;
     public final void rule__XBlockExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16474:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
-            // InternalPerspectiveDsl.g:16475:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
+            // InternalPerspectiveDsl.g:16528:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
+            // InternalPerspectiveDsl.g:16529:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
             {
             pushFollow(FOLLOW_8);
             rule__XBlockExpression__Group__0__Impl();
@@ -54125,23 +54290,23 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16482:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:16536:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
     public final void rule__XBlockExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16486:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:16487:1: ( () )
+            // InternalPerspectiveDsl.g:16540:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:16541:1: ( () )
             {
-            // InternalPerspectiveDsl.g:16487:1: ( () )
-            // InternalPerspectiveDsl.g:16488:2: ()
+            // InternalPerspectiveDsl.g:16541:1: ( () )
+            // InternalPerspectiveDsl.g:16542:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:16489:2: ()
-            // InternalPerspectiveDsl.g:16489:3: 
+            // InternalPerspectiveDsl.g:16543:2: ()
+            // InternalPerspectiveDsl.g:16543:3: 
             {
             }
 
@@ -54166,14 +54331,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__1"
-    // InternalPerspectiveDsl.g:16497:1: rule__XBlockExpression__Group__1 : rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:16551:1: rule__XBlockExpression__Group__1 : rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 ;
     public final void rule__XBlockExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16501:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
-            // InternalPerspectiveDsl.g:16502:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
+            // InternalPerspectiveDsl.g:16555:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
+            // InternalPerspectiveDsl.g:16556:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
             {
             pushFollow(FOLLOW_122);
             rule__XBlockExpression__Group__1__Impl();
@@ -54204,17 +54369,17 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16509:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
+    // InternalPerspectiveDsl.g:16563:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
     public final void rule__XBlockExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16513:1: ( ( '{' ) )
-            // InternalPerspectiveDsl.g:16514:1: ( '{' )
+            // InternalPerspectiveDsl.g:16567:1: ( ( '{' ) )
+            // InternalPerspectiveDsl.g:16568:1: ( '{' )
             {
-            // InternalPerspectiveDsl.g:16514:1: ( '{' )
-            // InternalPerspectiveDsl.g:16515:2: '{'
+            // InternalPerspectiveDsl.g:16568:1: ( '{' )
+            // InternalPerspectiveDsl.g:16569:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
@@ -54245,14 +54410,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__2"
-    // InternalPerspectiveDsl.g:16524:1: rule__XBlockExpression__Group__2 : rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:16578:1: rule__XBlockExpression__Group__2 : rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 ;
     public final void rule__XBlockExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16528:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
-            // InternalPerspectiveDsl.g:16529:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
+            // InternalPerspectiveDsl.g:16582:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
+            // InternalPerspectiveDsl.g:16583:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
             {
             pushFollow(FOLLOW_122);
             rule__XBlockExpression__Group__2__Impl();
@@ -54283,35 +54448,35 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:16536:1: rule__XBlockExpression__Group__2__Impl : ( ( rule__XBlockExpression__Group_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:16590:1: rule__XBlockExpression__Group__2__Impl : ( ( rule__XBlockExpression__Group_2__0 )* ) ;
     public final void rule__XBlockExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16540:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
-            // InternalPerspectiveDsl.g:16541:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalPerspectiveDsl.g:16594:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
+            // InternalPerspectiveDsl.g:16595:1: ( ( rule__XBlockExpression__Group_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:16541:1: ( ( rule__XBlockExpression__Group_2__0 )* )
-            // InternalPerspectiveDsl.g:16542:2: ( rule__XBlockExpression__Group_2__0 )*
+            // InternalPerspectiveDsl.g:16595:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalPerspectiveDsl.g:16596:2: ( rule__XBlockExpression__Group_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getGroup_2()); 
             }
-            // InternalPerspectiveDsl.g:16543:2: ( rule__XBlockExpression__Group_2__0 )*
+            // InternalPerspectiveDsl.g:16597:2: ( rule__XBlockExpression__Group_2__0 )*
             loop112:
             do {
                 int alt112=2;
                 int LA112_0 = input.LA(1);
 
-                if ( ((LA112_0>=RULE_ID && LA112_0<=RULE_DECIMAL)||LA112_0==27||(LA112_0>=34 && LA112_0<=35)||LA112_0==40||(LA112_0>=44 && LA112_0<=50)||LA112_0==54||LA112_0==96||(LA112_0>=100 && LA112_0<=101)||LA112_0==104||LA112_0==106||(LA112_0>=110 && LA112_0<=118)||LA112_0==120||(LA112_0>=130 && LA112_0<=131)) ) {
+                if ( ((LA112_0>=RULE_ID && LA112_0<=RULE_DECIMAL)||LA112_0==27||(LA112_0>=34 && LA112_0<=35)||LA112_0==40||(LA112_0>=44 && LA112_0<=50)||LA112_0==54||LA112_0==98||(LA112_0>=102 && LA112_0<=103)||LA112_0==106||LA112_0==108||(LA112_0>=112 && LA112_0<=120)||LA112_0==122||(LA112_0>=132 && LA112_0<=133)) ) {
                     alt112=1;
                 }
 
 
                 switch (alt112) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:16543:3: rule__XBlockExpression__Group_2__0
+            	    // InternalPerspectiveDsl.g:16597:3: rule__XBlockExpression__Group_2__0
             	    {
             	    pushFollow(FOLLOW_106);
             	    rule__XBlockExpression__Group_2__0();
@@ -54352,14 +54517,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__3"
-    // InternalPerspectiveDsl.g:16551:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:16605:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
     public final void rule__XBlockExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16555:1: ( rule__XBlockExpression__Group__3__Impl )
-            // InternalPerspectiveDsl.g:16556:2: rule__XBlockExpression__Group__3__Impl
+            // InternalPerspectiveDsl.g:16609:1: ( rule__XBlockExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:16610:2: rule__XBlockExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group__3__Impl();
@@ -54385,17 +54550,17 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:16562:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
+    // InternalPerspectiveDsl.g:16616:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
     public final void rule__XBlockExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16566:1: ( ( '}' ) )
-            // InternalPerspectiveDsl.g:16567:1: ( '}' )
+            // InternalPerspectiveDsl.g:16620:1: ( ( '}' ) )
+            // InternalPerspectiveDsl.g:16621:1: ( '}' )
             {
-            // InternalPerspectiveDsl.g:16567:1: ( '}' )
-            // InternalPerspectiveDsl.g:16568:2: '}'
+            // InternalPerspectiveDsl.g:16621:1: ( '}' )
+            // InternalPerspectiveDsl.g:16622:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
@@ -54426,14 +54591,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__0"
-    // InternalPerspectiveDsl.g:16578:1: rule__XBlockExpression__Group_2__0 : rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 ;
+    // InternalPerspectiveDsl.g:16632:1: rule__XBlockExpression__Group_2__0 : rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 ;
     public final void rule__XBlockExpression__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16582:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
-            // InternalPerspectiveDsl.g:16583:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
+            // InternalPerspectiveDsl.g:16636:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
+            // InternalPerspectiveDsl.g:16637:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
             {
             pushFollow(FOLLOW_54);
             rule__XBlockExpression__Group_2__0__Impl();
@@ -54464,23 +54629,23 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__0__Impl"
-    // InternalPerspectiveDsl.g:16590:1: rule__XBlockExpression__Group_2__0__Impl : ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) ;
+    // InternalPerspectiveDsl.g:16644:1: rule__XBlockExpression__Group_2__0__Impl : ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) ;
     public final void rule__XBlockExpression__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16594:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
-            // InternalPerspectiveDsl.g:16595:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalPerspectiveDsl.g:16648:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
+            // InternalPerspectiveDsl.g:16649:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
             {
-            // InternalPerspectiveDsl.g:16595:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
-            // InternalPerspectiveDsl.g:16596:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalPerspectiveDsl.g:16649:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalPerspectiveDsl.g:16650:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); 
             }
-            // InternalPerspectiveDsl.g:16597:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
-            // InternalPerspectiveDsl.g:16597:3: rule__XBlockExpression__ExpressionsAssignment_2_0
+            // InternalPerspectiveDsl.g:16651:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalPerspectiveDsl.g:16651:3: rule__XBlockExpression__ExpressionsAssignment_2_0
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__ExpressionsAssignment_2_0();
@@ -54515,14 +54680,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__1"
-    // InternalPerspectiveDsl.g:16605:1: rule__XBlockExpression__Group_2__1 : rule__XBlockExpression__Group_2__1__Impl ;
+    // InternalPerspectiveDsl.g:16659:1: rule__XBlockExpression__Group_2__1 : rule__XBlockExpression__Group_2__1__Impl ;
     public final void rule__XBlockExpression__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16609:1: ( rule__XBlockExpression__Group_2__1__Impl )
-            // InternalPerspectiveDsl.g:16610:2: rule__XBlockExpression__Group_2__1__Impl
+            // InternalPerspectiveDsl.g:16663:1: ( rule__XBlockExpression__Group_2__1__Impl )
+            // InternalPerspectiveDsl.g:16664:2: rule__XBlockExpression__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group_2__1__Impl();
@@ -54548,33 +54713,33 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__1__Impl"
-    // InternalPerspectiveDsl.g:16616:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
+    // InternalPerspectiveDsl.g:16670:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
     public final void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16620:1: ( ( ( ';' )? ) )
-            // InternalPerspectiveDsl.g:16621:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:16674:1: ( ( ( ';' )? ) )
+            // InternalPerspectiveDsl.g:16675:1: ( ( ';' )? )
             {
-            // InternalPerspectiveDsl.g:16621:1: ( ( ';' )? )
-            // InternalPerspectiveDsl.g:16622:2: ( ';' )?
+            // InternalPerspectiveDsl.g:16675:1: ( ( ';' )? )
+            // InternalPerspectiveDsl.g:16676:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); 
             }
-            // InternalPerspectiveDsl.g:16623:2: ( ';' )?
+            // InternalPerspectiveDsl.g:16677:2: ( ';' )?
             int alt113=2;
             int LA113_0 = input.LA(1);
 
-            if ( (LA113_0==94) ) {
+            if ( (LA113_0==96) ) {
                 alt113=1;
             }
             switch (alt113) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16623:3: ';'
+                    // InternalPerspectiveDsl.g:16677:3: ';'
                     {
-                    match(input,94,FOLLOW_2); if (state.failed) return ;
+                    match(input,96,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -54606,14 +54771,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__0"
-    // InternalPerspectiveDsl.g:16632:1: rule__XVariableDeclaration__Group__0 : rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 ;
+    // InternalPerspectiveDsl.g:16686:1: rule__XVariableDeclaration__Group__0 : rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 ;
     public final void rule__XVariableDeclaration__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16636:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
-            // InternalPerspectiveDsl.g:16637:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
+            // InternalPerspectiveDsl.g:16690:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
+            // InternalPerspectiveDsl.g:16691:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
             {
             pushFollow(FOLLOW_123);
             rule__XVariableDeclaration__Group__0__Impl();
@@ -54644,23 +54809,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16644:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:16698:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
     public final void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16648:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:16649:1: ( () )
+            // InternalPerspectiveDsl.g:16702:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:16703:1: ( () )
             {
-            // InternalPerspectiveDsl.g:16649:1: ( () )
-            // InternalPerspectiveDsl.g:16650:2: ()
+            // InternalPerspectiveDsl.g:16703:1: ( () )
+            // InternalPerspectiveDsl.g:16704:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); 
             }
-            // InternalPerspectiveDsl.g:16651:2: ()
-            // InternalPerspectiveDsl.g:16651:3: 
+            // InternalPerspectiveDsl.g:16705:2: ()
+            // InternalPerspectiveDsl.g:16705:3: 
             {
             }
 
@@ -54685,14 +54850,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__1"
-    // InternalPerspectiveDsl.g:16659:1: rule__XVariableDeclaration__Group__1 : rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 ;
+    // InternalPerspectiveDsl.g:16713:1: rule__XVariableDeclaration__Group__1 : rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 ;
     public final void rule__XVariableDeclaration__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16663:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
-            // InternalPerspectiveDsl.g:16664:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
+            // InternalPerspectiveDsl.g:16717:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
+            // InternalPerspectiveDsl.g:16718:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
             {
             pushFollow(FOLLOW_79);
             rule__XVariableDeclaration__Group__1__Impl();
@@ -54723,23 +54888,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16671:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
+    // InternalPerspectiveDsl.g:16725:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
     public final void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16675:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
-            // InternalPerspectiveDsl.g:16676:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:16729:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
+            // InternalPerspectiveDsl.g:16730:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
             {
-            // InternalPerspectiveDsl.g:16676:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
-            // InternalPerspectiveDsl.g:16677:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalPerspectiveDsl.g:16730:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:16731:2: ( rule__XVariableDeclaration__Alternatives_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); 
             }
-            // InternalPerspectiveDsl.g:16678:2: ( rule__XVariableDeclaration__Alternatives_1 )
-            // InternalPerspectiveDsl.g:16678:3: rule__XVariableDeclaration__Alternatives_1
+            // InternalPerspectiveDsl.g:16732:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalPerspectiveDsl.g:16732:3: rule__XVariableDeclaration__Alternatives_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Alternatives_1();
@@ -54774,14 +54939,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__2"
-    // InternalPerspectiveDsl.g:16686:1: rule__XVariableDeclaration__Group__2 : rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 ;
+    // InternalPerspectiveDsl.g:16740:1: rule__XVariableDeclaration__Group__2 : rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 ;
     public final void rule__XVariableDeclaration__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16690:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
-            // InternalPerspectiveDsl.g:16691:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
+            // InternalPerspectiveDsl.g:16744:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
+            // InternalPerspectiveDsl.g:16745:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
             {
             pushFollow(FOLLOW_63);
             rule__XVariableDeclaration__Group__2__Impl();
@@ -54812,23 +54977,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__2__Impl"
-    // InternalPerspectiveDsl.g:16698:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
+    // InternalPerspectiveDsl.g:16752:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
     public final void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16702:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
-            // InternalPerspectiveDsl.g:16703:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:16756:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
+            // InternalPerspectiveDsl.g:16757:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
             {
-            // InternalPerspectiveDsl.g:16703:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
-            // InternalPerspectiveDsl.g:16704:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:16757:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalPerspectiveDsl.g:16758:2: ( rule__XVariableDeclaration__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); 
             }
-            // InternalPerspectiveDsl.g:16705:2: ( rule__XVariableDeclaration__Alternatives_2 )
-            // InternalPerspectiveDsl.g:16705:3: rule__XVariableDeclaration__Alternatives_2
+            // InternalPerspectiveDsl.g:16759:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalPerspectiveDsl.g:16759:3: rule__XVariableDeclaration__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Alternatives_2();
@@ -54863,14 +55028,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__3"
-    // InternalPerspectiveDsl.g:16713:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:16767:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
     public final void rule__XVariableDeclaration__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16717:1: ( rule__XVariableDeclaration__Group__3__Impl )
-            // InternalPerspectiveDsl.g:16718:2: rule__XVariableDeclaration__Group__3__Impl
+            // InternalPerspectiveDsl.g:16771:1: ( rule__XVariableDeclaration__Group__3__Impl )
+            // InternalPerspectiveDsl.g:16772:2: rule__XVariableDeclaration__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group__3__Impl();
@@ -54896,22 +55061,22 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__3__Impl"
-    // InternalPerspectiveDsl.g:16724:1: rule__XVariableDeclaration__Group__3__Impl : ( ( rule__XVariableDeclaration__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:16778:1: rule__XVariableDeclaration__Group__3__Impl : ( ( rule__XVariableDeclaration__Group_3__0 )? ) ;
     public final void rule__XVariableDeclaration__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16728:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:16729:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16782:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:16783:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:16729:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:16730:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            // InternalPerspectiveDsl.g:16783:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:16784:2: ( rule__XVariableDeclaration__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:16731:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            // InternalPerspectiveDsl.g:16785:2: ( rule__XVariableDeclaration__Group_3__0 )?
             int alt114=2;
             int LA114_0 = input.LA(1);
 
@@ -54920,7 +55085,7 @@
             }
             switch (alt114) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16731:3: rule__XVariableDeclaration__Group_3__0
+                    // InternalPerspectiveDsl.g:16785:3: rule__XVariableDeclaration__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__Group_3__0();
@@ -54958,14 +55123,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0"
-    // InternalPerspectiveDsl.g:16740:1: rule__XVariableDeclaration__Group_2_0__0 : rule__XVariableDeclaration__Group_2_0__0__Impl ;
+    // InternalPerspectiveDsl.g:16794:1: rule__XVariableDeclaration__Group_2_0__0 : rule__XVariableDeclaration__Group_2_0__0__Impl ;
     public final void rule__XVariableDeclaration__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16744:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
-            // InternalPerspectiveDsl.g:16745:2: rule__XVariableDeclaration__Group_2_0__0__Impl
+            // InternalPerspectiveDsl.g:16798:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
+            // InternalPerspectiveDsl.g:16799:2: rule__XVariableDeclaration__Group_2_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0__0__Impl();
@@ -54991,23 +55156,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0__Impl"
-    // InternalPerspectiveDsl.g:16751:1: rule__XVariableDeclaration__Group_2_0__0__Impl : ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:16805:1: rule__XVariableDeclaration__Group_2_0__0__Impl : ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) ;
     public final void rule__XVariableDeclaration__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16755:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:16756:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:16809:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:16810:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:16756:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
-            // InternalPerspectiveDsl.g:16757:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:16810:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalPerspectiveDsl.g:16811:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); 
             }
-            // InternalPerspectiveDsl.g:16758:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
-            // InternalPerspectiveDsl.g:16758:3: rule__XVariableDeclaration__Group_2_0_0__0
+            // InternalPerspectiveDsl.g:16812:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalPerspectiveDsl.g:16812:3: rule__XVariableDeclaration__Group_2_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0_0__0();
@@ -55042,14 +55207,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0"
-    // InternalPerspectiveDsl.g:16767:1: rule__XVariableDeclaration__Group_2_0_0__0 : rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 ;
+    // InternalPerspectiveDsl.g:16821:1: rule__XVariableDeclaration__Group_2_0_0__0 : rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 ;
     public final void rule__XVariableDeclaration__Group_2_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16771:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
-            // InternalPerspectiveDsl.g:16772:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
+            // InternalPerspectiveDsl.g:16825:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
+            // InternalPerspectiveDsl.g:16826:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
             {
             pushFollow(FOLLOW_7);
             rule__XVariableDeclaration__Group_2_0_0__0__Impl();
@@ -55080,23 +55245,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:16779:1: rule__XVariableDeclaration__Group_2_0_0__0__Impl : ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:16833:1: rule__XVariableDeclaration__Group_2_0_0__0__Impl : ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) ;
     public final void rule__XVariableDeclaration__Group_2_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16783:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
-            // InternalPerspectiveDsl.g:16784:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalPerspectiveDsl.g:16837:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
+            // InternalPerspectiveDsl.g:16838:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:16784:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
-            // InternalPerspectiveDsl.g:16785:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalPerspectiveDsl.g:16838:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalPerspectiveDsl.g:16839:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:16786:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
-            // InternalPerspectiveDsl.g:16786:3: rule__XVariableDeclaration__TypeAssignment_2_0_0_0
+            // InternalPerspectiveDsl.g:16840:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalPerspectiveDsl.g:16840:3: rule__XVariableDeclaration__TypeAssignment_2_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__TypeAssignment_2_0_0_0();
@@ -55131,14 +55296,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1"
-    // InternalPerspectiveDsl.g:16794:1: rule__XVariableDeclaration__Group_2_0_0__1 : rule__XVariableDeclaration__Group_2_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:16848:1: rule__XVariableDeclaration__Group_2_0_0__1 : rule__XVariableDeclaration__Group_2_0_0__1__Impl ;
     public final void rule__XVariableDeclaration__Group_2_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16798:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:16799:2: rule__XVariableDeclaration__Group_2_0_0__1__Impl
+            // InternalPerspectiveDsl.g:16852:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:16853:2: rule__XVariableDeclaration__Group_2_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0_0__1__Impl();
@@ -55164,23 +55329,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:16805:1: rule__XVariableDeclaration__Group_2_0_0__1__Impl : ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) ;
+    // InternalPerspectiveDsl.g:16859:1: rule__XVariableDeclaration__Group_2_0_0__1__Impl : ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) ;
     public final void rule__XVariableDeclaration__Group_2_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16809:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
-            // InternalPerspectiveDsl.g:16810:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalPerspectiveDsl.g:16863:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
+            // InternalPerspectiveDsl.g:16864:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
             {
-            // InternalPerspectiveDsl.g:16810:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
-            // InternalPerspectiveDsl.g:16811:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalPerspectiveDsl.g:16864:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalPerspectiveDsl.g:16865:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); 
             }
-            // InternalPerspectiveDsl.g:16812:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
-            // InternalPerspectiveDsl.g:16812:3: rule__XVariableDeclaration__NameAssignment_2_0_0_1
+            // InternalPerspectiveDsl.g:16866:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalPerspectiveDsl.g:16866:3: rule__XVariableDeclaration__NameAssignment_2_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__NameAssignment_2_0_0_1();
@@ -55215,14 +55380,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__0"
-    // InternalPerspectiveDsl.g:16821:1: rule__XVariableDeclaration__Group_3__0 : rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 ;
+    // InternalPerspectiveDsl.g:16875:1: rule__XVariableDeclaration__Group_3__0 : rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 ;
     public final void rule__XVariableDeclaration__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16825:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
-            // InternalPerspectiveDsl.g:16826:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
+            // InternalPerspectiveDsl.g:16879:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
+            // InternalPerspectiveDsl.g:16880:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
             {
             pushFollow(FOLLOW_62);
             rule__XVariableDeclaration__Group_3__0__Impl();
@@ -55253,17 +55418,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:16833:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
+    // InternalPerspectiveDsl.g:16887:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
     public final void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16837:1: ( ( '=' ) )
-            // InternalPerspectiveDsl.g:16838:1: ( '=' )
+            // InternalPerspectiveDsl.g:16891:1: ( ( '=' ) )
+            // InternalPerspectiveDsl.g:16892:1: ( '=' )
             {
-            // InternalPerspectiveDsl.g:16838:1: ( '=' )
-            // InternalPerspectiveDsl.g:16839:2: '='
+            // InternalPerspectiveDsl.g:16892:1: ( '=' )
+            // InternalPerspectiveDsl.g:16893:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0()); 
@@ -55294,14 +55459,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__1"
-    // InternalPerspectiveDsl.g:16848:1: rule__XVariableDeclaration__Group_3__1 : rule__XVariableDeclaration__Group_3__1__Impl ;
+    // InternalPerspectiveDsl.g:16902:1: rule__XVariableDeclaration__Group_3__1 : rule__XVariableDeclaration__Group_3__1__Impl ;
     public final void rule__XVariableDeclaration__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16852:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
-            // InternalPerspectiveDsl.g:16853:2: rule__XVariableDeclaration__Group_3__1__Impl
+            // InternalPerspectiveDsl.g:16906:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
+            // InternalPerspectiveDsl.g:16907:2: rule__XVariableDeclaration__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_3__1__Impl();
@@ -55327,23 +55492,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:16859:1: rule__XVariableDeclaration__Group_3__1__Impl : ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:16913:1: rule__XVariableDeclaration__Group_3__1__Impl : ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) ;
     public final void rule__XVariableDeclaration__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16863:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
-            // InternalPerspectiveDsl.g:16864:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:16917:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:16918:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:16864:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
-            // InternalPerspectiveDsl.g:16865:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalPerspectiveDsl.g:16918:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:16919:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); 
             }
-            // InternalPerspectiveDsl.g:16866:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
-            // InternalPerspectiveDsl.g:16866:3: rule__XVariableDeclaration__RightAssignment_3_1
+            // InternalPerspectiveDsl.g:16920:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalPerspectiveDsl.g:16920:3: rule__XVariableDeclaration__RightAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__RightAssignment_3_1();
@@ -55378,14 +55543,14 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__0"
-    // InternalPerspectiveDsl.g:16875:1: rule__JvmFormalParameter__Group__0 : rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 ;
+    // InternalPerspectiveDsl.g:16929:1: rule__JvmFormalParameter__Group__0 : rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 ;
     public final void rule__JvmFormalParameter__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16879:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
-            // InternalPerspectiveDsl.g:16880:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
+            // InternalPerspectiveDsl.g:16933:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
+            // InternalPerspectiveDsl.g:16934:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
             {
             pushFollow(FOLLOW_79);
             rule__JvmFormalParameter__Group__0__Impl();
@@ -55416,38 +55581,38 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16887:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
+    // InternalPerspectiveDsl.g:16941:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
     public final void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16891:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
-            // InternalPerspectiveDsl.g:16892:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalPerspectiveDsl.g:16945:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
+            // InternalPerspectiveDsl.g:16946:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
             {
-            // InternalPerspectiveDsl.g:16892:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
-            // InternalPerspectiveDsl.g:16893:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            // InternalPerspectiveDsl.g:16946:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalPerspectiveDsl.g:16947:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
             }
-            // InternalPerspectiveDsl.g:16894:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            // InternalPerspectiveDsl.g:16948:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
             int alt115=2;
             int LA115_0 = input.LA(1);
 
             if ( (LA115_0==RULE_ID) ) {
                 int LA115_1 = input.LA(2);
 
-                if ( (LA115_1==RULE_ID||LA115_1==27||LA115_1==43||LA115_1==101) ) {
+                if ( (LA115_1==RULE_ID||LA115_1==27||LA115_1==43||LA115_1==103) ) {
                     alt115=1;
                 }
             }
-            else if ( (LA115_0==31||LA115_0==96) ) {
+            else if ( (LA115_0==31||LA115_0==98) ) {
                 alt115=1;
             }
             switch (alt115) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:16894:3: rule__JvmFormalParameter__ParameterTypeAssignment_0
+                    // InternalPerspectiveDsl.g:16948:3: rule__JvmFormalParameter__ParameterTypeAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmFormalParameter__ParameterTypeAssignment_0();
@@ -55485,14 +55650,14 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__1"
-    // InternalPerspectiveDsl.g:16902:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:16956:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
     public final void rule__JvmFormalParameter__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16906:1: ( rule__JvmFormalParameter__Group__1__Impl )
-            // InternalPerspectiveDsl.g:16907:2: rule__JvmFormalParameter__Group__1__Impl
+            // InternalPerspectiveDsl.g:16960:1: ( rule__JvmFormalParameter__Group__1__Impl )
+            // InternalPerspectiveDsl.g:16961:2: rule__JvmFormalParameter__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__Group__1__Impl();
@@ -55518,23 +55683,23 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16913:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:16967:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
     public final void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16917:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:16918:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:16971:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:16972:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:16918:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
-            // InternalPerspectiveDsl.g:16919:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:16972:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:16973:2: ( rule__JvmFormalParameter__NameAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:16920:2: ( rule__JvmFormalParameter__NameAssignment_1 )
-            // InternalPerspectiveDsl.g:16920:3: rule__JvmFormalParameter__NameAssignment_1
+            // InternalPerspectiveDsl.g:16974:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:16974:3: rule__JvmFormalParameter__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__NameAssignment_1();
@@ -55569,14 +55734,14 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__0"
-    // InternalPerspectiveDsl.g:16929:1: rule__FullJvmFormalParameter__Group__0 : rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 ;
+    // InternalPerspectiveDsl.g:16983:1: rule__FullJvmFormalParameter__Group__0 : rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 ;
     public final void rule__FullJvmFormalParameter__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16933:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
-            // InternalPerspectiveDsl.g:16934:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
+            // InternalPerspectiveDsl.g:16987:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
+            // InternalPerspectiveDsl.g:16988:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__FullJvmFormalParameter__Group__0__Impl();
@@ -55607,23 +55772,23 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16941:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
+    // InternalPerspectiveDsl.g:16995:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
     public final void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16945:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
-            // InternalPerspectiveDsl.g:16946:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:16999:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
+            // InternalPerspectiveDsl.g:17000:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
             {
-            // InternalPerspectiveDsl.g:16946:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
-            // InternalPerspectiveDsl.g:16947:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalPerspectiveDsl.g:17000:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:17001:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
             }
-            // InternalPerspectiveDsl.g:16948:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
-            // InternalPerspectiveDsl.g:16948:3: rule__FullJvmFormalParameter__ParameterTypeAssignment_0
+            // InternalPerspectiveDsl.g:17002:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalPerspectiveDsl.g:17002:3: rule__FullJvmFormalParameter__ParameterTypeAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__ParameterTypeAssignment_0();
@@ -55658,14 +55823,14 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__1"
-    // InternalPerspectiveDsl.g:16956:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:17010:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
     public final void rule__FullJvmFormalParameter__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16960:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
-            // InternalPerspectiveDsl.g:16961:2: rule__FullJvmFormalParameter__Group__1__Impl
+            // InternalPerspectiveDsl.g:17014:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
+            // InternalPerspectiveDsl.g:17015:2: rule__FullJvmFormalParameter__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__Group__1__Impl();
@@ -55691,23 +55856,23 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__1__Impl"
-    // InternalPerspectiveDsl.g:16967:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:17021:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
     public final void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16971:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:16972:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:17025:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:17026:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:16972:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
-            // InternalPerspectiveDsl.g:16973:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:17026:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalPerspectiveDsl.g:17027:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:16974:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
-            // InternalPerspectiveDsl.g:16974:3: rule__FullJvmFormalParameter__NameAssignment_1
+            // InternalPerspectiveDsl.g:17028:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalPerspectiveDsl.g:17028:3: rule__FullJvmFormalParameter__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__NameAssignment_1();
@@ -55742,14 +55907,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__0"
-    // InternalPerspectiveDsl.g:16983:1: rule__XFeatureCall__Group__0 : rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 ;
+    // InternalPerspectiveDsl.g:17037:1: rule__XFeatureCall__Group__0 : rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 ;
     public final void rule__XFeatureCall__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16987:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
-            // InternalPerspectiveDsl.g:16988:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
+            // InternalPerspectiveDsl.g:17041:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
+            // InternalPerspectiveDsl.g:17042:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
             {
             pushFollow(FOLLOW_97);
             rule__XFeatureCall__Group__0__Impl();
@@ -55780,23 +55945,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__0__Impl"
-    // InternalPerspectiveDsl.g:16995:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17049:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
     public final void rule__XFeatureCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:16999:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17000:1: ( () )
+            // InternalPerspectiveDsl.g:17053:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17054:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17000:1: ( () )
-            // InternalPerspectiveDsl.g:17001:2: ()
+            // InternalPerspectiveDsl.g:17054:1: ( () )
+            // InternalPerspectiveDsl.g:17055:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17002:2: ()
-            // InternalPerspectiveDsl.g:17002:3: 
+            // InternalPerspectiveDsl.g:17056:2: ()
+            // InternalPerspectiveDsl.g:17056:3: 
             {
             }
 
@@ -55821,14 +55986,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__1"
-    // InternalPerspectiveDsl.g:17010:1: rule__XFeatureCall__Group__1 : rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 ;
+    // InternalPerspectiveDsl.g:17064:1: rule__XFeatureCall__Group__1 : rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 ;
     public final void rule__XFeatureCall__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17014:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
-            // InternalPerspectiveDsl.g:17015:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
+            // InternalPerspectiveDsl.g:17068:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
+            // InternalPerspectiveDsl.g:17069:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
             {
             pushFollow(FOLLOW_97);
             rule__XFeatureCall__Group__1__Impl();
@@ -55859,22 +56024,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17022:1: rule__XFeatureCall__Group__1__Impl : ( ( rule__XFeatureCall__Group_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:17076:1: rule__XFeatureCall__Group__1__Impl : ( ( rule__XFeatureCall__Group_1__0 )? ) ;
     public final void rule__XFeatureCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17026:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
-            // InternalPerspectiveDsl.g:17027:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:17080:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:17081:1: ( ( rule__XFeatureCall__Group_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:17027:1: ( ( rule__XFeatureCall__Group_1__0 )? )
-            // InternalPerspectiveDsl.g:17028:2: ( rule__XFeatureCall__Group_1__0 )?
+            // InternalPerspectiveDsl.g:17081:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:17082:2: ( rule__XFeatureCall__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:17029:2: ( rule__XFeatureCall__Group_1__0 )?
+            // InternalPerspectiveDsl.g:17083:2: ( rule__XFeatureCall__Group_1__0 )?
             int alt116=2;
             int LA116_0 = input.LA(1);
 
@@ -55883,7 +56048,7 @@
             }
             switch (alt116) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17029:3: rule__XFeatureCall__Group_1__0
+                    // InternalPerspectiveDsl.g:17083:3: rule__XFeatureCall__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_1__0();
@@ -55921,14 +56086,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__2"
-    // InternalPerspectiveDsl.g:17037:1: rule__XFeatureCall__Group__2 : rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 ;
+    // InternalPerspectiveDsl.g:17091:1: rule__XFeatureCall__Group__2 : rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 ;
     public final void rule__XFeatureCall__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17041:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
-            // InternalPerspectiveDsl.g:17042:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
+            // InternalPerspectiveDsl.g:17095:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
+            // InternalPerspectiveDsl.g:17096:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
             {
             pushFollow(FOLLOW_98);
             rule__XFeatureCall__Group__2__Impl();
@@ -55959,23 +56124,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__2__Impl"
-    // InternalPerspectiveDsl.g:17049:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:17103:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
     public final void rule__XFeatureCall__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17053:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:17054:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17107:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:17108:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:17054:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
-            // InternalPerspectiveDsl.g:17055:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalPerspectiveDsl.g:17108:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17109:2: ( rule__XFeatureCall__FeatureAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:17056:2: ( rule__XFeatureCall__FeatureAssignment_2 )
-            // InternalPerspectiveDsl.g:17056:3: rule__XFeatureCall__FeatureAssignment_2
+            // InternalPerspectiveDsl.g:17110:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalPerspectiveDsl.g:17110:3: rule__XFeatureCall__FeatureAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureAssignment_2();
@@ -56010,14 +56175,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__3"
-    // InternalPerspectiveDsl.g:17064:1: rule__XFeatureCall__Group__3 : rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 ;
+    // InternalPerspectiveDsl.g:17118:1: rule__XFeatureCall__Group__3 : rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 ;
     public final void rule__XFeatureCall__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17068:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
-            // InternalPerspectiveDsl.g:17069:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
+            // InternalPerspectiveDsl.g:17122:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
+            // InternalPerspectiveDsl.g:17123:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
             {
             pushFollow(FOLLOW_98);
             rule__XFeatureCall__Group__3__Impl();
@@ -56048,27 +56213,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__3__Impl"
-    // InternalPerspectiveDsl.g:17076:1: rule__XFeatureCall__Group__3__Impl : ( ( rule__XFeatureCall__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:17130:1: rule__XFeatureCall__Group__3__Impl : ( ( rule__XFeatureCall__Group_3__0 )? ) ;
     public final void rule__XFeatureCall__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17080:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:17081:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:17134:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:17135:1: ( ( rule__XFeatureCall__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:17081:1: ( ( rule__XFeatureCall__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:17082:2: ( rule__XFeatureCall__Group_3__0 )?
+            // InternalPerspectiveDsl.g:17135:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:17136:2: ( rule__XFeatureCall__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:17083:2: ( rule__XFeatureCall__Group_3__0 )?
+            // InternalPerspectiveDsl.g:17137:2: ( rule__XFeatureCall__Group_3__0 )?
             int alt117=2;
             alt117 = dfa117.predict(input);
             switch (alt117) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17083:3: rule__XFeatureCall__Group_3__0
+                    // InternalPerspectiveDsl.g:17137:3: rule__XFeatureCall__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_3__0();
@@ -56106,14 +56271,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__4"
-    // InternalPerspectiveDsl.g:17091:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:17145:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
     public final void rule__XFeatureCall__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17095:1: ( rule__XFeatureCall__Group__4__Impl )
-            // InternalPerspectiveDsl.g:17096:2: rule__XFeatureCall__Group__4__Impl
+            // InternalPerspectiveDsl.g:17149:1: ( rule__XFeatureCall__Group__4__Impl )
+            // InternalPerspectiveDsl.g:17150:2: rule__XFeatureCall__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group__4__Impl();
@@ -56139,27 +56304,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__4__Impl"
-    // InternalPerspectiveDsl.g:17102:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
+    // InternalPerspectiveDsl.g:17156:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
     public final void rule__XFeatureCall__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17106:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
-            // InternalPerspectiveDsl.g:17107:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalPerspectiveDsl.g:17160:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
+            // InternalPerspectiveDsl.g:17161:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
             {
-            // InternalPerspectiveDsl.g:17107:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
-            // InternalPerspectiveDsl.g:17108:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            // InternalPerspectiveDsl.g:17161:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalPerspectiveDsl.g:17162:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); 
             }
-            // InternalPerspectiveDsl.g:17109:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            // InternalPerspectiveDsl.g:17163:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
             int alt118=2;
             alt118 = dfa118.predict(input);
             switch (alt118) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17109:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+                    // InternalPerspectiveDsl.g:17163:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
@@ -56197,14 +56362,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__0"
-    // InternalPerspectiveDsl.g:17118:1: rule__XFeatureCall__Group_1__0 : rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 ;
+    // InternalPerspectiveDsl.g:17172:1: rule__XFeatureCall__Group_1__0 : rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 ;
     public final void rule__XFeatureCall__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17122:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
-            // InternalPerspectiveDsl.g:17123:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
+            // InternalPerspectiveDsl.g:17176:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
+            // InternalPerspectiveDsl.g:17177:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
             {
             pushFollow(FOLLOW_99);
             rule__XFeatureCall__Group_1__0__Impl();
@@ -56235,17 +56400,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:17130:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
+    // InternalPerspectiveDsl.g:17184:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
     public final void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17134:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:17135:1: ( '<' )
+            // InternalPerspectiveDsl.g:17188:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:17189:1: ( '<' )
             {
-            // InternalPerspectiveDsl.g:17135:1: ( '<' )
-            // InternalPerspectiveDsl.g:17136:2: '<'
+            // InternalPerspectiveDsl.g:17189:1: ( '<' )
+            // InternalPerspectiveDsl.g:17190:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0()); 
@@ -56276,14 +56441,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__1"
-    // InternalPerspectiveDsl.g:17145:1: rule__XFeatureCall__Group_1__1 : rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 ;
+    // InternalPerspectiveDsl.g:17199:1: rule__XFeatureCall__Group_1__1 : rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 ;
     public final void rule__XFeatureCall__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17149:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
-            // InternalPerspectiveDsl.g:17150:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
+            // InternalPerspectiveDsl.g:17203:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
+            // InternalPerspectiveDsl.g:17204:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
             {
             pushFollow(FOLLOW_100);
             rule__XFeatureCall__Group_1__1__Impl();
@@ -56314,23 +56479,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:17157:1: rule__XFeatureCall__Group_1__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:17211:1: rule__XFeatureCall__Group_1__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) ;
     public final void rule__XFeatureCall__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17161:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:17162:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:17215:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:17216:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:17162:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:17163:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:17216:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:17217:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:17164:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
-            // InternalPerspectiveDsl.g:17164:3: rule__XFeatureCall__TypeArgumentsAssignment_1_1
+            // InternalPerspectiveDsl.g:17218:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:17218:3: rule__XFeatureCall__TypeArgumentsAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__TypeArgumentsAssignment_1_1();
@@ -56365,14 +56530,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__2"
-    // InternalPerspectiveDsl.g:17172:1: rule__XFeatureCall__Group_1__2 : rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 ;
+    // InternalPerspectiveDsl.g:17226:1: rule__XFeatureCall__Group_1__2 : rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 ;
     public final void rule__XFeatureCall__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17176:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
-            // InternalPerspectiveDsl.g:17177:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
+            // InternalPerspectiveDsl.g:17230:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
+            // InternalPerspectiveDsl.g:17231:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
             {
             pushFollow(FOLLOW_100);
             rule__XFeatureCall__Group_1__2__Impl();
@@ -56403,35 +56568,35 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__2__Impl"
-    // InternalPerspectiveDsl.g:17184:1: rule__XFeatureCall__Group_1__2__Impl : ( ( rule__XFeatureCall__Group_1_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:17238:1: rule__XFeatureCall__Group_1__2__Impl : ( ( rule__XFeatureCall__Group_1_2__0 )* ) ;
     public final void rule__XFeatureCall__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17188:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
-            // InternalPerspectiveDsl.g:17189:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:17242:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
+            // InternalPerspectiveDsl.g:17243:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:17189:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
-            // InternalPerspectiveDsl.g:17190:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            // InternalPerspectiveDsl.g:17243:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:17244:2: ( rule__XFeatureCall__Group_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); 
             }
-            // InternalPerspectiveDsl.g:17191:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            // InternalPerspectiveDsl.g:17245:2: ( rule__XFeatureCall__Group_1_2__0 )*
             loop119:
             do {
                 int alt119=2;
                 int LA119_0 = input.LA(1);
 
-                if ( (LA119_0==98) ) {
+                if ( (LA119_0==100) ) {
                     alt119=1;
                 }
 
 
                 switch (alt119) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:17191:3: rule__XFeatureCall__Group_1_2__0
+            	    // InternalPerspectiveDsl.g:17245:3: rule__XFeatureCall__Group_1_2__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XFeatureCall__Group_1_2__0();
@@ -56472,14 +56637,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__3"
-    // InternalPerspectiveDsl.g:17199:1: rule__XFeatureCall__Group_1__3 : rule__XFeatureCall__Group_1__3__Impl ;
+    // InternalPerspectiveDsl.g:17253:1: rule__XFeatureCall__Group_1__3 : rule__XFeatureCall__Group_1__3__Impl ;
     public final void rule__XFeatureCall__Group_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17203:1: ( rule__XFeatureCall__Group_1__3__Impl )
-            // InternalPerspectiveDsl.g:17204:2: rule__XFeatureCall__Group_1__3__Impl
+            // InternalPerspectiveDsl.g:17257:1: ( rule__XFeatureCall__Group_1__3__Impl )
+            // InternalPerspectiveDsl.g:17258:2: rule__XFeatureCall__Group_1__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_1__3__Impl();
@@ -56505,17 +56670,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__3__Impl"
-    // InternalPerspectiveDsl.g:17210:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:17264:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
     public final void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17214:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:17215:1: ( '>' )
+            // InternalPerspectiveDsl.g:17268:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:17269:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:17215:1: ( '>' )
-            // InternalPerspectiveDsl.g:17216:2: '>'
+            // InternalPerspectiveDsl.g:17269:1: ( '>' )
+            // InternalPerspectiveDsl.g:17270:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3()); 
@@ -56546,14 +56711,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__0"
-    // InternalPerspectiveDsl.g:17226:1: rule__XFeatureCall__Group_1_2__0 : rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 ;
+    // InternalPerspectiveDsl.g:17280:1: rule__XFeatureCall__Group_1_2__0 : rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 ;
     public final void rule__XFeatureCall__Group_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17230:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
-            // InternalPerspectiveDsl.g:17231:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
+            // InternalPerspectiveDsl.g:17284:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
+            // InternalPerspectiveDsl.g:17285:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
             {
             pushFollow(FOLLOW_99);
             rule__XFeatureCall__Group_1_2__0__Impl();
@@ -56584,22 +56749,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__0__Impl"
-    // InternalPerspectiveDsl.g:17238:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:17292:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
     public final void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17242:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:17243:1: ( ',' )
+            // InternalPerspectiveDsl.g:17296:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:17297:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:17243:1: ( ',' )
-            // InternalPerspectiveDsl.g:17244:2: ','
+            // InternalPerspectiveDsl.g:17297:1: ( ',' )
+            // InternalPerspectiveDsl.g:17298:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
             }
@@ -56625,14 +56790,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__1"
-    // InternalPerspectiveDsl.g:17253:1: rule__XFeatureCall__Group_1_2__1 : rule__XFeatureCall__Group_1_2__1__Impl ;
+    // InternalPerspectiveDsl.g:17307:1: rule__XFeatureCall__Group_1_2__1 : rule__XFeatureCall__Group_1_2__1__Impl ;
     public final void rule__XFeatureCall__Group_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17257:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
-            // InternalPerspectiveDsl.g:17258:2: rule__XFeatureCall__Group_1_2__1__Impl
+            // InternalPerspectiveDsl.g:17311:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
+            // InternalPerspectiveDsl.g:17312:2: rule__XFeatureCall__Group_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_1_2__1__Impl();
@@ -56658,23 +56823,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__1__Impl"
-    // InternalPerspectiveDsl.g:17264:1: rule__XFeatureCall__Group_1_2__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:17318:1: rule__XFeatureCall__Group_1_2__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) ;
     public final void rule__XFeatureCall__Group_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17268:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
-            // InternalPerspectiveDsl.g:17269:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:17322:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
+            // InternalPerspectiveDsl.g:17323:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:17269:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
-            // InternalPerspectiveDsl.g:17270:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:17323:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:17324:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); 
             }
-            // InternalPerspectiveDsl.g:17271:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
-            // InternalPerspectiveDsl.g:17271:3: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
+            // InternalPerspectiveDsl.g:17325:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:17325:3: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__TypeArgumentsAssignment_1_2_1();
@@ -56709,14 +56874,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__0"
-    // InternalPerspectiveDsl.g:17280:1: rule__XFeatureCall__Group_3__0 : rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 ;
+    // InternalPerspectiveDsl.g:17334:1: rule__XFeatureCall__Group_3__0 : rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 ;
     public final void rule__XFeatureCall__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17284:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
-            // InternalPerspectiveDsl.g:17285:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
+            // InternalPerspectiveDsl.g:17338:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
+            // InternalPerspectiveDsl.g:17339:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
             {
             pushFollow(FOLLOW_101);
             rule__XFeatureCall__Group_3__0__Impl();
@@ -56747,23 +56912,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:17292:1: rule__XFeatureCall__Group_3__0__Impl : ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) ;
+    // InternalPerspectiveDsl.g:17346:1: rule__XFeatureCall__Group_3__0__Impl : ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) ;
     public final void rule__XFeatureCall__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17296:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
-            // InternalPerspectiveDsl.g:17297:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:17350:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
+            // InternalPerspectiveDsl.g:17351:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
             {
-            // InternalPerspectiveDsl.g:17297:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
-            // InternalPerspectiveDsl.g:17298:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalPerspectiveDsl.g:17351:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalPerspectiveDsl.g:17352:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); 
             }
-            // InternalPerspectiveDsl.g:17299:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
-            // InternalPerspectiveDsl.g:17299:3: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
+            // InternalPerspectiveDsl.g:17353:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalPerspectiveDsl.g:17353:3: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__ExplicitOperationCallAssignment_3_0();
@@ -56798,14 +56963,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__1"
-    // InternalPerspectiveDsl.g:17307:1: rule__XFeatureCall__Group_3__1 : rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 ;
+    // InternalPerspectiveDsl.g:17361:1: rule__XFeatureCall__Group_3__1 : rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 ;
     public final void rule__XFeatureCall__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17311:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
-            // InternalPerspectiveDsl.g:17312:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
+            // InternalPerspectiveDsl.g:17365:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
+            // InternalPerspectiveDsl.g:17366:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
             {
             pushFollow(FOLLOW_101);
             rule__XFeatureCall__Group_3__1__Impl();
@@ -56836,31 +57001,31 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:17319:1: rule__XFeatureCall__Group_3__1__Impl : ( ( rule__XFeatureCall__Alternatives_3_1 )? ) ;
+    // InternalPerspectiveDsl.g:17373:1: rule__XFeatureCall__Group_3__1__Impl : ( ( rule__XFeatureCall__Alternatives_3_1 )? ) ;
     public final void rule__XFeatureCall__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17323:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
-            // InternalPerspectiveDsl.g:17324:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:17377:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
+            // InternalPerspectiveDsl.g:17378:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
             {
-            // InternalPerspectiveDsl.g:17324:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
-            // InternalPerspectiveDsl.g:17325:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            // InternalPerspectiveDsl.g:17378:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalPerspectiveDsl.g:17379:2: ( rule__XFeatureCall__Alternatives_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); 
             }
-            // InternalPerspectiveDsl.g:17326:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            // InternalPerspectiveDsl.g:17380:2: ( rule__XFeatureCall__Alternatives_3_1 )?
             int alt120=2;
             int LA120_0 = input.LA(1);
 
-            if ( ((LA120_0>=RULE_ID && LA120_0<=RULE_DECIMAL)||LA120_0==27||LA120_0==31||(LA120_0>=34 && LA120_0<=35)||LA120_0==40||(LA120_0>=45 && LA120_0<=50)||LA120_0==54||LA120_0==96||(LA120_0>=100 && LA120_0<=101)||LA120_0==104||LA120_0==106||(LA120_0>=110 && LA120_0<=118)||LA120_0==120||LA120_0==129||LA120_0==131) ) {
+            if ( ((LA120_0>=RULE_ID && LA120_0<=RULE_DECIMAL)||LA120_0==27||LA120_0==31||(LA120_0>=34 && LA120_0<=35)||LA120_0==40||(LA120_0>=45 && LA120_0<=50)||LA120_0==54||LA120_0==98||(LA120_0>=102 && LA120_0<=103)||LA120_0==106||LA120_0==108||(LA120_0>=112 && LA120_0<=120)||LA120_0==122||LA120_0==131||LA120_0==133) ) {
                 alt120=1;
             }
             switch (alt120) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17326:3: rule__XFeatureCall__Alternatives_3_1
+                    // InternalPerspectiveDsl.g:17380:3: rule__XFeatureCall__Alternatives_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Alternatives_3_1();
@@ -56898,14 +57063,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__2"
-    // InternalPerspectiveDsl.g:17334:1: rule__XFeatureCall__Group_3__2 : rule__XFeatureCall__Group_3__2__Impl ;
+    // InternalPerspectiveDsl.g:17388:1: rule__XFeatureCall__Group_3__2 : rule__XFeatureCall__Group_3__2__Impl ;
     public final void rule__XFeatureCall__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17338:1: ( rule__XFeatureCall__Group_3__2__Impl )
-            // InternalPerspectiveDsl.g:17339:2: rule__XFeatureCall__Group_3__2__Impl
+            // InternalPerspectiveDsl.g:17392:1: ( rule__XFeatureCall__Group_3__2__Impl )
+            // InternalPerspectiveDsl.g:17393:2: rule__XFeatureCall__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3__2__Impl();
@@ -56931,22 +57096,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__2__Impl"
-    // InternalPerspectiveDsl.g:17345:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:17399:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
     public final void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17349:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:17350:1: ( ')' )
+            // InternalPerspectiveDsl.g:17403:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:17404:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:17350:1: ( ')' )
-            // InternalPerspectiveDsl.g:17351:2: ')'
+            // InternalPerspectiveDsl.g:17404:1: ( ')' )
+            // InternalPerspectiveDsl.g:17405:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
             }
@@ -56972,14 +57137,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0"
-    // InternalPerspectiveDsl.g:17361:1: rule__XFeatureCall__Group_3_1_1__0 : rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 ;
+    // InternalPerspectiveDsl.g:17415:1: rule__XFeatureCall__Group_3_1_1__0 : rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 ;
     public final void rule__XFeatureCall__Group_3_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17365:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
-            // InternalPerspectiveDsl.g:17366:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
+            // InternalPerspectiveDsl.g:17419:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
+            // InternalPerspectiveDsl.g:17420:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
             {
             pushFollow(FOLLOW_60);
             rule__XFeatureCall__Group_3_1_1__0__Impl();
@@ -57010,23 +57175,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:17373:1: rule__XFeatureCall__Group_3_1_1__0__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:17427:1: rule__XFeatureCall__Group_3_1_1__0__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) ;
     public final void rule__XFeatureCall__Group_3_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17377:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
-            // InternalPerspectiveDsl.g:17378:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:17431:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
+            // InternalPerspectiveDsl.g:17432:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:17378:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
-            // InternalPerspectiveDsl.g:17379:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalPerspectiveDsl.g:17432:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalPerspectiveDsl.g:17433:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:17380:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
-            // InternalPerspectiveDsl.g:17380:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
+            // InternalPerspectiveDsl.g:17434:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalPerspectiveDsl.g:17434:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0();
@@ -57061,14 +57226,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1"
-    // InternalPerspectiveDsl.g:17388:1: rule__XFeatureCall__Group_3_1_1__1 : rule__XFeatureCall__Group_3_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:17442:1: rule__XFeatureCall__Group_3_1_1__1 : rule__XFeatureCall__Group_3_1_1__1__Impl ;
     public final void rule__XFeatureCall__Group_3_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17392:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:17393:2: rule__XFeatureCall__Group_3_1_1__1__Impl
+            // InternalPerspectiveDsl.g:17446:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:17447:2: rule__XFeatureCall__Group_3_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3_1_1__1__Impl();
@@ -57094,35 +57259,35 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:17399:1: rule__XFeatureCall__Group_3_1_1__1__Impl : ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:17453:1: rule__XFeatureCall__Group_3_1_1__1__Impl : ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) ;
     public final void rule__XFeatureCall__Group_3_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17403:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:17404:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:17457:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:17458:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:17404:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
-            // InternalPerspectiveDsl.g:17405:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:17458:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:17459:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:17406:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:17460:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
             loop121:
             do {
                 int alt121=2;
                 int LA121_0 = input.LA(1);
 
-                if ( (LA121_0==98) ) {
+                if ( (LA121_0==100) ) {
                     alt121=1;
                 }
 
 
                 switch (alt121) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:17406:3: rule__XFeatureCall__Group_3_1_1_1__0
+            	    // InternalPerspectiveDsl.g:17460:3: rule__XFeatureCall__Group_3_1_1_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XFeatureCall__Group_3_1_1_1__0();
@@ -57163,14 +57328,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0"
-    // InternalPerspectiveDsl.g:17415:1: rule__XFeatureCall__Group_3_1_1_1__0 : rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 ;
+    // InternalPerspectiveDsl.g:17469:1: rule__XFeatureCall__Group_3_1_1_1__0 : rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 ;
     public final void rule__XFeatureCall__Group_3_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17419:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
-            // InternalPerspectiveDsl.g:17420:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
+            // InternalPerspectiveDsl.g:17473:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
+            // InternalPerspectiveDsl.g:17474:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XFeatureCall__Group_3_1_1_1__0__Impl();
@@ -57201,22 +57366,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:17427:1: rule__XFeatureCall__Group_3_1_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:17481:1: rule__XFeatureCall__Group_3_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XFeatureCall__Group_3_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17431:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:17432:1: ( ',' )
+            // InternalPerspectiveDsl.g:17485:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:17486:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:17432:1: ( ',' )
-            // InternalPerspectiveDsl.g:17433:2: ','
+            // InternalPerspectiveDsl.g:17486:1: ( ',' )
+            // InternalPerspectiveDsl.g:17487:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
             }
@@ -57242,14 +57407,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1"
-    // InternalPerspectiveDsl.g:17442:1: rule__XFeatureCall__Group_3_1_1_1__1 : rule__XFeatureCall__Group_3_1_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:17496:1: rule__XFeatureCall__Group_3_1_1_1__1 : rule__XFeatureCall__Group_3_1_1_1__1__Impl ;
     public final void rule__XFeatureCall__Group_3_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17446:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:17447:2: rule__XFeatureCall__Group_3_1_1_1__1__Impl
+            // InternalPerspectiveDsl.g:17500:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:17501:2: rule__XFeatureCall__Group_3_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3_1_1_1__1__Impl();
@@ -57275,23 +57440,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:17453:1: rule__XFeatureCall__Group_3_1_1_1__1__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:17507:1: rule__XFeatureCall__Group_3_1_1_1__1__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) ;
     public final void rule__XFeatureCall__Group_3_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17457:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:17458:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:17511:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:17512:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:17458:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:17459:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:17512:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:17513:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:17460:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
-            // InternalPerspectiveDsl.g:17460:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
+            // InternalPerspectiveDsl.g:17514:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalPerspectiveDsl.g:17514:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1();
@@ -57326,14 +57491,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__0"
-    // InternalPerspectiveDsl.g:17469:1: rule__XConstructorCall__Group__0 : rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 ;
+    // InternalPerspectiveDsl.g:17523:1: rule__XConstructorCall__Group__0 : rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 ;
     public final void rule__XConstructorCall__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17473:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
-            // InternalPerspectiveDsl.g:17474:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
+            // InternalPerspectiveDsl.g:17527:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
+            // InternalPerspectiveDsl.g:17528:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
             {
             pushFollow(FOLLOW_124);
             rule__XConstructorCall__Group__0__Impl();
@@ -57364,23 +57529,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17481:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:17535:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
     public final void rule__XConstructorCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17485:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17486:1: ( () )
+            // InternalPerspectiveDsl.g:17539:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:17540:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17486:1: ( () )
-            // InternalPerspectiveDsl.g:17487:2: ()
+            // InternalPerspectiveDsl.g:17540:1: ( () )
+            // InternalPerspectiveDsl.g:17541:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); 
             }
-            // InternalPerspectiveDsl.g:17488:2: ()
-            // InternalPerspectiveDsl.g:17488:3: 
+            // InternalPerspectiveDsl.g:17542:2: ()
+            // InternalPerspectiveDsl.g:17542:3: 
             {
             }
 
@@ -57405,14 +57570,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__1"
-    // InternalPerspectiveDsl.g:17496:1: rule__XConstructorCall__Group__1 : rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 ;
+    // InternalPerspectiveDsl.g:17550:1: rule__XConstructorCall__Group__1 : rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 ;
     public final void rule__XConstructorCall__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17500:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
-            // InternalPerspectiveDsl.g:17501:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
+            // InternalPerspectiveDsl.g:17554:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
+            // InternalPerspectiveDsl.g:17555:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__XConstructorCall__Group__1__Impl();
@@ -57443,22 +57608,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__1__Impl"
-    // InternalPerspectiveDsl.g:17508:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
+    // InternalPerspectiveDsl.g:17562:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
     public final void rule__XConstructorCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17512:1: ( ( 'new' ) )
-            // InternalPerspectiveDsl.g:17513:1: ( 'new' )
+            // InternalPerspectiveDsl.g:17566:1: ( ( 'new' ) )
+            // InternalPerspectiveDsl.g:17567:1: ( 'new' )
             {
-            // InternalPerspectiveDsl.g:17513:1: ( 'new' )
-            // InternalPerspectiveDsl.g:17514:2: 'new'
+            // InternalPerspectiveDsl.g:17567:1: ( 'new' )
+            // InternalPerspectiveDsl.g:17568:2: 'new'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
             }
-            match(input,113,FOLLOW_2); if (state.failed) return ;
+            match(input,115,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
             }
@@ -57484,14 +57649,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__2"
-    // InternalPerspectiveDsl.g:17523:1: rule__XConstructorCall__Group__2 : rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 ;
+    // InternalPerspectiveDsl.g:17577:1: rule__XConstructorCall__Group__2 : rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 ;
     public final void rule__XConstructorCall__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17527:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
-            // InternalPerspectiveDsl.g:17528:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
+            // InternalPerspectiveDsl.g:17581:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
+            // InternalPerspectiveDsl.g:17582:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
             {
             pushFollow(FOLLOW_125);
             rule__XConstructorCall__Group__2__Impl();
@@ -57522,23 +57687,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__2__Impl"
-    // InternalPerspectiveDsl.g:17535:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:17589:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
     public final void rule__XConstructorCall__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17539:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:17540:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17593:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:17594:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:17540:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
-            // InternalPerspectiveDsl.g:17541:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalPerspectiveDsl.g:17594:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalPerspectiveDsl.g:17595:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:17542:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
-            // InternalPerspectiveDsl.g:17542:3: rule__XConstructorCall__ConstructorAssignment_2
+            // InternalPerspectiveDsl.g:17596:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalPerspectiveDsl.g:17596:3: rule__XConstructorCall__ConstructorAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ConstructorAssignment_2();
@@ -57573,14 +57738,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__3"
-    // InternalPerspectiveDsl.g:17550:1: rule__XConstructorCall__Group__3 : rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 ;
+    // InternalPerspectiveDsl.g:17604:1: rule__XConstructorCall__Group__3 : rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 ;
     public final void rule__XConstructorCall__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17554:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
-            // InternalPerspectiveDsl.g:17555:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
+            // InternalPerspectiveDsl.g:17608:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
+            // InternalPerspectiveDsl.g:17609:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
             {
             pushFollow(FOLLOW_125);
             rule__XConstructorCall__Group__3__Impl();
@@ -57611,27 +57776,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__3__Impl"
-    // InternalPerspectiveDsl.g:17562:1: rule__XConstructorCall__Group__3__Impl : ( ( rule__XConstructorCall__Group_3__0 )? ) ;
+    // InternalPerspectiveDsl.g:17616:1: rule__XConstructorCall__Group__3__Impl : ( ( rule__XConstructorCall__Group_3__0 )? ) ;
     public final void rule__XConstructorCall__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17566:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
-            // InternalPerspectiveDsl.g:17567:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:17620:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
+            // InternalPerspectiveDsl.g:17621:1: ( ( rule__XConstructorCall__Group_3__0 )? )
             {
-            // InternalPerspectiveDsl.g:17567:1: ( ( rule__XConstructorCall__Group_3__0 )? )
-            // InternalPerspectiveDsl.g:17568:2: ( rule__XConstructorCall__Group_3__0 )?
+            // InternalPerspectiveDsl.g:17621:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalPerspectiveDsl.g:17622:2: ( rule__XConstructorCall__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_3()); 
             }
-            // InternalPerspectiveDsl.g:17569:2: ( rule__XConstructorCall__Group_3__0 )?
+            // InternalPerspectiveDsl.g:17623:2: ( rule__XConstructorCall__Group_3__0 )?
             int alt122=2;
             alt122 = dfa122.predict(input);
             switch (alt122) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17569:3: rule__XConstructorCall__Group_3__0
+                    // InternalPerspectiveDsl.g:17623:3: rule__XConstructorCall__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_3__0();
@@ -57669,14 +57834,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__4"
-    // InternalPerspectiveDsl.g:17577:1: rule__XConstructorCall__Group__4 : rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 ;
+    // InternalPerspectiveDsl.g:17631:1: rule__XConstructorCall__Group__4 : rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 ;
     public final void rule__XConstructorCall__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17581:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
-            // InternalPerspectiveDsl.g:17582:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
+            // InternalPerspectiveDsl.g:17635:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
+            // InternalPerspectiveDsl.g:17636:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
             {
             pushFollow(FOLLOW_125);
             rule__XConstructorCall__Group__4__Impl();
@@ -57707,27 +57872,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__4__Impl"
-    // InternalPerspectiveDsl.g:17589:1: rule__XConstructorCall__Group__4__Impl : ( ( rule__XConstructorCall__Group_4__0 )? ) ;
+    // InternalPerspectiveDsl.g:17643:1: rule__XConstructorCall__Group__4__Impl : ( ( rule__XConstructorCall__Group_4__0 )? ) ;
     public final void rule__XConstructorCall__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17593:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
-            // InternalPerspectiveDsl.g:17594:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalPerspectiveDsl.g:17647:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
+            // InternalPerspectiveDsl.g:17648:1: ( ( rule__XConstructorCall__Group_4__0 )? )
             {
-            // InternalPerspectiveDsl.g:17594:1: ( ( rule__XConstructorCall__Group_4__0 )? )
-            // InternalPerspectiveDsl.g:17595:2: ( rule__XConstructorCall__Group_4__0 )?
+            // InternalPerspectiveDsl.g:17648:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalPerspectiveDsl.g:17649:2: ( rule__XConstructorCall__Group_4__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_4()); 
             }
-            // InternalPerspectiveDsl.g:17596:2: ( rule__XConstructorCall__Group_4__0 )?
+            // InternalPerspectiveDsl.g:17650:2: ( rule__XConstructorCall__Group_4__0 )?
             int alt123=2;
             alt123 = dfa123.predict(input);
             switch (alt123) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17596:3: rule__XConstructorCall__Group_4__0
+                    // InternalPerspectiveDsl.g:17650:3: rule__XConstructorCall__Group_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_4__0();
@@ -57765,14 +57930,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__5"
-    // InternalPerspectiveDsl.g:17604:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
+    // InternalPerspectiveDsl.g:17658:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
     public final void rule__XConstructorCall__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17608:1: ( rule__XConstructorCall__Group__5__Impl )
-            // InternalPerspectiveDsl.g:17609:2: rule__XConstructorCall__Group__5__Impl
+            // InternalPerspectiveDsl.g:17662:1: ( rule__XConstructorCall__Group__5__Impl )
+            // InternalPerspectiveDsl.g:17663:2: rule__XConstructorCall__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group__5__Impl();
@@ -57798,27 +57963,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__5__Impl"
-    // InternalPerspectiveDsl.g:17615:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
+    // InternalPerspectiveDsl.g:17669:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
     public final void rule__XConstructorCall__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17619:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
-            // InternalPerspectiveDsl.g:17620:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalPerspectiveDsl.g:17673:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
+            // InternalPerspectiveDsl.g:17674:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
             {
-            // InternalPerspectiveDsl.g:17620:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
-            // InternalPerspectiveDsl.g:17621:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            // InternalPerspectiveDsl.g:17674:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalPerspectiveDsl.g:17675:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); 
             }
-            // InternalPerspectiveDsl.g:17622:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            // InternalPerspectiveDsl.g:17676:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
             int alt124=2;
             alt124 = dfa124.predict(input);
             switch (alt124) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17622:3: rule__XConstructorCall__ArgumentsAssignment_5
+                    // InternalPerspectiveDsl.g:17676:3: rule__XConstructorCall__ArgumentsAssignment_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__ArgumentsAssignment_5();
@@ -57856,14 +58021,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__0"
-    // InternalPerspectiveDsl.g:17631:1: rule__XConstructorCall__Group_3__0 : rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 ;
+    // InternalPerspectiveDsl.g:17685:1: rule__XConstructorCall__Group_3__0 : rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 ;
     public final void rule__XConstructorCall__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17635:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
-            // InternalPerspectiveDsl.g:17636:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
+            // InternalPerspectiveDsl.g:17689:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
+            // InternalPerspectiveDsl.g:17690:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
             {
             pushFollow(FOLLOW_99);
             rule__XConstructorCall__Group_3__0__Impl();
@@ -57894,23 +58059,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__0__Impl"
-    // InternalPerspectiveDsl.g:17643:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
+    // InternalPerspectiveDsl.g:17697:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
     public final void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17647:1: ( ( ( '<' ) ) )
-            // InternalPerspectiveDsl.g:17648:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:17701:1: ( ( ( '<' ) ) )
+            // InternalPerspectiveDsl.g:17702:1: ( ( '<' ) )
             {
-            // InternalPerspectiveDsl.g:17648:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:17649:2: ( '<' )
+            // InternalPerspectiveDsl.g:17702:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:17703:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); 
             }
-            // InternalPerspectiveDsl.g:17650:2: ( '<' )
-            // InternalPerspectiveDsl.g:17650:3: '<'
+            // InternalPerspectiveDsl.g:17704:2: ( '<' )
+            // InternalPerspectiveDsl.g:17704:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -57941,14 +58106,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__1"
-    // InternalPerspectiveDsl.g:17658:1: rule__XConstructorCall__Group_3__1 : rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 ;
+    // InternalPerspectiveDsl.g:17712:1: rule__XConstructorCall__Group_3__1 : rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 ;
     public final void rule__XConstructorCall__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17662:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
-            // InternalPerspectiveDsl.g:17663:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
+            // InternalPerspectiveDsl.g:17716:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
+            // InternalPerspectiveDsl.g:17717:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
             {
             pushFollow(FOLLOW_100);
             rule__XConstructorCall__Group_3__1__Impl();
@@ -57979,23 +58144,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__1__Impl"
-    // InternalPerspectiveDsl.g:17670:1: rule__XConstructorCall__Group_3__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) ;
+    // InternalPerspectiveDsl.g:17724:1: rule__XConstructorCall__Group_3__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) ;
     public final void rule__XConstructorCall__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17674:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
-            // InternalPerspectiveDsl.g:17675:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:17728:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
+            // InternalPerspectiveDsl.g:17729:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
             {
-            // InternalPerspectiveDsl.g:17675:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
-            // InternalPerspectiveDsl.g:17676:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalPerspectiveDsl.g:17729:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalPerspectiveDsl.g:17730:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); 
             }
-            // InternalPerspectiveDsl.g:17677:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
-            // InternalPerspectiveDsl.g:17677:3: rule__XConstructorCall__TypeArgumentsAssignment_3_1
+            // InternalPerspectiveDsl.g:17731:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalPerspectiveDsl.g:17731:3: rule__XConstructorCall__TypeArgumentsAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__TypeArgumentsAssignment_3_1();
@@ -58030,14 +58195,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__2"
-    // InternalPerspectiveDsl.g:17685:1: rule__XConstructorCall__Group_3__2 : rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 ;
+    // InternalPerspectiveDsl.g:17739:1: rule__XConstructorCall__Group_3__2 : rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 ;
     public final void rule__XConstructorCall__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17689:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
-            // InternalPerspectiveDsl.g:17690:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
+            // InternalPerspectiveDsl.g:17743:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
+            // InternalPerspectiveDsl.g:17744:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
             {
             pushFollow(FOLLOW_100);
             rule__XConstructorCall__Group_3__2__Impl();
@@ -58068,35 +58233,35 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__2__Impl"
-    // InternalPerspectiveDsl.g:17697:1: rule__XConstructorCall__Group_3__2__Impl : ( ( rule__XConstructorCall__Group_3_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:17751:1: rule__XConstructorCall__Group_3__2__Impl : ( ( rule__XConstructorCall__Group_3_2__0 )* ) ;
     public final void rule__XConstructorCall__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17701:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
-            // InternalPerspectiveDsl.g:17702:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalPerspectiveDsl.g:17755:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
+            // InternalPerspectiveDsl.g:17756:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:17702:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
-            // InternalPerspectiveDsl.g:17703:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            // InternalPerspectiveDsl.g:17756:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalPerspectiveDsl.g:17757:2: ( rule__XConstructorCall__Group_3_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); 
             }
-            // InternalPerspectiveDsl.g:17704:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            // InternalPerspectiveDsl.g:17758:2: ( rule__XConstructorCall__Group_3_2__0 )*
             loop125:
             do {
                 int alt125=2;
                 int LA125_0 = input.LA(1);
 
-                if ( (LA125_0==98) ) {
+                if ( (LA125_0==100) ) {
                     alt125=1;
                 }
 
 
                 switch (alt125) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:17704:3: rule__XConstructorCall__Group_3_2__0
+            	    // InternalPerspectiveDsl.g:17758:3: rule__XConstructorCall__Group_3_2__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XConstructorCall__Group_3_2__0();
@@ -58137,14 +58302,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__3"
-    // InternalPerspectiveDsl.g:17712:1: rule__XConstructorCall__Group_3__3 : rule__XConstructorCall__Group_3__3__Impl ;
+    // InternalPerspectiveDsl.g:17766:1: rule__XConstructorCall__Group_3__3 : rule__XConstructorCall__Group_3__3__Impl ;
     public final void rule__XConstructorCall__Group_3__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17716:1: ( rule__XConstructorCall__Group_3__3__Impl )
-            // InternalPerspectiveDsl.g:17717:2: rule__XConstructorCall__Group_3__3__Impl
+            // InternalPerspectiveDsl.g:17770:1: ( rule__XConstructorCall__Group_3__3__Impl )
+            // InternalPerspectiveDsl.g:17771:2: rule__XConstructorCall__Group_3__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_3__3__Impl();
@@ -58170,17 +58335,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__3__Impl"
-    // InternalPerspectiveDsl.g:17723:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:17777:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
     public final void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17727:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:17728:1: ( '>' )
+            // InternalPerspectiveDsl.g:17781:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:17782:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:17728:1: ( '>' )
-            // InternalPerspectiveDsl.g:17729:2: '>'
+            // InternalPerspectiveDsl.g:17782:1: ( '>' )
+            // InternalPerspectiveDsl.g:17783:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3()); 
@@ -58211,14 +58376,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__0"
-    // InternalPerspectiveDsl.g:17739:1: rule__XConstructorCall__Group_3_2__0 : rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 ;
+    // InternalPerspectiveDsl.g:17793:1: rule__XConstructorCall__Group_3_2__0 : rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 ;
     public final void rule__XConstructorCall__Group_3_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17743:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
-            // InternalPerspectiveDsl.g:17744:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
+            // InternalPerspectiveDsl.g:17797:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
+            // InternalPerspectiveDsl.g:17798:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
             {
             pushFollow(FOLLOW_99);
             rule__XConstructorCall__Group_3_2__0__Impl();
@@ -58249,22 +58414,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__0__Impl"
-    // InternalPerspectiveDsl.g:17751:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:17805:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
     public final void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17755:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:17756:1: ( ',' )
+            // InternalPerspectiveDsl.g:17809:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:17810:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:17756:1: ( ',' )
-            // InternalPerspectiveDsl.g:17757:2: ','
+            // InternalPerspectiveDsl.g:17810:1: ( ',' )
+            // InternalPerspectiveDsl.g:17811:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
             }
@@ -58290,14 +58455,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__1"
-    // InternalPerspectiveDsl.g:17766:1: rule__XConstructorCall__Group_3_2__1 : rule__XConstructorCall__Group_3_2__1__Impl ;
+    // InternalPerspectiveDsl.g:17820:1: rule__XConstructorCall__Group_3_2__1 : rule__XConstructorCall__Group_3_2__1__Impl ;
     public final void rule__XConstructorCall__Group_3_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17770:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
-            // InternalPerspectiveDsl.g:17771:2: rule__XConstructorCall__Group_3_2__1__Impl
+            // InternalPerspectiveDsl.g:17824:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
+            // InternalPerspectiveDsl.g:17825:2: rule__XConstructorCall__Group_3_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_3_2__1__Impl();
@@ -58323,23 +58488,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__1__Impl"
-    // InternalPerspectiveDsl.g:17777:1: rule__XConstructorCall__Group_3_2__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:17831:1: rule__XConstructorCall__Group_3_2__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) ;
     public final void rule__XConstructorCall__Group_3_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17781:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
-            // InternalPerspectiveDsl.g:17782:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:17835:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
+            // InternalPerspectiveDsl.g:17836:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:17782:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
-            // InternalPerspectiveDsl.g:17783:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:17836:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalPerspectiveDsl.g:17837:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); 
             }
-            // InternalPerspectiveDsl.g:17784:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
-            // InternalPerspectiveDsl.g:17784:3: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
+            // InternalPerspectiveDsl.g:17838:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalPerspectiveDsl.g:17838:3: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__TypeArgumentsAssignment_3_2_1();
@@ -58374,14 +58539,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__0"
-    // InternalPerspectiveDsl.g:17793:1: rule__XConstructorCall__Group_4__0 : rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 ;
+    // InternalPerspectiveDsl.g:17847:1: rule__XConstructorCall__Group_4__0 : rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 ;
     public final void rule__XConstructorCall__Group_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17797:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
-            // InternalPerspectiveDsl.g:17798:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
+            // InternalPerspectiveDsl.g:17851:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
+            // InternalPerspectiveDsl.g:17852:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
             {
             pushFollow(FOLLOW_101);
             rule__XConstructorCall__Group_4__0__Impl();
@@ -58412,23 +58577,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__0__Impl"
-    // InternalPerspectiveDsl.g:17805:1: rule__XConstructorCall__Group_4__0__Impl : ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) ;
+    // InternalPerspectiveDsl.g:17859:1: rule__XConstructorCall__Group_4__0__Impl : ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) ;
     public final void rule__XConstructorCall__Group_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17809:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
-            // InternalPerspectiveDsl.g:17810:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalPerspectiveDsl.g:17863:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
+            // InternalPerspectiveDsl.g:17864:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
             {
-            // InternalPerspectiveDsl.g:17810:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
-            // InternalPerspectiveDsl.g:17811:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalPerspectiveDsl.g:17864:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalPerspectiveDsl.g:17865:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); 
             }
-            // InternalPerspectiveDsl.g:17812:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
-            // InternalPerspectiveDsl.g:17812:3: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
+            // InternalPerspectiveDsl.g:17866:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalPerspectiveDsl.g:17866:3: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0();
@@ -58463,14 +58628,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__1"
-    // InternalPerspectiveDsl.g:17820:1: rule__XConstructorCall__Group_4__1 : rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 ;
+    // InternalPerspectiveDsl.g:17874:1: rule__XConstructorCall__Group_4__1 : rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 ;
     public final void rule__XConstructorCall__Group_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17824:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
-            // InternalPerspectiveDsl.g:17825:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
+            // InternalPerspectiveDsl.g:17878:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
+            // InternalPerspectiveDsl.g:17879:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
             {
             pushFollow(FOLLOW_101);
             rule__XConstructorCall__Group_4__1__Impl();
@@ -58501,31 +58666,31 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__1__Impl"
-    // InternalPerspectiveDsl.g:17832:1: rule__XConstructorCall__Group_4__1__Impl : ( ( rule__XConstructorCall__Alternatives_4_1 )? ) ;
+    // InternalPerspectiveDsl.g:17886:1: rule__XConstructorCall__Group_4__1__Impl : ( ( rule__XConstructorCall__Alternatives_4_1 )? ) ;
     public final void rule__XConstructorCall__Group_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17836:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
-            // InternalPerspectiveDsl.g:17837:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalPerspectiveDsl.g:17890:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
+            // InternalPerspectiveDsl.g:17891:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
             {
-            // InternalPerspectiveDsl.g:17837:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
-            // InternalPerspectiveDsl.g:17838:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            // InternalPerspectiveDsl.g:17891:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalPerspectiveDsl.g:17892:2: ( rule__XConstructorCall__Alternatives_4_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); 
             }
-            // InternalPerspectiveDsl.g:17839:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            // InternalPerspectiveDsl.g:17893:2: ( rule__XConstructorCall__Alternatives_4_1 )?
             int alt126=2;
             int LA126_0 = input.LA(1);
 
-            if ( ((LA126_0>=RULE_ID && LA126_0<=RULE_DECIMAL)||LA126_0==27||LA126_0==31||(LA126_0>=34 && LA126_0<=35)||LA126_0==40||(LA126_0>=45 && LA126_0<=50)||LA126_0==54||LA126_0==96||(LA126_0>=100 && LA126_0<=101)||LA126_0==104||LA126_0==106||(LA126_0>=110 && LA126_0<=118)||LA126_0==120||LA126_0==129||LA126_0==131) ) {
+            if ( ((LA126_0>=RULE_ID && LA126_0<=RULE_DECIMAL)||LA126_0==27||LA126_0==31||(LA126_0>=34 && LA126_0<=35)||LA126_0==40||(LA126_0>=45 && LA126_0<=50)||LA126_0==54||LA126_0==98||(LA126_0>=102 && LA126_0<=103)||LA126_0==106||LA126_0==108||(LA126_0>=112 && LA126_0<=120)||LA126_0==122||LA126_0==131||LA126_0==133) ) {
                 alt126=1;
             }
             switch (alt126) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:17839:3: rule__XConstructorCall__Alternatives_4_1
+                    // InternalPerspectiveDsl.g:17893:3: rule__XConstructorCall__Alternatives_4_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Alternatives_4_1();
@@ -58563,14 +58728,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__2"
-    // InternalPerspectiveDsl.g:17847:1: rule__XConstructorCall__Group_4__2 : rule__XConstructorCall__Group_4__2__Impl ;
+    // InternalPerspectiveDsl.g:17901:1: rule__XConstructorCall__Group_4__2 : rule__XConstructorCall__Group_4__2__Impl ;
     public final void rule__XConstructorCall__Group_4__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17851:1: ( rule__XConstructorCall__Group_4__2__Impl )
-            // InternalPerspectiveDsl.g:17852:2: rule__XConstructorCall__Group_4__2__Impl
+            // InternalPerspectiveDsl.g:17905:1: ( rule__XConstructorCall__Group_4__2__Impl )
+            // InternalPerspectiveDsl.g:17906:2: rule__XConstructorCall__Group_4__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4__2__Impl();
@@ -58596,22 +58761,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__2__Impl"
-    // InternalPerspectiveDsl.g:17858:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:17912:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
     public final void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17862:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:17863:1: ( ')' )
+            // InternalPerspectiveDsl.g:17916:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:17917:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:17863:1: ( ')' )
-            // InternalPerspectiveDsl.g:17864:2: ')'
+            // InternalPerspectiveDsl.g:17917:1: ( ')' )
+            // InternalPerspectiveDsl.g:17918:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
             }
@@ -58637,14 +58802,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0"
-    // InternalPerspectiveDsl.g:17874:1: rule__XConstructorCall__Group_4_1_1__0 : rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 ;
+    // InternalPerspectiveDsl.g:17928:1: rule__XConstructorCall__Group_4_1_1__0 : rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 ;
     public final void rule__XConstructorCall__Group_4_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17878:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
-            // InternalPerspectiveDsl.g:17879:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
+            // InternalPerspectiveDsl.g:17932:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
+            // InternalPerspectiveDsl.g:17933:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
             {
             pushFollow(FOLLOW_60);
             rule__XConstructorCall__Group_4_1_1__0__Impl();
@@ -58675,23 +58840,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:17886:1: rule__XConstructorCall__Group_4_1_1__0__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:17940:1: rule__XConstructorCall__Group_4_1_1__0__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) ;
     public final void rule__XConstructorCall__Group_4_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17890:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
-            // InternalPerspectiveDsl.g:17891:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalPerspectiveDsl.g:17944:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
+            // InternalPerspectiveDsl.g:17945:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:17891:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
-            // InternalPerspectiveDsl.g:17892:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalPerspectiveDsl.g:17945:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalPerspectiveDsl.g:17946:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:17893:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
-            // InternalPerspectiveDsl.g:17893:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
+            // InternalPerspectiveDsl.g:17947:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalPerspectiveDsl.g:17947:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ArgumentsAssignment_4_1_1_0();
@@ -58726,14 +58891,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1"
-    // InternalPerspectiveDsl.g:17901:1: rule__XConstructorCall__Group_4_1_1__1 : rule__XConstructorCall__Group_4_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:17955:1: rule__XConstructorCall__Group_4_1_1__1 : rule__XConstructorCall__Group_4_1_1__1__Impl ;
     public final void rule__XConstructorCall__Group_4_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17905:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:17906:2: rule__XConstructorCall__Group_4_1_1__1__Impl
+            // InternalPerspectiveDsl.g:17959:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:17960:2: rule__XConstructorCall__Group_4_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4_1_1__1__Impl();
@@ -58759,35 +58924,35 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:17912:1: rule__XConstructorCall__Group_4_1_1__1__Impl : ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:17966:1: rule__XConstructorCall__Group_4_1_1__1__Impl : ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) ;
     public final void rule__XConstructorCall__Group_4_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17916:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:17917:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:17970:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:17971:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:17917:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
-            // InternalPerspectiveDsl.g:17918:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:17971:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalPerspectiveDsl.g:17972:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:17919:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            // InternalPerspectiveDsl.g:17973:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
             loop127:
             do {
                 int alt127=2;
                 int LA127_0 = input.LA(1);
 
-                if ( (LA127_0==98) ) {
+                if ( (LA127_0==100) ) {
                     alt127=1;
                 }
 
 
                 switch (alt127) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:17919:3: rule__XConstructorCall__Group_4_1_1_1__0
+            	    // InternalPerspectiveDsl.g:17973:3: rule__XConstructorCall__Group_4_1_1_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XConstructorCall__Group_4_1_1_1__0();
@@ -58828,14 +58993,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0"
-    // InternalPerspectiveDsl.g:17928:1: rule__XConstructorCall__Group_4_1_1_1__0 : rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 ;
+    // InternalPerspectiveDsl.g:17982:1: rule__XConstructorCall__Group_4_1_1_1__0 : rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 ;
     public final void rule__XConstructorCall__Group_4_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17932:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
-            // InternalPerspectiveDsl.g:17933:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
+            // InternalPerspectiveDsl.g:17986:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
+            // InternalPerspectiveDsl.g:17987:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XConstructorCall__Group_4_1_1_1__0__Impl();
@@ -58866,22 +59031,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:17940:1: rule__XConstructorCall__Group_4_1_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:17994:1: rule__XConstructorCall__Group_4_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XConstructorCall__Group_4_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17944:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:17945:1: ( ',' )
+            // InternalPerspectiveDsl.g:17998:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:17999:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:17945:1: ( ',' )
-            // InternalPerspectiveDsl.g:17946:2: ','
+            // InternalPerspectiveDsl.g:17999:1: ( ',' )
+            // InternalPerspectiveDsl.g:18000:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
             }
@@ -58907,14 +59072,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1"
-    // InternalPerspectiveDsl.g:17955:1: rule__XConstructorCall__Group_4_1_1_1__1 : rule__XConstructorCall__Group_4_1_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:18009:1: rule__XConstructorCall__Group_4_1_1_1__1 : rule__XConstructorCall__Group_4_1_1_1__1__Impl ;
     public final void rule__XConstructorCall__Group_4_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17959:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:17960:2: rule__XConstructorCall__Group_4_1_1_1__1__Impl
+            // InternalPerspectiveDsl.g:18013:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:18014:2: rule__XConstructorCall__Group_4_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4_1_1_1__1__Impl();
@@ -58940,23 +59105,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:17966:1: rule__XConstructorCall__Group_4_1_1_1__1__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:18020:1: rule__XConstructorCall__Group_4_1_1_1__1__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) ;
     public final void rule__XConstructorCall__Group_4_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17970:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:17971:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:18024:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:18025:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:17971:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
-            // InternalPerspectiveDsl.g:17972:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalPerspectiveDsl.g:18025:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalPerspectiveDsl.g:18026:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:17973:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
-            // InternalPerspectiveDsl.g:17973:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
+            // InternalPerspectiveDsl.g:18027:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalPerspectiveDsl.g:18027:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1();
@@ -58991,14 +59156,14 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__0"
-    // InternalPerspectiveDsl.g:17982:1: rule__XBooleanLiteral__Group__0 : rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:18036:1: rule__XBooleanLiteral__Group__0 : rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 ;
     public final void rule__XBooleanLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17986:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:17987:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
+            // InternalPerspectiveDsl.g:18040:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:18041:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
             {
             pushFollow(FOLLOW_126);
             rule__XBooleanLiteral__Group__0__Impl();
@@ -59029,23 +59194,23 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:17994:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18048:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:17998:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:17999:1: ( () )
+            // InternalPerspectiveDsl.g:18052:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18053:1: ( () )
             {
-            // InternalPerspectiveDsl.g:17999:1: ( () )
-            // InternalPerspectiveDsl.g:18000:2: ()
+            // InternalPerspectiveDsl.g:18053:1: ( () )
+            // InternalPerspectiveDsl.g:18054:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:18001:2: ()
-            // InternalPerspectiveDsl.g:18001:3: 
+            // InternalPerspectiveDsl.g:18055:2: ()
+            // InternalPerspectiveDsl.g:18055:3: 
             {
             }
 
@@ -59070,14 +59235,14 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__1"
-    // InternalPerspectiveDsl.g:18009:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:18063:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
     public final void rule__XBooleanLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18013:1: ( rule__XBooleanLiteral__Group__1__Impl )
-            // InternalPerspectiveDsl.g:18014:2: rule__XBooleanLiteral__Group__1__Impl
+            // InternalPerspectiveDsl.g:18067:1: ( rule__XBooleanLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:18068:2: rule__XBooleanLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Group__1__Impl();
@@ -59103,23 +59268,23 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18020:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
+    // InternalPerspectiveDsl.g:18074:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
     public final void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18024:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
-            // InternalPerspectiveDsl.g:18025:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:18078:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
+            // InternalPerspectiveDsl.g:18079:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
             {
-            // InternalPerspectiveDsl.g:18025:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
-            // InternalPerspectiveDsl.g:18026:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalPerspectiveDsl.g:18079:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalPerspectiveDsl.g:18080:2: ( rule__XBooleanLiteral__Alternatives_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); 
             }
-            // InternalPerspectiveDsl.g:18027:2: ( rule__XBooleanLiteral__Alternatives_1 )
-            // InternalPerspectiveDsl.g:18027:3: rule__XBooleanLiteral__Alternatives_1
+            // InternalPerspectiveDsl.g:18081:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalPerspectiveDsl.g:18081:3: rule__XBooleanLiteral__Alternatives_1
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Alternatives_1();
@@ -59154,14 +59319,14 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__0"
-    // InternalPerspectiveDsl.g:18036:1: rule__XNullLiteral__Group__0 : rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:18090:1: rule__XNullLiteral__Group__0 : rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 ;
     public final void rule__XNullLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18040:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:18041:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
+            // InternalPerspectiveDsl.g:18094:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:18095:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
             {
             pushFollow(FOLLOW_127);
             rule__XNullLiteral__Group__0__Impl();
@@ -59192,23 +59357,23 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18048:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18102:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XNullLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18052:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18053:1: ( () )
+            // InternalPerspectiveDsl.g:18106:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18107:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18053:1: ( () )
-            // InternalPerspectiveDsl.g:18054:2: ()
+            // InternalPerspectiveDsl.g:18107:1: ( () )
+            // InternalPerspectiveDsl.g:18108:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:18055:2: ()
-            // InternalPerspectiveDsl.g:18055:3: 
+            // InternalPerspectiveDsl.g:18109:2: ()
+            // InternalPerspectiveDsl.g:18109:3: 
             {
             }
 
@@ -59233,14 +59398,14 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__1"
-    // InternalPerspectiveDsl.g:18063:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:18117:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
     public final void rule__XNullLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18067:1: ( rule__XNullLiteral__Group__1__Impl )
-            // InternalPerspectiveDsl.g:18068:2: rule__XNullLiteral__Group__1__Impl
+            // InternalPerspectiveDsl.g:18121:1: ( rule__XNullLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:18122:2: rule__XNullLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XNullLiteral__Group__1__Impl();
@@ -59266,22 +59431,22 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18074:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
+    // InternalPerspectiveDsl.g:18128:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
     public final void rule__XNullLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18078:1: ( ( 'null' ) )
-            // InternalPerspectiveDsl.g:18079:1: ( 'null' )
+            // InternalPerspectiveDsl.g:18132:1: ( ( 'null' ) )
+            // InternalPerspectiveDsl.g:18133:1: ( 'null' )
             {
-            // InternalPerspectiveDsl.g:18079:1: ( 'null' )
-            // InternalPerspectiveDsl.g:18080:2: 'null'
+            // InternalPerspectiveDsl.g:18133:1: ( 'null' )
+            // InternalPerspectiveDsl.g:18134:2: 'null'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
             }
-            match(input,114,FOLLOW_2); if (state.failed) return ;
+            match(input,116,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
             }
@@ -59307,14 +59472,14 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__0"
-    // InternalPerspectiveDsl.g:18090:1: rule__XNumberLiteral__Group__0 : rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:18144:1: rule__XNumberLiteral__Group__0 : rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 ;
     public final void rule__XNumberLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18094:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:18095:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
+            // InternalPerspectiveDsl.g:18148:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:18149:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
             {
             pushFollow(FOLLOW_128);
             rule__XNumberLiteral__Group__0__Impl();
@@ -59345,23 +59510,23 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18102:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18156:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18106:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18107:1: ( () )
+            // InternalPerspectiveDsl.g:18160:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18161:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18107:1: ( () )
-            // InternalPerspectiveDsl.g:18108:2: ()
+            // InternalPerspectiveDsl.g:18161:1: ( () )
+            // InternalPerspectiveDsl.g:18162:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:18109:2: ()
-            // InternalPerspectiveDsl.g:18109:3: 
+            // InternalPerspectiveDsl.g:18163:2: ()
+            // InternalPerspectiveDsl.g:18163:3: 
             {
             }
 
@@ -59386,14 +59551,14 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__1"
-    // InternalPerspectiveDsl.g:18117:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:18171:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
     public final void rule__XNumberLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18121:1: ( rule__XNumberLiteral__Group__1__Impl )
-            // InternalPerspectiveDsl.g:18122:2: rule__XNumberLiteral__Group__1__Impl
+            // InternalPerspectiveDsl.g:18175:1: ( rule__XNumberLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:18176:2: rule__XNumberLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__Group__1__Impl();
@@ -59419,23 +59584,23 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18128:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:18182:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
     public final void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18132:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:18133:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:18186:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:18187:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:18133:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
-            // InternalPerspectiveDsl.g:18134:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:18187:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:18188:2: ( rule__XNumberLiteral__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:18135:2: ( rule__XNumberLiteral__ValueAssignment_1 )
-            // InternalPerspectiveDsl.g:18135:3: rule__XNumberLiteral__ValueAssignment_1
+            // InternalPerspectiveDsl.g:18189:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:18189:3: rule__XNumberLiteral__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__ValueAssignment_1();
@@ -59470,14 +59635,14 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__0"
-    // InternalPerspectiveDsl.g:18144:1: rule__XStringLiteral__Group__0 : rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:18198:1: rule__XStringLiteral__Group__0 : rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 ;
     public final void rule__XStringLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18148:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:18149:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
+            // InternalPerspectiveDsl.g:18202:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:18203:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
             {
             pushFollow(FOLLOW_15);
             rule__XStringLiteral__Group__0__Impl();
@@ -59508,23 +59673,23 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18156:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18210:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XStringLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18160:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18161:1: ( () )
+            // InternalPerspectiveDsl.g:18214:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18215:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18161:1: ( () )
-            // InternalPerspectiveDsl.g:18162:2: ()
+            // InternalPerspectiveDsl.g:18215:1: ( () )
+            // InternalPerspectiveDsl.g:18216:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:18163:2: ()
-            // InternalPerspectiveDsl.g:18163:3: 
+            // InternalPerspectiveDsl.g:18217:2: ()
+            // InternalPerspectiveDsl.g:18217:3: 
             {
             }
 
@@ -59549,14 +59714,14 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__1"
-    // InternalPerspectiveDsl.g:18171:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:18225:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
     public final void rule__XStringLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18175:1: ( rule__XStringLiteral__Group__1__Impl )
-            // InternalPerspectiveDsl.g:18176:2: rule__XStringLiteral__Group__1__Impl
+            // InternalPerspectiveDsl.g:18229:1: ( rule__XStringLiteral__Group__1__Impl )
+            // InternalPerspectiveDsl.g:18230:2: rule__XStringLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__Group__1__Impl();
@@ -59582,23 +59747,23 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18182:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:18236:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
     public final void rule__XStringLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18186:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:18187:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:18240:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:18241:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:18187:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
-            // InternalPerspectiveDsl.g:18188:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:18241:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalPerspectiveDsl.g:18242:2: ( rule__XStringLiteral__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:18189:2: ( rule__XStringLiteral__ValueAssignment_1 )
-            // InternalPerspectiveDsl.g:18189:3: rule__XStringLiteral__ValueAssignment_1
+            // InternalPerspectiveDsl.g:18243:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalPerspectiveDsl.g:18243:3: rule__XStringLiteral__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__ValueAssignment_1();
@@ -59633,14 +59798,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__0"
-    // InternalPerspectiveDsl.g:18198:1: rule__XTypeLiteral__Group__0 : rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 ;
+    // InternalPerspectiveDsl.g:18252:1: rule__XTypeLiteral__Group__0 : rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 ;
     public final void rule__XTypeLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18202:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
-            // InternalPerspectiveDsl.g:18203:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
+            // InternalPerspectiveDsl.g:18256:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
+            // InternalPerspectiveDsl.g:18257:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
             {
             pushFollow(FOLLOW_129);
             rule__XTypeLiteral__Group__0__Impl();
@@ -59671,23 +59836,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18210:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18264:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18214:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18215:1: ( () )
+            // InternalPerspectiveDsl.g:18268:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18269:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18215:1: ( () )
-            // InternalPerspectiveDsl.g:18216:2: ()
+            // InternalPerspectiveDsl.g:18269:1: ( () )
+            // InternalPerspectiveDsl.g:18270:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); 
             }
-            // InternalPerspectiveDsl.g:18217:2: ()
-            // InternalPerspectiveDsl.g:18217:3: 
+            // InternalPerspectiveDsl.g:18271:2: ()
+            // InternalPerspectiveDsl.g:18271:3: 
             {
             }
 
@@ -59712,14 +59877,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__1"
-    // InternalPerspectiveDsl.g:18225:1: rule__XTypeLiteral__Group__1 : rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 ;
+    // InternalPerspectiveDsl.g:18279:1: rule__XTypeLiteral__Group__1 : rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 ;
     public final void rule__XTypeLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18229:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
-            // InternalPerspectiveDsl.g:18230:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
+            // InternalPerspectiveDsl.g:18283:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
+            // InternalPerspectiveDsl.g:18284:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
             {
             pushFollow(FOLLOW_58);
             rule__XTypeLiteral__Group__1__Impl();
@@ -59750,22 +59915,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18237:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
+    // InternalPerspectiveDsl.g:18291:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
     public final void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18241:1: ( ( 'typeof' ) )
-            // InternalPerspectiveDsl.g:18242:1: ( 'typeof' )
+            // InternalPerspectiveDsl.g:18295:1: ( ( 'typeof' ) )
+            // InternalPerspectiveDsl.g:18296:1: ( 'typeof' )
             {
-            // InternalPerspectiveDsl.g:18242:1: ( 'typeof' )
-            // InternalPerspectiveDsl.g:18243:2: 'typeof'
+            // InternalPerspectiveDsl.g:18296:1: ( 'typeof' )
+            // InternalPerspectiveDsl.g:18297:2: 'typeof'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
             }
-            match(input,115,FOLLOW_2); if (state.failed) return ;
+            match(input,117,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
             }
@@ -59791,14 +59956,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__2"
-    // InternalPerspectiveDsl.g:18252:1: rule__XTypeLiteral__Group__2 : rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 ;
+    // InternalPerspectiveDsl.g:18306:1: rule__XTypeLiteral__Group__2 : rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 ;
     public final void rule__XTypeLiteral__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18256:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
-            // InternalPerspectiveDsl.g:18257:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
+            // InternalPerspectiveDsl.g:18310:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
+            // InternalPerspectiveDsl.g:18311:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__XTypeLiteral__Group__2__Impl();
@@ -59829,22 +59994,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__2__Impl"
-    // InternalPerspectiveDsl.g:18264:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:18318:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
     public final void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18268:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:18269:1: ( '(' )
+            // InternalPerspectiveDsl.g:18322:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:18323:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:18269:1: ( '(' )
-            // InternalPerspectiveDsl.g:18270:2: '('
+            // InternalPerspectiveDsl.g:18323:1: ( '(' )
+            // InternalPerspectiveDsl.g:18324:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -59870,14 +60035,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__3"
-    // InternalPerspectiveDsl.g:18279:1: rule__XTypeLiteral__Group__3 : rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 ;
+    // InternalPerspectiveDsl.g:18333:1: rule__XTypeLiteral__Group__3 : rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 ;
     public final void rule__XTypeLiteral__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18283:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
-            // InternalPerspectiveDsl.g:18284:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
+            // InternalPerspectiveDsl.g:18337:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
+            // InternalPerspectiveDsl.g:18338:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
             {
             pushFollow(FOLLOW_130);
             rule__XTypeLiteral__Group__3__Impl();
@@ -59908,23 +60073,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__3__Impl"
-    // InternalPerspectiveDsl.g:18291:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:18345:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
     public final void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18295:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:18296:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalPerspectiveDsl.g:18349:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:18350:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:18296:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
-            // InternalPerspectiveDsl.g:18297:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalPerspectiveDsl.g:18350:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalPerspectiveDsl.g:18351:2: ( rule__XTypeLiteral__TypeAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:18298:2: ( rule__XTypeLiteral__TypeAssignment_3 )
-            // InternalPerspectiveDsl.g:18298:3: rule__XTypeLiteral__TypeAssignment_3
+            // InternalPerspectiveDsl.g:18352:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalPerspectiveDsl.g:18352:3: rule__XTypeLiteral__TypeAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__TypeAssignment_3();
@@ -59959,14 +60124,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__4"
-    // InternalPerspectiveDsl.g:18306:1: rule__XTypeLiteral__Group__4 : rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 ;
+    // InternalPerspectiveDsl.g:18360:1: rule__XTypeLiteral__Group__4 : rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 ;
     public final void rule__XTypeLiteral__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18310:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
-            // InternalPerspectiveDsl.g:18311:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
+            // InternalPerspectiveDsl.g:18364:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
+            // InternalPerspectiveDsl.g:18365:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
             {
             pushFollow(FOLLOW_130);
             rule__XTypeLiteral__Group__4__Impl();
@@ -59997,35 +60162,35 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__4__Impl"
-    // InternalPerspectiveDsl.g:18318:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
+    // InternalPerspectiveDsl.g:18372:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
     public final void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18322:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
-            // InternalPerspectiveDsl.g:18323:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalPerspectiveDsl.g:18376:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
+            // InternalPerspectiveDsl.g:18377:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
             {
-            // InternalPerspectiveDsl.g:18323:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
-            // InternalPerspectiveDsl.g:18324:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            // InternalPerspectiveDsl.g:18377:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalPerspectiveDsl.g:18378:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); 
             }
-            // InternalPerspectiveDsl.g:18325:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            // InternalPerspectiveDsl.g:18379:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
             loop128:
             do {
                 int alt128=2;
                 int LA128_0 = input.LA(1);
 
-                if ( (LA128_0==101) ) {
+                if ( (LA128_0==103) ) {
                     alt128=1;
                 }
 
 
                 switch (alt128) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:18325:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
+            	    // InternalPerspectiveDsl.g:18379:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
             	    {
             	    pushFollow(FOLLOW_131);
             	    rule__XTypeLiteral__ArrayDimensionsAssignment_4();
@@ -60066,14 +60231,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__5"
-    // InternalPerspectiveDsl.g:18333:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
+    // InternalPerspectiveDsl.g:18387:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
     public final void rule__XTypeLiteral__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18337:1: ( rule__XTypeLiteral__Group__5__Impl )
-            // InternalPerspectiveDsl.g:18338:2: rule__XTypeLiteral__Group__5__Impl
+            // InternalPerspectiveDsl.g:18391:1: ( rule__XTypeLiteral__Group__5__Impl )
+            // InternalPerspectiveDsl.g:18392:2: rule__XTypeLiteral__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__Group__5__Impl();
@@ -60099,22 +60264,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__5__Impl"
-    // InternalPerspectiveDsl.g:18344:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:18398:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
     public final void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18348:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:18349:1: ( ')' )
+            // InternalPerspectiveDsl.g:18402:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:18403:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:18349:1: ( ')' )
-            // InternalPerspectiveDsl.g:18350:2: ')'
+            // InternalPerspectiveDsl.g:18403:1: ( ')' )
+            // InternalPerspectiveDsl.g:18404:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
             }
@@ -60140,14 +60305,14 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__0"
-    // InternalPerspectiveDsl.g:18360:1: rule__XThrowExpression__Group__0 : rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:18414:1: rule__XThrowExpression__Group__0 : rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 ;
     public final void rule__XThrowExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18364:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
-            // InternalPerspectiveDsl.g:18365:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
+            // InternalPerspectiveDsl.g:18418:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
+            // InternalPerspectiveDsl.g:18419:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
             {
             pushFollow(FOLLOW_132);
             rule__XThrowExpression__Group__0__Impl();
@@ -60178,23 +60343,23 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18372:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18426:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
     public final void rule__XThrowExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18376:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18377:1: ( () )
+            // InternalPerspectiveDsl.g:18430:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18431:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18377:1: ( () )
-            // InternalPerspectiveDsl.g:18378:2: ()
+            // InternalPerspectiveDsl.g:18431:1: ( () )
+            // InternalPerspectiveDsl.g:18432:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:18379:2: ()
-            // InternalPerspectiveDsl.g:18379:3: 
+            // InternalPerspectiveDsl.g:18433:2: ()
+            // InternalPerspectiveDsl.g:18433:3: 
             {
             }
 
@@ -60219,14 +60384,14 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__1"
-    // InternalPerspectiveDsl.g:18387:1: rule__XThrowExpression__Group__1 : rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:18441:1: rule__XThrowExpression__Group__1 : rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 ;
     public final void rule__XThrowExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18391:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
-            // InternalPerspectiveDsl.g:18392:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
+            // InternalPerspectiveDsl.g:18445:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
+            // InternalPerspectiveDsl.g:18446:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
             {
             pushFollow(FOLLOW_62);
             rule__XThrowExpression__Group__1__Impl();
@@ -60257,22 +60422,22 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18399:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
+    // InternalPerspectiveDsl.g:18453:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
     public final void rule__XThrowExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18403:1: ( ( 'throw' ) )
-            // InternalPerspectiveDsl.g:18404:1: ( 'throw' )
+            // InternalPerspectiveDsl.g:18457:1: ( ( 'throw' ) )
+            // InternalPerspectiveDsl.g:18458:1: ( 'throw' )
             {
-            // InternalPerspectiveDsl.g:18404:1: ( 'throw' )
-            // InternalPerspectiveDsl.g:18405:2: 'throw'
+            // InternalPerspectiveDsl.g:18458:1: ( 'throw' )
+            // InternalPerspectiveDsl.g:18459:2: 'throw'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
             }
-            match(input,116,FOLLOW_2); if (state.failed) return ;
+            match(input,118,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
             }
@@ -60298,14 +60463,14 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__2"
-    // InternalPerspectiveDsl.g:18414:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:18468:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
     public final void rule__XThrowExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18418:1: ( rule__XThrowExpression__Group__2__Impl )
-            // InternalPerspectiveDsl.g:18419:2: rule__XThrowExpression__Group__2__Impl
+            // InternalPerspectiveDsl.g:18472:1: ( rule__XThrowExpression__Group__2__Impl )
+            // InternalPerspectiveDsl.g:18473:2: rule__XThrowExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__Group__2__Impl();
@@ -60331,23 +60496,23 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:18425:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:18479:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
     public final void rule__XThrowExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18429:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:18430:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:18483:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:18484:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:18430:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
-            // InternalPerspectiveDsl.g:18431:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:18484:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:18485:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:18432:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
-            // InternalPerspectiveDsl.g:18432:3: rule__XThrowExpression__ExpressionAssignment_2
+            // InternalPerspectiveDsl.g:18486:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:18486:3: rule__XThrowExpression__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__ExpressionAssignment_2();
@@ -60382,14 +60547,14 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__0"
-    // InternalPerspectiveDsl.g:18441:1: rule__XReturnExpression__Group__0 : rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:18495:1: rule__XReturnExpression__Group__0 : rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 ;
     public final void rule__XReturnExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18445:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
-            // InternalPerspectiveDsl.g:18446:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
+            // InternalPerspectiveDsl.g:18499:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
+            // InternalPerspectiveDsl.g:18500:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
             {
             pushFollow(FOLLOW_133);
             rule__XReturnExpression__Group__0__Impl();
@@ -60420,23 +60585,23 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18453:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18507:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
     public final void rule__XReturnExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18457:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18458:1: ( () )
+            // InternalPerspectiveDsl.g:18511:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18512:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18458:1: ( () )
-            // InternalPerspectiveDsl.g:18459:2: ()
+            // InternalPerspectiveDsl.g:18512:1: ( () )
+            // InternalPerspectiveDsl.g:18513:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:18460:2: ()
-            // InternalPerspectiveDsl.g:18460:3: 
+            // InternalPerspectiveDsl.g:18514:2: ()
+            // InternalPerspectiveDsl.g:18514:3: 
             {
             }
 
@@ -60461,14 +60626,14 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__1"
-    // InternalPerspectiveDsl.g:18468:1: rule__XReturnExpression__Group__1 : rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:18522:1: rule__XReturnExpression__Group__1 : rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 ;
     public final void rule__XReturnExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18472:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
-            // InternalPerspectiveDsl.g:18473:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
+            // InternalPerspectiveDsl.g:18526:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
+            // InternalPerspectiveDsl.g:18527:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
             {
             pushFollow(FOLLOW_62);
             rule__XReturnExpression__Group__1__Impl();
@@ -60499,22 +60664,22 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18480:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
+    // InternalPerspectiveDsl.g:18534:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
     public final void rule__XReturnExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18484:1: ( ( 'return' ) )
-            // InternalPerspectiveDsl.g:18485:1: ( 'return' )
+            // InternalPerspectiveDsl.g:18538:1: ( ( 'return' ) )
+            // InternalPerspectiveDsl.g:18539:1: ( 'return' )
             {
-            // InternalPerspectiveDsl.g:18485:1: ( 'return' )
-            // InternalPerspectiveDsl.g:18486:2: 'return'
+            // InternalPerspectiveDsl.g:18539:1: ( 'return' )
+            // InternalPerspectiveDsl.g:18540:2: 'return'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
             }
-            match(input,117,FOLLOW_2); if (state.failed) return ;
+            match(input,119,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
             }
@@ -60540,14 +60705,14 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__2"
-    // InternalPerspectiveDsl.g:18495:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:18549:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
     public final void rule__XReturnExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18499:1: ( rule__XReturnExpression__Group__2__Impl )
-            // InternalPerspectiveDsl.g:18500:2: rule__XReturnExpression__Group__2__Impl
+            // InternalPerspectiveDsl.g:18553:1: ( rule__XReturnExpression__Group__2__Impl )
+            // InternalPerspectiveDsl.g:18554:2: rule__XReturnExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XReturnExpression__Group__2__Impl();
@@ -60573,27 +60738,27 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:18506:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
+    // InternalPerspectiveDsl.g:18560:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
     public final void rule__XReturnExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18510:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
-            // InternalPerspectiveDsl.g:18511:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalPerspectiveDsl.g:18564:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
+            // InternalPerspectiveDsl.g:18565:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
             {
-            // InternalPerspectiveDsl.g:18511:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
-            // InternalPerspectiveDsl.g:18512:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            // InternalPerspectiveDsl.g:18565:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalPerspectiveDsl.g:18566:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:18513:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            // InternalPerspectiveDsl.g:18567:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
             int alt129=2;
             alt129 = dfa129.predict(input);
             switch (alt129) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:18513:3: rule__XReturnExpression__ExpressionAssignment_2
+                    // InternalPerspectiveDsl.g:18567:3: rule__XReturnExpression__ExpressionAssignment_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XReturnExpression__ExpressionAssignment_2();
@@ -60631,14 +60796,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0"
-    // InternalPerspectiveDsl.g:18522:1: rule__XTryCatchFinallyExpression__Group__0 : rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:18576:1: rule__XTryCatchFinallyExpression__Group__0 : rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 ;
     public final void rule__XTryCatchFinallyExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18526:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
-            // InternalPerspectiveDsl.g:18527:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
+            // InternalPerspectiveDsl.g:18580:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
+            // InternalPerspectiveDsl.g:18581:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
             {
             pushFollow(FOLLOW_134);
             rule__XTryCatchFinallyExpression__Group__0__Impl();
@@ -60669,23 +60834,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18534:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:18588:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
     public final void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18538:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18539:1: ( () )
+            // InternalPerspectiveDsl.g:18592:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:18593:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18539:1: ( () )
-            // InternalPerspectiveDsl.g:18540:2: ()
+            // InternalPerspectiveDsl.g:18593:1: ( () )
+            // InternalPerspectiveDsl.g:18594:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); 
             }
-            // InternalPerspectiveDsl.g:18541:2: ()
-            // InternalPerspectiveDsl.g:18541:3: 
+            // InternalPerspectiveDsl.g:18595:2: ()
+            // InternalPerspectiveDsl.g:18595:3: 
             {
             }
 
@@ -60710,14 +60875,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1"
-    // InternalPerspectiveDsl.g:18549:1: rule__XTryCatchFinallyExpression__Group__1 : rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:18603:1: rule__XTryCatchFinallyExpression__Group__1 : rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 ;
     public final void rule__XTryCatchFinallyExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18553:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
-            // InternalPerspectiveDsl.g:18554:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
+            // InternalPerspectiveDsl.g:18607:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
+            // InternalPerspectiveDsl.g:18608:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
             {
             pushFollow(FOLLOW_62);
             rule__XTryCatchFinallyExpression__Group__1__Impl();
@@ -60748,22 +60913,22 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18561:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
+    // InternalPerspectiveDsl.g:18615:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
     public final void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18565:1: ( ( 'try' ) )
-            // InternalPerspectiveDsl.g:18566:1: ( 'try' )
+            // InternalPerspectiveDsl.g:18619:1: ( ( 'try' ) )
+            // InternalPerspectiveDsl.g:18620:1: ( 'try' )
             {
-            // InternalPerspectiveDsl.g:18566:1: ( 'try' )
-            // InternalPerspectiveDsl.g:18567:2: 'try'
+            // InternalPerspectiveDsl.g:18620:1: ( 'try' )
+            // InternalPerspectiveDsl.g:18621:2: 'try'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
             }
-            match(input,118,FOLLOW_2); if (state.failed) return ;
+            match(input,120,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
             }
@@ -60789,14 +60954,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2"
-    // InternalPerspectiveDsl.g:18576:1: rule__XTryCatchFinallyExpression__Group__2 : rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:18630:1: rule__XTryCatchFinallyExpression__Group__2 : rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 ;
     public final void rule__XTryCatchFinallyExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18580:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
-            // InternalPerspectiveDsl.g:18581:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
+            // InternalPerspectiveDsl.g:18634:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
+            // InternalPerspectiveDsl.g:18635:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
             {
             pushFollow(FOLLOW_135);
             rule__XTryCatchFinallyExpression__Group__2__Impl();
@@ -60827,23 +60992,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:18588:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:18642:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18592:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:18593:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:18646:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:18647:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:18593:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
-            // InternalPerspectiveDsl.g:18594:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:18647:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalPerspectiveDsl.g:18648:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:18595:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
-            // InternalPerspectiveDsl.g:18595:3: rule__XTryCatchFinallyExpression__ExpressionAssignment_2
+            // InternalPerspectiveDsl.g:18649:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalPerspectiveDsl.g:18649:3: rule__XTryCatchFinallyExpression__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__ExpressionAssignment_2();
@@ -60878,14 +61043,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3"
-    // InternalPerspectiveDsl.g:18603:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:18657:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18607:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
-            // InternalPerspectiveDsl.g:18608:2: rule__XTryCatchFinallyExpression__Group__3__Impl
+            // InternalPerspectiveDsl.g:18661:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:18662:2: rule__XTryCatchFinallyExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group__3__Impl();
@@ -60911,23 +61076,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:18614:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
+    // InternalPerspectiveDsl.g:18668:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18618:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
-            // InternalPerspectiveDsl.g:18619:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:18672:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
+            // InternalPerspectiveDsl.g:18673:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
             {
-            // InternalPerspectiveDsl.g:18619:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
-            // InternalPerspectiveDsl.g:18620:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalPerspectiveDsl.g:18673:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalPerspectiveDsl.g:18674:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); 
             }
-            // InternalPerspectiveDsl.g:18621:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
-            // InternalPerspectiveDsl.g:18621:3: rule__XTryCatchFinallyExpression__Alternatives_3
+            // InternalPerspectiveDsl.g:18675:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalPerspectiveDsl.g:18675:3: rule__XTryCatchFinallyExpression__Alternatives_3
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Alternatives_3();
@@ -60962,14 +61127,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0"
-    // InternalPerspectiveDsl.g:18630:1: rule__XTryCatchFinallyExpression__Group_3_0__0 : rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 ;
+    // InternalPerspectiveDsl.g:18684:1: rule__XTryCatchFinallyExpression__Group_3_0__0 : rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18634:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
-            // InternalPerspectiveDsl.g:18635:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
+            // InternalPerspectiveDsl.g:18688:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
+            // InternalPerspectiveDsl.g:18689:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
             {
             pushFollow(FOLLOW_136);
             rule__XTryCatchFinallyExpression__Group_3_0__0__Impl();
@@ -61000,26 +61165,26 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0__Impl"
-    // InternalPerspectiveDsl.g:18642:1: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl : ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) ;
+    // InternalPerspectiveDsl.g:18696:1: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl : ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18646:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
-            // InternalPerspectiveDsl.g:18647:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalPerspectiveDsl.g:18700:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
+            // InternalPerspectiveDsl.g:18701:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
             {
-            // InternalPerspectiveDsl.g:18647:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
-            // InternalPerspectiveDsl.g:18648:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalPerspectiveDsl.g:18701:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalPerspectiveDsl.g:18702:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
             {
-            // InternalPerspectiveDsl.g:18648:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
-            // InternalPerspectiveDsl.g:18649:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalPerspectiveDsl.g:18702:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
+            // InternalPerspectiveDsl.g:18703:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:18650:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
-            // InternalPerspectiveDsl.g:18650:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            // InternalPerspectiveDsl.g:18704:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalPerspectiveDsl.g:18704:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
             {
             pushFollow(FOLLOW_137);
             rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
@@ -61035,19 +61200,19 @@
 
             }
 
-            // InternalPerspectiveDsl.g:18653:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
-            // InternalPerspectiveDsl.g:18654:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            // InternalPerspectiveDsl.g:18707:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalPerspectiveDsl.g:18708:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:18655:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            // InternalPerspectiveDsl.g:18709:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
             loop130:
             do {
                 int alt130=2;
                 int LA130_0 = input.LA(1);
 
-                if ( (LA130_0==121) ) {
+                if ( (LA130_0==123) ) {
                     int LA130_2 = input.LA(2);
 
                     if ( (synpred189_InternalPerspectiveDsl()) ) {
@@ -61060,7 +61225,7 @@
 
                 switch (alt130) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:18655:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            	    // InternalPerspectiveDsl.g:18709:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
             	    {
             	    pushFollow(FOLLOW_137);
             	    rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
@@ -61104,14 +61269,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1"
-    // InternalPerspectiveDsl.g:18664:1: rule__XTryCatchFinallyExpression__Group_3_0__1 : rule__XTryCatchFinallyExpression__Group_3_0__1__Impl ;
+    // InternalPerspectiveDsl.g:18718:1: rule__XTryCatchFinallyExpression__Group_3_0__1 : rule__XTryCatchFinallyExpression__Group_3_0__1__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18668:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
-            // InternalPerspectiveDsl.g:18669:2: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
+            // InternalPerspectiveDsl.g:18722:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
+            // InternalPerspectiveDsl.g:18723:2: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_0__1__Impl();
@@ -61137,26 +61302,26 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1__Impl"
-    // InternalPerspectiveDsl.g:18675:1: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl : ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:18729:1: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl : ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18679:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:18680:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalPerspectiveDsl.g:18733:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:18734:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:18680:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
-            // InternalPerspectiveDsl.g:18681:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            // InternalPerspectiveDsl.g:18734:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalPerspectiveDsl.g:18735:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); 
             }
-            // InternalPerspectiveDsl.g:18682:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            // InternalPerspectiveDsl.g:18736:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
             int alt131=2;
             int LA131_0 = input.LA(1);
 
-            if ( (LA131_0==119) ) {
+            if ( (LA131_0==121) ) {
                 int LA131_1 = input.LA(2);
 
                 if ( (synpred190_InternalPerspectiveDsl()) ) {
@@ -61165,7 +61330,7 @@
             }
             switch (alt131) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:18682:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+                    // InternalPerspectiveDsl.g:18736:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_0_1__0();
@@ -61203,14 +61368,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0"
-    // InternalPerspectiveDsl.g:18691:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0 : rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 ;
+    // InternalPerspectiveDsl.g:18745:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0 : rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18695:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
-            // InternalPerspectiveDsl.g:18696:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
+            // InternalPerspectiveDsl.g:18749:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
+            // InternalPerspectiveDsl.g:18750:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl();
@@ -61241,25 +61406,25 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:18703:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl : ( ( 'finally' ) ) ;
+    // InternalPerspectiveDsl.g:18757:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl : ( ( 'finally' ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18707:1: ( ( ( 'finally' ) ) )
-            // InternalPerspectiveDsl.g:18708:1: ( ( 'finally' ) )
+            // InternalPerspectiveDsl.g:18761:1: ( ( ( 'finally' ) ) )
+            // InternalPerspectiveDsl.g:18762:1: ( ( 'finally' ) )
             {
-            // InternalPerspectiveDsl.g:18708:1: ( ( 'finally' ) )
-            // InternalPerspectiveDsl.g:18709:2: ( 'finally' )
+            // InternalPerspectiveDsl.g:18762:1: ( ( 'finally' ) )
+            // InternalPerspectiveDsl.g:18763:2: ( 'finally' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:18710:2: ( 'finally' )
-            // InternalPerspectiveDsl.g:18710:3: 'finally'
+            // InternalPerspectiveDsl.g:18764:2: ( 'finally' )
+            // InternalPerspectiveDsl.g:18764:3: 'finally'
             {
-            match(input,119,FOLLOW_2); if (state.failed) return ;
+            match(input,121,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -61288,14 +61453,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1"
-    // InternalPerspectiveDsl.g:18718:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1 : rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:18772:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1 : rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18722:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:18723:2: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
+            // InternalPerspectiveDsl.g:18776:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:18777:2: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl();
@@ -61321,23 +61486,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:18729:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:18783:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18733:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
-            // InternalPerspectiveDsl.g:18734:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalPerspectiveDsl.g:18787:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
+            // InternalPerspectiveDsl.g:18788:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:18734:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
-            // InternalPerspectiveDsl.g:18735:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalPerspectiveDsl.g:18788:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalPerspectiveDsl.g:18789:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:18736:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
-            // InternalPerspectiveDsl.g:18736:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
+            // InternalPerspectiveDsl.g:18790:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalPerspectiveDsl.g:18790:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1();
@@ -61372,14 +61537,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0"
-    // InternalPerspectiveDsl.g:18745:1: rule__XTryCatchFinallyExpression__Group_3_1__0 : rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 ;
+    // InternalPerspectiveDsl.g:18799:1: rule__XTryCatchFinallyExpression__Group_3_1__0 : rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18749:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
-            // InternalPerspectiveDsl.g:18750:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
+            // InternalPerspectiveDsl.g:18803:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
+            // InternalPerspectiveDsl.g:18804:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
             {
             pushFollow(FOLLOW_62);
             rule__XTryCatchFinallyExpression__Group_3_1__0__Impl();
@@ -61410,22 +61575,22 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0__Impl"
-    // InternalPerspectiveDsl.g:18757:1: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl : ( 'finally' ) ;
+    // InternalPerspectiveDsl.g:18811:1: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl : ( 'finally' ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18761:1: ( ( 'finally' ) )
-            // InternalPerspectiveDsl.g:18762:1: ( 'finally' )
+            // InternalPerspectiveDsl.g:18815:1: ( ( 'finally' ) )
+            // InternalPerspectiveDsl.g:18816:1: ( 'finally' )
             {
-            // InternalPerspectiveDsl.g:18762:1: ( 'finally' )
-            // InternalPerspectiveDsl.g:18763:2: 'finally'
+            // InternalPerspectiveDsl.g:18816:1: ( 'finally' )
+            // InternalPerspectiveDsl.g:18817:2: 'finally'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
             }
-            match(input,119,FOLLOW_2); if (state.failed) return ;
+            match(input,121,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
             }
@@ -61451,14 +61616,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1"
-    // InternalPerspectiveDsl.g:18772:1: rule__XTryCatchFinallyExpression__Group_3_1__1 : rule__XTryCatchFinallyExpression__Group_3_1__1__Impl ;
+    // InternalPerspectiveDsl.g:18826:1: rule__XTryCatchFinallyExpression__Group_3_1__1 : rule__XTryCatchFinallyExpression__Group_3_1__1__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18776:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
-            // InternalPerspectiveDsl.g:18777:2: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
+            // InternalPerspectiveDsl.g:18830:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
+            // InternalPerspectiveDsl.g:18831:2: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_1__1__Impl();
@@ -61484,23 +61649,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1__Impl"
-    // InternalPerspectiveDsl.g:18783:1: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:18837:1: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18787:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
-            // InternalPerspectiveDsl.g:18788:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:18841:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
+            // InternalPerspectiveDsl.g:18842:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:18788:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
-            // InternalPerspectiveDsl.g:18789:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:18842:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalPerspectiveDsl.g:18843:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); 
             }
-            // InternalPerspectiveDsl.g:18790:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
-            // InternalPerspectiveDsl.g:18790:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
+            // InternalPerspectiveDsl.g:18844:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalPerspectiveDsl.g:18844:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1();
@@ -61535,14 +61700,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__0"
-    // InternalPerspectiveDsl.g:18799:1: rule__XSynchronizedExpression__Group__0 : rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 ;
+    // InternalPerspectiveDsl.g:18853:1: rule__XSynchronizedExpression__Group__0 : rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 ;
     public final void rule__XSynchronizedExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18803:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
-            // InternalPerspectiveDsl.g:18804:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
+            // InternalPerspectiveDsl.g:18857:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
+            // InternalPerspectiveDsl.g:18858:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
             {
             pushFollow(FOLLOW_62);
             rule__XSynchronizedExpression__Group__0__Impl();
@@ -61573,23 +61738,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__0__Impl"
-    // InternalPerspectiveDsl.g:18811:1: rule__XSynchronizedExpression__Group__0__Impl : ( ( rule__XSynchronizedExpression__Group_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:18865:1: rule__XSynchronizedExpression__Group__0__Impl : ( ( rule__XSynchronizedExpression__Group_0__0 ) ) ;
     public final void rule__XSynchronizedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18815:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
-            // InternalPerspectiveDsl.g:18816:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:18869:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
+            // InternalPerspectiveDsl.g:18870:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:18816:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
-            // InternalPerspectiveDsl.g:18817:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:18870:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalPerspectiveDsl.g:18871:2: ( rule__XSynchronizedExpression__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:18818:2: ( rule__XSynchronizedExpression__Group_0__0 )
-            // InternalPerspectiveDsl.g:18818:3: rule__XSynchronizedExpression__Group_0__0
+            // InternalPerspectiveDsl.g:18872:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalPerspectiveDsl.g:18872:3: rule__XSynchronizedExpression__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0__0();
@@ -61624,14 +61789,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__1"
-    // InternalPerspectiveDsl.g:18826:1: rule__XSynchronizedExpression__Group__1 : rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 ;
+    // InternalPerspectiveDsl.g:18880:1: rule__XSynchronizedExpression__Group__1 : rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 ;
     public final void rule__XSynchronizedExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18830:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
-            // InternalPerspectiveDsl.g:18831:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
+            // InternalPerspectiveDsl.g:18884:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
+            // InternalPerspectiveDsl.g:18885:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
             {
             pushFollow(FOLLOW_107);
             rule__XSynchronizedExpression__Group__1__Impl();
@@ -61662,23 +61827,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__1__Impl"
-    // InternalPerspectiveDsl.g:18838:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:18892:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
     public final void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18842:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:18843:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalPerspectiveDsl.g:18896:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:18897:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:18843:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
-            // InternalPerspectiveDsl.g:18844:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalPerspectiveDsl.g:18897:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalPerspectiveDsl.g:18898:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:18845:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
-            // InternalPerspectiveDsl.g:18845:3: rule__XSynchronizedExpression__ParamAssignment_1
+            // InternalPerspectiveDsl.g:18899:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalPerspectiveDsl.g:18899:3: rule__XSynchronizedExpression__ParamAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__ParamAssignment_1();
@@ -61713,14 +61878,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__2"
-    // InternalPerspectiveDsl.g:18853:1: rule__XSynchronizedExpression__Group__2 : rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 ;
+    // InternalPerspectiveDsl.g:18907:1: rule__XSynchronizedExpression__Group__2 : rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 ;
     public final void rule__XSynchronizedExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18857:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
-            // InternalPerspectiveDsl.g:18858:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
+            // InternalPerspectiveDsl.g:18911:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
+            // InternalPerspectiveDsl.g:18912:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
             {
             pushFollow(FOLLOW_62);
             rule__XSynchronizedExpression__Group__2__Impl();
@@ -61751,22 +61916,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__2__Impl"
-    // InternalPerspectiveDsl.g:18865:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:18919:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18869:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:18870:1: ( ')' )
+            // InternalPerspectiveDsl.g:18923:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:18924:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:18870:1: ( ')' )
-            // InternalPerspectiveDsl.g:18871:2: ')'
+            // InternalPerspectiveDsl.g:18924:1: ( ')' )
+            // InternalPerspectiveDsl.g:18925:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -61792,14 +61957,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__3"
-    // InternalPerspectiveDsl.g:18880:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
+    // InternalPerspectiveDsl.g:18934:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
     public final void rule__XSynchronizedExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18884:1: ( rule__XSynchronizedExpression__Group__3__Impl )
-            // InternalPerspectiveDsl.g:18885:2: rule__XSynchronizedExpression__Group__3__Impl
+            // InternalPerspectiveDsl.g:18938:1: ( rule__XSynchronizedExpression__Group__3__Impl )
+            // InternalPerspectiveDsl.g:18939:2: rule__XSynchronizedExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group__3__Impl();
@@ -61825,23 +61990,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__3__Impl"
-    // InternalPerspectiveDsl.g:18891:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
+    // InternalPerspectiveDsl.g:18945:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
     public final void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18895:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
-            // InternalPerspectiveDsl.g:18896:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:18949:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
+            // InternalPerspectiveDsl.g:18950:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
             {
-            // InternalPerspectiveDsl.g:18896:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
-            // InternalPerspectiveDsl.g:18897:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:18950:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalPerspectiveDsl.g:18951:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); 
             }
-            // InternalPerspectiveDsl.g:18898:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
-            // InternalPerspectiveDsl.g:18898:3: rule__XSynchronizedExpression__ExpressionAssignment_3
+            // InternalPerspectiveDsl.g:18952:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalPerspectiveDsl.g:18952:3: rule__XSynchronizedExpression__ExpressionAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__ExpressionAssignment_3();
@@ -61876,14 +62041,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0__0"
-    // InternalPerspectiveDsl.g:18907:1: rule__XSynchronizedExpression__Group_0__0 : rule__XSynchronizedExpression__Group_0__0__Impl ;
+    // InternalPerspectiveDsl.g:18961:1: rule__XSynchronizedExpression__Group_0__0 : rule__XSynchronizedExpression__Group_0__0__Impl ;
     public final void rule__XSynchronizedExpression__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18911:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
-            // InternalPerspectiveDsl.g:18912:2: rule__XSynchronizedExpression__Group_0__0__Impl
+            // InternalPerspectiveDsl.g:18965:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
+            // InternalPerspectiveDsl.g:18966:2: rule__XSynchronizedExpression__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0__0__Impl();
@@ -61909,23 +62074,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:18918:1: rule__XSynchronizedExpression__Group_0__0__Impl : ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:18972:1: rule__XSynchronizedExpression__Group_0__0__Impl : ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) ;
     public final void rule__XSynchronizedExpression__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18922:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:18923:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:18976:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:18977:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:18923:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
-            // InternalPerspectiveDsl.g:18924:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:18977:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalPerspectiveDsl.g:18978:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); 
             }
-            // InternalPerspectiveDsl.g:18925:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
-            // InternalPerspectiveDsl.g:18925:3: rule__XSynchronizedExpression__Group_0_0__0
+            // InternalPerspectiveDsl.g:18979:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalPerspectiveDsl.g:18979:3: rule__XSynchronizedExpression__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0_0__0();
@@ -61960,14 +62125,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0"
-    // InternalPerspectiveDsl.g:18934:1: rule__XSynchronizedExpression__Group_0_0__0 : rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 ;
+    // InternalPerspectiveDsl.g:18988:1: rule__XSynchronizedExpression__Group_0_0__0 : rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 ;
     public final void rule__XSynchronizedExpression__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18938:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
-            // InternalPerspectiveDsl.g:18939:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
+            // InternalPerspectiveDsl.g:18992:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
+            // InternalPerspectiveDsl.g:18993:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
             {
             pushFollow(FOLLOW_138);
             rule__XSynchronizedExpression__Group_0_0__0__Impl();
@@ -61998,23 +62163,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:18946:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:19000:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18950:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:18951:1: ( () )
+            // InternalPerspectiveDsl.g:19004:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:19005:1: ( () )
             {
-            // InternalPerspectiveDsl.g:18951:1: ( () )
-            // InternalPerspectiveDsl.g:18952:2: ()
+            // InternalPerspectiveDsl.g:19005:1: ( () )
+            // InternalPerspectiveDsl.g:19006:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:18953:2: ()
-            // InternalPerspectiveDsl.g:18953:3: 
+            // InternalPerspectiveDsl.g:19007:2: ()
+            // InternalPerspectiveDsl.g:19007:3: 
             {
             }
 
@@ -62039,14 +62204,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1"
-    // InternalPerspectiveDsl.g:18961:1: rule__XSynchronizedExpression__Group_0_0__1 : rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 ;
+    // InternalPerspectiveDsl.g:19015:1: rule__XSynchronizedExpression__Group_0_0__1 : rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 ;
     public final void rule__XSynchronizedExpression__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18965:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
-            // InternalPerspectiveDsl.g:18966:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
+            // InternalPerspectiveDsl.g:19019:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
+            // InternalPerspectiveDsl.g:19020:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
             {
             pushFollow(FOLLOW_58);
             rule__XSynchronizedExpression__Group_0_0__1__Impl();
@@ -62077,22 +62242,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:18973:1: rule__XSynchronizedExpression__Group_0_0__1__Impl : ( 'synchronized' ) ;
+    // InternalPerspectiveDsl.g:19027:1: rule__XSynchronizedExpression__Group_0_0__1__Impl : ( 'synchronized' ) ;
     public final void rule__XSynchronizedExpression__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18977:1: ( ( 'synchronized' ) )
-            // InternalPerspectiveDsl.g:18978:1: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:19031:1: ( ( 'synchronized' ) )
+            // InternalPerspectiveDsl.g:19032:1: ( 'synchronized' )
             {
-            // InternalPerspectiveDsl.g:18978:1: ( 'synchronized' )
-            // InternalPerspectiveDsl.g:18979:2: 'synchronized'
+            // InternalPerspectiveDsl.g:19032:1: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:19033:2: 'synchronized'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
             }
-            match(input,120,FOLLOW_2); if (state.failed) return ;
+            match(input,122,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
             }
@@ -62118,14 +62283,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2"
-    // InternalPerspectiveDsl.g:18988:1: rule__XSynchronizedExpression__Group_0_0__2 : rule__XSynchronizedExpression__Group_0_0__2__Impl ;
+    // InternalPerspectiveDsl.g:19042:1: rule__XSynchronizedExpression__Group_0_0__2 : rule__XSynchronizedExpression__Group_0_0__2__Impl ;
     public final void rule__XSynchronizedExpression__Group_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:18992:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
-            // InternalPerspectiveDsl.g:18993:2: rule__XSynchronizedExpression__Group_0_0__2__Impl
+            // InternalPerspectiveDsl.g:19046:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
+            // InternalPerspectiveDsl.g:19047:2: rule__XSynchronizedExpression__Group_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0_0__2__Impl();
@@ -62151,22 +62316,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2__Impl"
-    // InternalPerspectiveDsl.g:18999:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:19053:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
     public final void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19003:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:19004:1: ( '(' )
+            // InternalPerspectiveDsl.g:19057:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:19058:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:19004:1: ( '(' )
-            // InternalPerspectiveDsl.g:19005:2: '('
+            // InternalPerspectiveDsl.g:19058:1: ( '(' )
+            // InternalPerspectiveDsl.g:19059:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
@@ -62192,14 +62357,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__0"
-    // InternalPerspectiveDsl.g:19015:1: rule__XCatchClause__Group__0 : rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 ;
+    // InternalPerspectiveDsl.g:19069:1: rule__XCatchClause__Group__0 : rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 ;
     public final void rule__XCatchClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19019:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
-            // InternalPerspectiveDsl.g:19020:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
+            // InternalPerspectiveDsl.g:19073:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
+            // InternalPerspectiveDsl.g:19074:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
             {
             pushFollow(FOLLOW_58);
             rule__XCatchClause__Group__0__Impl();
@@ -62230,25 +62395,25 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19027:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
+    // InternalPerspectiveDsl.g:19081:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
     public final void rule__XCatchClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19031:1: ( ( ( 'catch' ) ) )
-            // InternalPerspectiveDsl.g:19032:1: ( ( 'catch' ) )
+            // InternalPerspectiveDsl.g:19085:1: ( ( ( 'catch' ) ) )
+            // InternalPerspectiveDsl.g:19086:1: ( ( 'catch' ) )
             {
-            // InternalPerspectiveDsl.g:19032:1: ( ( 'catch' ) )
-            // InternalPerspectiveDsl.g:19033:2: ( 'catch' )
+            // InternalPerspectiveDsl.g:19086:1: ( ( 'catch' ) )
+            // InternalPerspectiveDsl.g:19087:2: ( 'catch' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); 
             }
-            // InternalPerspectiveDsl.g:19034:2: ( 'catch' )
-            // InternalPerspectiveDsl.g:19034:3: 'catch'
+            // InternalPerspectiveDsl.g:19088:2: ( 'catch' )
+            // InternalPerspectiveDsl.g:19088:3: 'catch'
             {
-            match(input,121,FOLLOW_2); if (state.failed) return ;
+            match(input,123,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -62277,14 +62442,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__1"
-    // InternalPerspectiveDsl.g:19042:1: rule__XCatchClause__Group__1 : rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 ;
+    // InternalPerspectiveDsl.g:19096:1: rule__XCatchClause__Group__1 : rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 ;
     public final void rule__XCatchClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19046:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
-            // InternalPerspectiveDsl.g:19047:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
+            // InternalPerspectiveDsl.g:19100:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
+            // InternalPerspectiveDsl.g:19101:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
             {
             pushFollow(FOLLOW_79);
             rule__XCatchClause__Group__1__Impl();
@@ -62315,22 +62480,22 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19054:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:19108:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
     public final void rule__XCatchClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19058:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:19059:1: ( '(' )
+            // InternalPerspectiveDsl.g:19112:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:19113:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:19059:1: ( '(' )
-            // InternalPerspectiveDsl.g:19060:2: '('
+            // InternalPerspectiveDsl.g:19113:1: ( '(' )
+            // InternalPerspectiveDsl.g:19114:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
             }
@@ -62356,14 +62521,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__2"
-    // InternalPerspectiveDsl.g:19069:1: rule__XCatchClause__Group__2 : rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 ;
+    // InternalPerspectiveDsl.g:19123:1: rule__XCatchClause__Group__2 : rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 ;
     public final void rule__XCatchClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19073:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
-            // InternalPerspectiveDsl.g:19074:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
+            // InternalPerspectiveDsl.g:19127:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
+            // InternalPerspectiveDsl.g:19128:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
             {
             pushFollow(FOLLOW_107);
             rule__XCatchClause__Group__2__Impl();
@@ -62394,23 +62559,23 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__2__Impl"
-    // InternalPerspectiveDsl.g:19081:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:19135:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
     public final void rule__XCatchClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19085:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:19086:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalPerspectiveDsl.g:19139:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:19140:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:19086:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
-            // InternalPerspectiveDsl.g:19087:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalPerspectiveDsl.g:19140:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalPerspectiveDsl.g:19141:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:19088:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
-            // InternalPerspectiveDsl.g:19088:3: rule__XCatchClause__DeclaredParamAssignment_2
+            // InternalPerspectiveDsl.g:19142:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalPerspectiveDsl.g:19142:3: rule__XCatchClause__DeclaredParamAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__DeclaredParamAssignment_2();
@@ -62445,14 +62610,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__3"
-    // InternalPerspectiveDsl.g:19096:1: rule__XCatchClause__Group__3 : rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 ;
+    // InternalPerspectiveDsl.g:19150:1: rule__XCatchClause__Group__3 : rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 ;
     public final void rule__XCatchClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19100:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
-            // InternalPerspectiveDsl.g:19101:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
+            // InternalPerspectiveDsl.g:19154:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
+            // InternalPerspectiveDsl.g:19155:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
             {
             pushFollow(FOLLOW_62);
             rule__XCatchClause__Group__3__Impl();
@@ -62483,22 +62648,22 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__3__Impl"
-    // InternalPerspectiveDsl.g:19108:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:19162:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
     public final void rule__XCatchClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19112:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:19113:1: ( ')' )
+            // InternalPerspectiveDsl.g:19166:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:19167:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:19113:1: ( ')' )
-            // InternalPerspectiveDsl.g:19114:2: ')'
+            // InternalPerspectiveDsl.g:19167:1: ( ')' )
+            // InternalPerspectiveDsl.g:19168:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
             }
@@ -62524,14 +62689,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__4"
-    // InternalPerspectiveDsl.g:19123:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
+    // InternalPerspectiveDsl.g:19177:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
     public final void rule__XCatchClause__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19127:1: ( rule__XCatchClause__Group__4__Impl )
-            // InternalPerspectiveDsl.g:19128:2: rule__XCatchClause__Group__4__Impl
+            // InternalPerspectiveDsl.g:19181:1: ( rule__XCatchClause__Group__4__Impl )
+            // InternalPerspectiveDsl.g:19182:2: rule__XCatchClause__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__Group__4__Impl();
@@ -62557,23 +62722,23 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__4__Impl"
-    // InternalPerspectiveDsl.g:19134:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
+    // InternalPerspectiveDsl.g:19188:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
     public final void rule__XCatchClause__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19138:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
-            // InternalPerspectiveDsl.g:19139:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalPerspectiveDsl.g:19192:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
+            // InternalPerspectiveDsl.g:19193:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
             {
-            // InternalPerspectiveDsl.g:19139:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
-            // InternalPerspectiveDsl.g:19140:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalPerspectiveDsl.g:19193:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalPerspectiveDsl.g:19194:2: ( rule__XCatchClause__ExpressionAssignment_4 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); 
             }
-            // InternalPerspectiveDsl.g:19141:2: ( rule__XCatchClause__ExpressionAssignment_4 )
-            // InternalPerspectiveDsl.g:19141:3: rule__XCatchClause__ExpressionAssignment_4
+            // InternalPerspectiveDsl.g:19195:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalPerspectiveDsl.g:19195:3: rule__XCatchClause__ExpressionAssignment_4
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__ExpressionAssignment_4();
@@ -62608,14 +62773,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__0"
-    // InternalPerspectiveDsl.g:19150:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ;
+    // InternalPerspectiveDsl.g:19204:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ;
     public final void rule__QualifiedName__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19154:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
-            // InternalPerspectiveDsl.g:19155:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
+            // InternalPerspectiveDsl.g:19208:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
+            // InternalPerspectiveDsl.g:19209:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
             {
             pushFollow(FOLLOW_139);
             rule__QualifiedName__Group__0__Impl();
@@ -62646,17 +62811,17 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19162:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:19216:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedName__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19166:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:19167:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:19220:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:19221:1: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:19167:1: ( ruleValidID )
-            // InternalPerspectiveDsl.g:19168:2: ruleValidID
+            // InternalPerspectiveDsl.g:19221:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:19222:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
@@ -62691,14 +62856,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__1"
-    // InternalPerspectiveDsl.g:19177:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:19231:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
     public final void rule__QualifiedName__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19181:1: ( rule__QualifiedName__Group__1__Impl )
-            // InternalPerspectiveDsl.g:19182:2: rule__QualifiedName__Group__1__Impl
+            // InternalPerspectiveDsl.g:19235:1: ( rule__QualifiedName__Group__1__Impl )
+            // InternalPerspectiveDsl.g:19236:2: rule__QualifiedName__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group__1__Impl();
@@ -62724,22 +62889,22 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19188:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:19242:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ;
     public final void rule__QualifiedName__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19192:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
-            // InternalPerspectiveDsl.g:19193:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:19246:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
+            // InternalPerspectiveDsl.g:19247:1: ( ( rule__QualifiedName__Group_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:19193:1: ( ( rule__QualifiedName__Group_1__0 )* )
-            // InternalPerspectiveDsl.g:19194:2: ( rule__QualifiedName__Group_1__0 )*
+            // InternalPerspectiveDsl.g:19247:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalPerspectiveDsl.g:19248:2: ( rule__QualifiedName__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:19195:2: ( rule__QualifiedName__Group_1__0 )*
+            // InternalPerspectiveDsl.g:19249:2: ( rule__QualifiedName__Group_1__0 )*
             loop132:
             do {
                 int alt132=2;
@@ -62764,7 +62929,7 @@
 
                 switch (alt132) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:19195:3: rule__QualifiedName__Group_1__0
+            	    // InternalPerspectiveDsl.g:19249:3: rule__QualifiedName__Group_1__0
             	    {
             	    pushFollow(FOLLOW_140);
             	    rule__QualifiedName__Group_1__0();
@@ -62805,14 +62970,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__0"
-    // InternalPerspectiveDsl.g:19204:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ;
+    // InternalPerspectiveDsl.g:19258:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ;
     public final void rule__QualifiedName__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19208:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
-            // InternalPerspectiveDsl.g:19209:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
+            // InternalPerspectiveDsl.g:19262:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
+            // InternalPerspectiveDsl.g:19263:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
             {
             pushFollow(FOLLOW_7);
             rule__QualifiedName__Group_1__0__Impl();
@@ -62843,23 +63008,23 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:19216:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
+    // InternalPerspectiveDsl.g:19270:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
     public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19220:1: ( ( ( '.' ) ) )
-            // InternalPerspectiveDsl.g:19221:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:19274:1: ( ( ( '.' ) ) )
+            // InternalPerspectiveDsl.g:19275:1: ( ( '.' ) )
             {
-            // InternalPerspectiveDsl.g:19221:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:19222:2: ( '.' )
+            // InternalPerspectiveDsl.g:19275:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:19276:2: ( '.' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
             }
-            // InternalPerspectiveDsl.g:19223:2: ( '.' )
-            // InternalPerspectiveDsl.g:19223:3: '.'
+            // InternalPerspectiveDsl.g:19277:2: ( '.' )
+            // InternalPerspectiveDsl.g:19277:3: '.'
             {
             match(input,43,FOLLOW_2); if (state.failed) return ;
 
@@ -62890,14 +63055,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__1"
-    // InternalPerspectiveDsl.g:19231:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:19285:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ;
     public final void rule__QualifiedName__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19235:1: ( rule__QualifiedName__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:19236:2: rule__QualifiedName__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:19289:1: ( rule__QualifiedName__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:19290:2: rule__QualifiedName__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group_1__1__Impl();
@@ -62923,17 +63088,17 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:19242:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:19296:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19246:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:19247:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:19300:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:19301:1: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:19247:1: ( ruleValidID )
-            // InternalPerspectiveDsl.g:19248:2: ruleValidID
+            // InternalPerspectiveDsl.g:19301:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:19302:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
@@ -62968,14 +63133,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1__0"
-    // InternalPerspectiveDsl.g:19258:1: rule__Number__Group_1__0 : rule__Number__Group_1__0__Impl rule__Number__Group_1__1 ;
+    // InternalPerspectiveDsl.g:19312:1: rule__Number__Group_1__0 : rule__Number__Group_1__0__Impl rule__Number__Group_1__1 ;
     public final void rule__Number__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19262:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
-            // InternalPerspectiveDsl.g:19263:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
+            // InternalPerspectiveDsl.g:19316:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
+            // InternalPerspectiveDsl.g:19317:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
             {
             pushFollow(FOLLOW_139);
             rule__Number__Group_1__0__Impl();
@@ -63006,23 +63171,23 @@
 
 
     // $ANTLR start "rule__Number__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:19270:1: rule__Number__Group_1__0__Impl : ( ( rule__Number__Alternatives_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:19324:1: rule__Number__Group_1__0__Impl : ( ( rule__Number__Alternatives_1_0 ) ) ;
     public final void rule__Number__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19274:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
-            // InternalPerspectiveDsl.g:19275:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalPerspectiveDsl.g:19328:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
+            // InternalPerspectiveDsl.g:19329:1: ( ( rule__Number__Alternatives_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:19275:1: ( ( rule__Number__Alternatives_1_0 ) )
-            // InternalPerspectiveDsl.g:19276:2: ( rule__Number__Alternatives_1_0 )
+            // InternalPerspectiveDsl.g:19329:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalPerspectiveDsl.g:19330:2: ( rule__Number__Alternatives_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives_1_0()); 
             }
-            // InternalPerspectiveDsl.g:19277:2: ( rule__Number__Alternatives_1_0 )
-            // InternalPerspectiveDsl.g:19277:3: rule__Number__Alternatives_1_0
+            // InternalPerspectiveDsl.g:19331:2: ( rule__Number__Alternatives_1_0 )
+            // InternalPerspectiveDsl.g:19331:3: rule__Number__Alternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives_1_0();
@@ -63057,14 +63222,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1__1"
-    // InternalPerspectiveDsl.g:19285:1: rule__Number__Group_1__1 : rule__Number__Group_1__1__Impl ;
+    // InternalPerspectiveDsl.g:19339:1: rule__Number__Group_1__1 : rule__Number__Group_1__1__Impl ;
     public final void rule__Number__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19289:1: ( rule__Number__Group_1__1__Impl )
-            // InternalPerspectiveDsl.g:19290:2: rule__Number__Group_1__1__Impl
+            // InternalPerspectiveDsl.g:19343:1: ( rule__Number__Group_1__1__Impl )
+            // InternalPerspectiveDsl.g:19344:2: rule__Number__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Number__Group_1__1__Impl();
@@ -63090,22 +63255,22 @@
 
 
     // $ANTLR start "rule__Number__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:19296:1: rule__Number__Group_1__1__Impl : ( ( rule__Number__Group_1_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:19350:1: rule__Number__Group_1__1__Impl : ( ( rule__Number__Group_1_1__0 )? ) ;
     public final void rule__Number__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19300:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
-            // InternalPerspectiveDsl.g:19301:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:19354:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
+            // InternalPerspectiveDsl.g:19355:1: ( ( rule__Number__Group_1_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:19301:1: ( ( rule__Number__Group_1_1__0 )? )
-            // InternalPerspectiveDsl.g:19302:2: ( rule__Number__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:19355:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalPerspectiveDsl.g:19356:2: ( rule__Number__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getGroup_1_1()); 
             }
-            // InternalPerspectiveDsl.g:19303:2: ( rule__Number__Group_1_1__0 )?
+            // InternalPerspectiveDsl.g:19357:2: ( rule__Number__Group_1_1__0 )?
             int alt133=2;
             int LA133_0 = input.LA(1);
 
@@ -63118,7 +63283,7 @@
             }
             switch (alt133) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:19303:3: rule__Number__Group_1_1__0
+                    // InternalPerspectiveDsl.g:19357:3: rule__Number__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Number__Group_1_1__0();
@@ -63156,14 +63321,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__0"
-    // InternalPerspectiveDsl.g:19312:1: rule__Number__Group_1_1__0 : rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 ;
+    // InternalPerspectiveDsl.g:19366:1: rule__Number__Group_1_1__0 : rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 ;
     public final void rule__Number__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19316:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
-            // InternalPerspectiveDsl.g:19317:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
+            // InternalPerspectiveDsl.g:19370:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
+            // InternalPerspectiveDsl.g:19371:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
             {
             pushFollow(FOLLOW_141);
             rule__Number__Group_1_1__0__Impl();
@@ -63194,17 +63359,17 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:19324:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
+    // InternalPerspectiveDsl.g:19378:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
     public final void rule__Number__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19328:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:19329:1: ( '.' )
+            // InternalPerspectiveDsl.g:19382:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:19383:1: ( '.' )
             {
-            // InternalPerspectiveDsl.g:19329:1: ( '.' )
-            // InternalPerspectiveDsl.g:19330:2: '.'
+            // InternalPerspectiveDsl.g:19383:1: ( '.' )
+            // InternalPerspectiveDsl.g:19384:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
@@ -63235,14 +63400,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__1"
-    // InternalPerspectiveDsl.g:19339:1: rule__Number__Group_1_1__1 : rule__Number__Group_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:19393:1: rule__Number__Group_1_1__1 : rule__Number__Group_1_1__1__Impl ;
     public final void rule__Number__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19343:1: ( rule__Number__Group_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:19344:2: rule__Number__Group_1_1__1__Impl
+            // InternalPerspectiveDsl.g:19397:1: ( rule__Number__Group_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:19398:2: rule__Number__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Number__Group_1_1__1__Impl();
@@ -63268,23 +63433,23 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:19350:1: rule__Number__Group_1_1__1__Impl : ( ( rule__Number__Alternatives_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:19404:1: rule__Number__Group_1_1__1__Impl : ( ( rule__Number__Alternatives_1_1_1 ) ) ;
     public final void rule__Number__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19354:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:19355:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalPerspectiveDsl.g:19408:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:19409:1: ( ( rule__Number__Alternatives_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:19355:1: ( ( rule__Number__Alternatives_1_1_1 ) )
-            // InternalPerspectiveDsl.g:19356:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalPerspectiveDsl.g:19409:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalPerspectiveDsl.g:19410:2: ( rule__Number__Alternatives_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:19357:2: ( rule__Number__Alternatives_1_1_1 )
-            // InternalPerspectiveDsl.g:19357:3: rule__Number__Alternatives_1_1_1
+            // InternalPerspectiveDsl.g:19411:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalPerspectiveDsl.g:19411:3: rule__Number__Alternatives_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives_1_1_1();
@@ -63319,14 +63484,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__0"
-    // InternalPerspectiveDsl.g:19366:1: rule__JvmTypeReference__Group_0__0 : rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 ;
+    // InternalPerspectiveDsl.g:19420:1: rule__JvmTypeReference__Group_0__0 : rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 ;
     public final void rule__JvmTypeReference__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19370:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
-            // InternalPerspectiveDsl.g:19371:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
+            // InternalPerspectiveDsl.g:19424:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
+            // InternalPerspectiveDsl.g:19425:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
             {
             pushFollow(FOLLOW_66);
             rule__JvmTypeReference__Group_0__0__Impl();
@@ -63357,17 +63522,17 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:19378:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
+    // InternalPerspectiveDsl.g:19432:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
     public final void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19382:1: ( ( ruleJvmParameterizedTypeReference ) )
-            // InternalPerspectiveDsl.g:19383:1: ( ruleJvmParameterizedTypeReference )
+            // InternalPerspectiveDsl.g:19436:1: ( ( ruleJvmParameterizedTypeReference ) )
+            // InternalPerspectiveDsl.g:19437:1: ( ruleJvmParameterizedTypeReference )
             {
-            // InternalPerspectiveDsl.g:19383:1: ( ruleJvmParameterizedTypeReference )
-            // InternalPerspectiveDsl.g:19384:2: ruleJvmParameterizedTypeReference
+            // InternalPerspectiveDsl.g:19437:1: ( ruleJvmParameterizedTypeReference )
+            // InternalPerspectiveDsl.g:19438:2: ruleJvmParameterizedTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
@@ -63402,14 +63567,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__1"
-    // InternalPerspectiveDsl.g:19393:1: rule__JvmTypeReference__Group_0__1 : rule__JvmTypeReference__Group_0__1__Impl ;
+    // InternalPerspectiveDsl.g:19447:1: rule__JvmTypeReference__Group_0__1 : rule__JvmTypeReference__Group_0__1__Impl ;
     public final void rule__JvmTypeReference__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19397:1: ( rule__JvmTypeReference__Group_0__1__Impl )
-            // InternalPerspectiveDsl.g:19398:2: rule__JvmTypeReference__Group_0__1__Impl
+            // InternalPerspectiveDsl.g:19451:1: ( rule__JvmTypeReference__Group_0__1__Impl )
+            // InternalPerspectiveDsl.g:19452:2: rule__JvmTypeReference__Group_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0__1__Impl();
@@ -63435,31 +63600,31 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:19404:1: rule__JvmTypeReference__Group_0__1__Impl : ( ( rule__JvmTypeReference__Group_0_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:19458:1: rule__JvmTypeReference__Group_0__1__Impl : ( ( rule__JvmTypeReference__Group_0_1__0 )* ) ;
     public final void rule__JvmTypeReference__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19408:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
-            // InternalPerspectiveDsl.g:19409:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalPerspectiveDsl.g:19462:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
+            // InternalPerspectiveDsl.g:19463:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:19409:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
-            // InternalPerspectiveDsl.g:19410:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            // InternalPerspectiveDsl.g:19463:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalPerspectiveDsl.g:19464:2: ( rule__JvmTypeReference__Group_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); 
             }
-            // InternalPerspectiveDsl.g:19411:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            // InternalPerspectiveDsl.g:19465:2: ( rule__JvmTypeReference__Group_0_1__0 )*
             loop134:
             do {
                 int alt134=2;
                 int LA134_0 = input.LA(1);
 
-                if ( (LA134_0==101) ) {
+                if ( (LA134_0==103) ) {
                     int LA134_2 = input.LA(2);
 
-                    if ( (LA134_2==99) ) {
+                    if ( (LA134_2==101) ) {
                         int LA134_3 = input.LA(3);
 
                         if ( (synpred193_InternalPerspectiveDsl()) ) {
@@ -63475,7 +63640,7 @@
 
                 switch (alt134) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:19411:3: rule__JvmTypeReference__Group_0_1__0
+            	    // InternalPerspectiveDsl.g:19465:3: rule__JvmTypeReference__Group_0_1__0
             	    {
             	    pushFollow(FOLLOW_131);
             	    rule__JvmTypeReference__Group_0_1__0();
@@ -63516,14 +63681,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1__0"
-    // InternalPerspectiveDsl.g:19420:1: rule__JvmTypeReference__Group_0_1__0 : rule__JvmTypeReference__Group_0_1__0__Impl ;
+    // InternalPerspectiveDsl.g:19474:1: rule__JvmTypeReference__Group_0_1__0 : rule__JvmTypeReference__Group_0_1__0__Impl ;
     public final void rule__JvmTypeReference__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19424:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
-            // InternalPerspectiveDsl.g:19425:2: rule__JvmTypeReference__Group_0_1__0__Impl
+            // InternalPerspectiveDsl.g:19478:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
+            // InternalPerspectiveDsl.g:19479:2: rule__JvmTypeReference__Group_0_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1__0__Impl();
@@ -63549,23 +63714,23 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:19431:1: rule__JvmTypeReference__Group_0_1__0__Impl : ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:19485:1: rule__JvmTypeReference__Group_0_1__0__Impl : ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) ;
     public final void rule__JvmTypeReference__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19435:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
-            // InternalPerspectiveDsl.g:19436:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalPerspectiveDsl.g:19489:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
+            // InternalPerspectiveDsl.g:19490:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:19436:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
-            // InternalPerspectiveDsl.g:19437:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalPerspectiveDsl.g:19490:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalPerspectiveDsl.g:19491:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:19438:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
-            // InternalPerspectiveDsl.g:19438:3: rule__JvmTypeReference__Group_0_1_0__0
+            // InternalPerspectiveDsl.g:19492:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalPerspectiveDsl.g:19492:3: rule__JvmTypeReference__Group_0_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1_0__0();
@@ -63600,14 +63765,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0"
-    // InternalPerspectiveDsl.g:19447:1: rule__JvmTypeReference__Group_0_1_0__0 : rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 ;
+    // InternalPerspectiveDsl.g:19501:1: rule__JvmTypeReference__Group_0_1_0__0 : rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 ;
     public final void rule__JvmTypeReference__Group_0_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19451:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
-            // InternalPerspectiveDsl.g:19452:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
+            // InternalPerspectiveDsl.g:19505:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
+            // InternalPerspectiveDsl.g:19506:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
             {
             pushFollow(FOLLOW_66);
             rule__JvmTypeReference__Group_0_1_0__0__Impl();
@@ -63638,23 +63803,23 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0__Impl"
-    // InternalPerspectiveDsl.g:19459:1: rule__JvmTypeReference__Group_0_1_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:19513:1: rule__JvmTypeReference__Group_0_1_0__0__Impl : ( () ) ;
     public final void rule__JvmTypeReference__Group_0_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19463:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:19464:1: ( () )
+            // InternalPerspectiveDsl.g:19517:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:19518:1: ( () )
             {
-            // InternalPerspectiveDsl.g:19464:1: ( () )
-            // InternalPerspectiveDsl.g:19465:2: ()
+            // InternalPerspectiveDsl.g:19518:1: ( () )
+            // InternalPerspectiveDsl.g:19519:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:19466:2: ()
-            // InternalPerspectiveDsl.g:19466:3: 
+            // InternalPerspectiveDsl.g:19520:2: ()
+            // InternalPerspectiveDsl.g:19520:3: 
             {
             }
 
@@ -63679,14 +63844,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1"
-    // InternalPerspectiveDsl.g:19474:1: rule__JvmTypeReference__Group_0_1_0__1 : rule__JvmTypeReference__Group_0_1_0__1__Impl ;
+    // InternalPerspectiveDsl.g:19528:1: rule__JvmTypeReference__Group_0_1_0__1 : rule__JvmTypeReference__Group_0_1_0__1__Impl ;
     public final void rule__JvmTypeReference__Group_0_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19478:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
-            // InternalPerspectiveDsl.g:19479:2: rule__JvmTypeReference__Group_0_1_0__1__Impl
+            // InternalPerspectiveDsl.g:19532:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
+            // InternalPerspectiveDsl.g:19533:2: rule__JvmTypeReference__Group_0_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1_0__1__Impl();
@@ -63712,17 +63877,17 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1__Impl"
-    // InternalPerspectiveDsl.g:19485:1: rule__JvmTypeReference__Group_0_1_0__1__Impl : ( ruleArrayBrackets ) ;
+    // InternalPerspectiveDsl.g:19539:1: rule__JvmTypeReference__Group_0_1_0__1__Impl : ( ruleArrayBrackets ) ;
     public final void rule__JvmTypeReference__Group_0_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19489:1: ( ( ruleArrayBrackets ) )
-            // InternalPerspectiveDsl.g:19490:1: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:19543:1: ( ( ruleArrayBrackets ) )
+            // InternalPerspectiveDsl.g:19544:1: ( ruleArrayBrackets )
             {
-            // InternalPerspectiveDsl.g:19490:1: ( ruleArrayBrackets )
-            // InternalPerspectiveDsl.g:19491:2: ruleArrayBrackets
+            // InternalPerspectiveDsl.g:19544:1: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:19545:2: ruleArrayBrackets
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
@@ -63757,14 +63922,14 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__0"
-    // InternalPerspectiveDsl.g:19501:1: rule__ArrayBrackets__Group__0 : rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 ;
+    // InternalPerspectiveDsl.g:19555:1: rule__ArrayBrackets__Group__0 : rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 ;
     public final void rule__ArrayBrackets__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19505:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
-            // InternalPerspectiveDsl.g:19506:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
+            // InternalPerspectiveDsl.g:19559:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
+            // InternalPerspectiveDsl.g:19560:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
             {
             pushFollow(FOLLOW_104);
             rule__ArrayBrackets__Group__0__Impl();
@@ -63795,22 +63960,22 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19513:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
+    // InternalPerspectiveDsl.g:19567:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
     public final void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19517:1: ( ( '[' ) )
-            // InternalPerspectiveDsl.g:19518:1: ( '[' )
+            // InternalPerspectiveDsl.g:19571:1: ( ( '[' ) )
+            // InternalPerspectiveDsl.g:19572:1: ( '[' )
             {
-            // InternalPerspectiveDsl.g:19518:1: ( '[' )
-            // InternalPerspectiveDsl.g:19519:2: '['
+            // InternalPerspectiveDsl.g:19572:1: ( '[' )
+            // InternalPerspectiveDsl.g:19573:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
             }
-            match(input,101,FOLLOW_2); if (state.failed) return ;
+            match(input,103,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
             }
@@ -63836,14 +64001,14 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__1"
-    // InternalPerspectiveDsl.g:19528:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:19582:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
     public final void rule__ArrayBrackets__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19532:1: ( rule__ArrayBrackets__Group__1__Impl )
-            // InternalPerspectiveDsl.g:19533:2: rule__ArrayBrackets__Group__1__Impl
+            // InternalPerspectiveDsl.g:19586:1: ( rule__ArrayBrackets__Group__1__Impl )
+            // InternalPerspectiveDsl.g:19587:2: rule__ArrayBrackets__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ArrayBrackets__Group__1__Impl();
@@ -63869,22 +64034,22 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19539:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
+    // InternalPerspectiveDsl.g:19593:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
     public final void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19543:1: ( ( ']' ) )
-            // InternalPerspectiveDsl.g:19544:1: ( ']' )
+            // InternalPerspectiveDsl.g:19597:1: ( ( ']' ) )
+            // InternalPerspectiveDsl.g:19598:1: ( ']' )
             {
-            // InternalPerspectiveDsl.g:19544:1: ( ']' )
-            // InternalPerspectiveDsl.g:19545:2: ']'
+            // InternalPerspectiveDsl.g:19598:1: ( ']' )
+            // InternalPerspectiveDsl.g:19599:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
             }
-            match(input,99,FOLLOW_2); if (state.failed) return ;
+            match(input,101,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
             }
@@ -63910,14 +64075,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__0"
-    // InternalPerspectiveDsl.g:19555:1: rule__XFunctionTypeRef__Group__0 : rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 ;
+    // InternalPerspectiveDsl.g:19609:1: rule__XFunctionTypeRef__Group__0 : rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 ;
     public final void rule__XFunctionTypeRef__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19559:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
-            // InternalPerspectiveDsl.g:19560:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
+            // InternalPerspectiveDsl.g:19613:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
+            // InternalPerspectiveDsl.g:19614:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
             {
             pushFollow(FOLLOW_79);
             rule__XFunctionTypeRef__Group__0__Impl();
@@ -63948,31 +64113,31 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19567:1: rule__XFunctionTypeRef__Group__0__Impl : ( ( rule__XFunctionTypeRef__Group_0__0 )? ) ;
+    // InternalPerspectiveDsl.g:19621:1: rule__XFunctionTypeRef__Group__0__Impl : ( ( rule__XFunctionTypeRef__Group_0__0 )? ) ;
     public final void rule__XFunctionTypeRef__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19571:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
-            // InternalPerspectiveDsl.g:19572:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalPerspectiveDsl.g:19625:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
+            // InternalPerspectiveDsl.g:19626:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
             {
-            // InternalPerspectiveDsl.g:19572:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
-            // InternalPerspectiveDsl.g:19573:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            // InternalPerspectiveDsl.g:19626:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalPerspectiveDsl.g:19627:2: ( rule__XFunctionTypeRef__Group_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); 
             }
-            // InternalPerspectiveDsl.g:19574:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            // InternalPerspectiveDsl.g:19628:2: ( rule__XFunctionTypeRef__Group_0__0 )?
             int alt135=2;
             int LA135_0 = input.LA(1);
 
-            if ( (LA135_0==96) ) {
+            if ( (LA135_0==98) ) {
                 alt135=1;
             }
             switch (alt135) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:19574:3: rule__XFunctionTypeRef__Group_0__0
+                    // InternalPerspectiveDsl.g:19628:3: rule__XFunctionTypeRef__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFunctionTypeRef__Group_0__0();
@@ -64010,14 +64175,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__1"
-    // InternalPerspectiveDsl.g:19582:1: rule__XFunctionTypeRef__Group__1 : rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 ;
+    // InternalPerspectiveDsl.g:19636:1: rule__XFunctionTypeRef__Group__1 : rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 ;
     public final void rule__XFunctionTypeRef__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19586:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
-            // InternalPerspectiveDsl.g:19587:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
+            // InternalPerspectiveDsl.g:19640:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
+            // InternalPerspectiveDsl.g:19641:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
             {
             pushFollow(FOLLOW_79);
             rule__XFunctionTypeRef__Group__1__Impl();
@@ -64048,17 +64213,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19594:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
+    // InternalPerspectiveDsl.g:19648:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
     public final void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19598:1: ( ( '=>' ) )
-            // InternalPerspectiveDsl.g:19599:1: ( '=>' )
+            // InternalPerspectiveDsl.g:19652:1: ( ( '=>' ) )
+            // InternalPerspectiveDsl.g:19653:1: ( '=>' )
             {
-            // InternalPerspectiveDsl.g:19599:1: ( '=>' )
-            // InternalPerspectiveDsl.g:19600:2: '=>'
+            // InternalPerspectiveDsl.g:19653:1: ( '=>' )
+            // InternalPerspectiveDsl.g:19654:2: '=>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1()); 
@@ -64089,14 +64254,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__2"
-    // InternalPerspectiveDsl.g:19609:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:19663:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
     public final void rule__XFunctionTypeRef__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19613:1: ( rule__XFunctionTypeRef__Group__2__Impl )
-            // InternalPerspectiveDsl.g:19614:2: rule__XFunctionTypeRef__Group__2__Impl
+            // InternalPerspectiveDsl.g:19667:1: ( rule__XFunctionTypeRef__Group__2__Impl )
+            // InternalPerspectiveDsl.g:19668:2: rule__XFunctionTypeRef__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group__2__Impl();
@@ -64122,23 +64287,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__2__Impl"
-    // InternalPerspectiveDsl.g:19620:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
+    // InternalPerspectiveDsl.g:19674:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
     public final void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19624:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
-            // InternalPerspectiveDsl.g:19625:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:19678:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
+            // InternalPerspectiveDsl.g:19679:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
             {
-            // InternalPerspectiveDsl.g:19625:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
-            // InternalPerspectiveDsl.g:19626:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:19679:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalPerspectiveDsl.g:19680:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); 
             }
-            // InternalPerspectiveDsl.g:19627:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
-            // InternalPerspectiveDsl.g:19627:3: rule__XFunctionTypeRef__ReturnTypeAssignment_2
+            // InternalPerspectiveDsl.g:19681:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalPerspectiveDsl.g:19681:3: rule__XFunctionTypeRef__ReturnTypeAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ReturnTypeAssignment_2();
@@ -64173,14 +64338,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__0"
-    // InternalPerspectiveDsl.g:19636:1: rule__XFunctionTypeRef__Group_0__0 : rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 ;
+    // InternalPerspectiveDsl.g:19690:1: rule__XFunctionTypeRef__Group_0__0 : rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 ;
     public final void rule__XFunctionTypeRef__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19640:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
-            // InternalPerspectiveDsl.g:19641:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
+            // InternalPerspectiveDsl.g:19694:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
+            // InternalPerspectiveDsl.g:19695:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
             {
             pushFollow(FOLLOW_142);
             rule__XFunctionTypeRef__Group_0__0__Impl();
@@ -64211,22 +64376,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__0__Impl"
-    // InternalPerspectiveDsl.g:19648:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
+    // InternalPerspectiveDsl.g:19702:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
     public final void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19652:1: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:19653:1: ( '(' )
+            // InternalPerspectiveDsl.g:19706:1: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:19707:1: ( '(' )
             {
-            // InternalPerspectiveDsl.g:19653:1: ( '(' )
-            // InternalPerspectiveDsl.g:19654:2: '('
+            // InternalPerspectiveDsl.g:19707:1: ( '(' )
+            // InternalPerspectiveDsl.g:19708:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
             }
@@ -64252,14 +64417,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__1"
-    // InternalPerspectiveDsl.g:19663:1: rule__XFunctionTypeRef__Group_0__1 : rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 ;
+    // InternalPerspectiveDsl.g:19717:1: rule__XFunctionTypeRef__Group_0__1 : rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 ;
     public final void rule__XFunctionTypeRef__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19667:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
-            // InternalPerspectiveDsl.g:19668:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
+            // InternalPerspectiveDsl.g:19721:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
+            // InternalPerspectiveDsl.g:19722:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
             {
             pushFollow(FOLLOW_142);
             rule__XFunctionTypeRef__Group_0__1__Impl();
@@ -64290,31 +64455,31 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__1__Impl"
-    // InternalPerspectiveDsl.g:19675:1: rule__XFunctionTypeRef__Group_0__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:19729:1: rule__XFunctionTypeRef__Group_0__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) ;
     public final void rule__XFunctionTypeRef__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19679:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
-            // InternalPerspectiveDsl.g:19680:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:19733:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
+            // InternalPerspectiveDsl.g:19734:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:19680:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
-            // InternalPerspectiveDsl.g:19681:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:19734:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalPerspectiveDsl.g:19735:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); 
             }
-            // InternalPerspectiveDsl.g:19682:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            // InternalPerspectiveDsl.g:19736:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
             int alt136=2;
             int LA136_0 = input.LA(1);
 
-            if ( (LA136_0==RULE_ID||LA136_0==31||LA136_0==96) ) {
+            if ( (LA136_0==RULE_ID||LA136_0==31||LA136_0==98) ) {
                 alt136=1;
             }
             switch (alt136) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:19682:3: rule__XFunctionTypeRef__Group_0_1__0
+                    // InternalPerspectiveDsl.g:19736:3: rule__XFunctionTypeRef__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFunctionTypeRef__Group_0_1__0();
@@ -64352,14 +64517,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__2"
-    // InternalPerspectiveDsl.g:19690:1: rule__XFunctionTypeRef__Group_0__2 : rule__XFunctionTypeRef__Group_0__2__Impl ;
+    // InternalPerspectiveDsl.g:19744:1: rule__XFunctionTypeRef__Group_0__2 : rule__XFunctionTypeRef__Group_0__2__Impl ;
     public final void rule__XFunctionTypeRef__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19694:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
-            // InternalPerspectiveDsl.g:19695:2: rule__XFunctionTypeRef__Group_0__2__Impl
+            // InternalPerspectiveDsl.g:19748:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
+            // InternalPerspectiveDsl.g:19749:2: rule__XFunctionTypeRef__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0__2__Impl();
@@ -64385,22 +64550,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__2__Impl"
-    // InternalPerspectiveDsl.g:19701:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
+    // InternalPerspectiveDsl.g:19755:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
     public final void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19705:1: ( ( ')' ) )
-            // InternalPerspectiveDsl.g:19706:1: ( ')' )
+            // InternalPerspectiveDsl.g:19759:1: ( ( ')' ) )
+            // InternalPerspectiveDsl.g:19760:1: ( ')' )
             {
-            // InternalPerspectiveDsl.g:19706:1: ( ')' )
-            // InternalPerspectiveDsl.g:19707:2: ')'
+            // InternalPerspectiveDsl.g:19760:1: ( ')' )
+            // InternalPerspectiveDsl.g:19761:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
             }
@@ -64426,14 +64591,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0"
-    // InternalPerspectiveDsl.g:19717:1: rule__XFunctionTypeRef__Group_0_1__0 : rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 ;
+    // InternalPerspectiveDsl.g:19771:1: rule__XFunctionTypeRef__Group_0_1__0 : rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 ;
     public final void rule__XFunctionTypeRef__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19721:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
-            // InternalPerspectiveDsl.g:19722:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
+            // InternalPerspectiveDsl.g:19775:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
+            // InternalPerspectiveDsl.g:19776:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
             {
             pushFollow(FOLLOW_60);
             rule__XFunctionTypeRef__Group_0_1__0__Impl();
@@ -64464,23 +64629,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0__Impl"
-    // InternalPerspectiveDsl.g:19729:1: rule__XFunctionTypeRef__Group_0_1__0__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:19783:1: rule__XFunctionTypeRef__Group_0_1__0__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) ;
     public final void rule__XFunctionTypeRef__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19733:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
-            // InternalPerspectiveDsl.g:19734:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:19787:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
+            // InternalPerspectiveDsl.g:19788:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:19734:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
-            // InternalPerspectiveDsl.g:19735:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:19788:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalPerspectiveDsl.g:19789:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:19736:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
-            // InternalPerspectiveDsl.g:19736:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
+            // InternalPerspectiveDsl.g:19790:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalPerspectiveDsl.g:19790:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0();
@@ -64515,14 +64680,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1"
-    // InternalPerspectiveDsl.g:19744:1: rule__XFunctionTypeRef__Group_0_1__1 : rule__XFunctionTypeRef__Group_0_1__1__Impl ;
+    // InternalPerspectiveDsl.g:19798:1: rule__XFunctionTypeRef__Group_0_1__1 : rule__XFunctionTypeRef__Group_0_1__1__Impl ;
     public final void rule__XFunctionTypeRef__Group_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19748:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
-            // InternalPerspectiveDsl.g:19749:2: rule__XFunctionTypeRef__Group_0_1__1__Impl
+            // InternalPerspectiveDsl.g:19802:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
+            // InternalPerspectiveDsl.g:19803:2: rule__XFunctionTypeRef__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0_1__1__Impl();
@@ -64548,35 +64713,35 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1__Impl"
-    // InternalPerspectiveDsl.g:19755:1: rule__XFunctionTypeRef__Group_0_1__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) ;
+    // InternalPerspectiveDsl.g:19809:1: rule__XFunctionTypeRef__Group_0_1__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) ;
     public final void rule__XFunctionTypeRef__Group_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19759:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
-            // InternalPerspectiveDsl.g:19760:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:19813:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
+            // InternalPerspectiveDsl.g:19814:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
             {
-            // InternalPerspectiveDsl.g:19760:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
-            // InternalPerspectiveDsl.g:19761:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:19814:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalPerspectiveDsl.g:19815:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); 
             }
-            // InternalPerspectiveDsl.g:19762:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            // InternalPerspectiveDsl.g:19816:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
             loop137:
             do {
                 int alt137=2;
                 int LA137_0 = input.LA(1);
 
-                if ( (LA137_0==98) ) {
+                if ( (LA137_0==100) ) {
                     alt137=1;
                 }
 
 
                 switch (alt137) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:19762:3: rule__XFunctionTypeRef__Group_0_1_1__0
+            	    // InternalPerspectiveDsl.g:19816:3: rule__XFunctionTypeRef__Group_0_1_1__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__XFunctionTypeRef__Group_0_1_1__0();
@@ -64617,14 +64782,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0"
-    // InternalPerspectiveDsl.g:19771:1: rule__XFunctionTypeRef__Group_0_1_1__0 : rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 ;
+    // InternalPerspectiveDsl.g:19825:1: rule__XFunctionTypeRef__Group_0_1_1__0 : rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19775:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
-            // InternalPerspectiveDsl.g:19776:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
+            // InternalPerspectiveDsl.g:19829:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
+            // InternalPerspectiveDsl.g:19830:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
             {
             pushFollow(FOLLOW_79);
             rule__XFunctionTypeRef__Group_0_1_1__0__Impl();
@@ -64655,22 +64820,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0__Impl"
-    // InternalPerspectiveDsl.g:19783:1: rule__XFunctionTypeRef__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:19837:1: rule__XFunctionTypeRef__Group_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19787:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:19788:1: ( ',' )
+            // InternalPerspectiveDsl.g:19841:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:19842:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:19788:1: ( ',' )
-            // InternalPerspectiveDsl.g:19789:2: ','
+            // InternalPerspectiveDsl.g:19842:1: ( ',' )
+            // InternalPerspectiveDsl.g:19843:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -64696,14 +64861,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1"
-    // InternalPerspectiveDsl.g:19798:1: rule__XFunctionTypeRef__Group_0_1_1__1 : rule__XFunctionTypeRef__Group_0_1_1__1__Impl ;
+    // InternalPerspectiveDsl.g:19852:1: rule__XFunctionTypeRef__Group_0_1_1__1 : rule__XFunctionTypeRef__Group_0_1_1__1__Impl ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19802:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
-            // InternalPerspectiveDsl.g:19803:2: rule__XFunctionTypeRef__Group_0_1_1__1__Impl
+            // InternalPerspectiveDsl.g:19856:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
+            // InternalPerspectiveDsl.g:19857:2: rule__XFunctionTypeRef__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0_1_1__1__Impl();
@@ -64729,23 +64894,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1__Impl"
-    // InternalPerspectiveDsl.g:19809:1: rule__XFunctionTypeRef__Group_0_1_1__1__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:19863:1: rule__XFunctionTypeRef__Group_0_1_1__1__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19813:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
-            // InternalPerspectiveDsl.g:19814:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:19867:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
+            // InternalPerspectiveDsl.g:19868:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:19814:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
-            // InternalPerspectiveDsl.g:19815:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:19868:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalPerspectiveDsl.g:19869:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); 
             }
-            // InternalPerspectiveDsl.g:19816:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
-            // InternalPerspectiveDsl.g:19816:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
+            // InternalPerspectiveDsl.g:19870:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalPerspectiveDsl.g:19870:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1();
@@ -64780,14 +64945,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0"
-    // InternalPerspectiveDsl.g:19825:1: rule__JvmParameterizedTypeReference__Group__0 : rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 ;
+    // InternalPerspectiveDsl.g:19879:1: rule__JvmParameterizedTypeReference__Group__0 : rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 ;
     public final void rule__JvmParameterizedTypeReference__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19829:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
-            // InternalPerspectiveDsl.g:19830:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
+            // InternalPerspectiveDsl.g:19883:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
+            // InternalPerspectiveDsl.g:19884:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
             {
             pushFollow(FOLLOW_69);
             rule__JvmParameterizedTypeReference__Group__0__Impl();
@@ -64818,23 +64983,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0__Impl"
-    // InternalPerspectiveDsl.g:19837:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
+    // InternalPerspectiveDsl.g:19891:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19841:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
-            // InternalPerspectiveDsl.g:19842:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:19895:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
+            // InternalPerspectiveDsl.g:19896:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
             {
-            // InternalPerspectiveDsl.g:19842:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
-            // InternalPerspectiveDsl.g:19843:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalPerspectiveDsl.g:19896:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalPerspectiveDsl.g:19897:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); 
             }
-            // InternalPerspectiveDsl.g:19844:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
-            // InternalPerspectiveDsl.g:19844:3: rule__JvmParameterizedTypeReference__TypeAssignment_0
+            // InternalPerspectiveDsl.g:19898:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalPerspectiveDsl.g:19898:3: rule__JvmParameterizedTypeReference__TypeAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__TypeAssignment_0();
@@ -64869,14 +65034,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1"
-    // InternalPerspectiveDsl.g:19852:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:19906:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19856:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
-            // InternalPerspectiveDsl.g:19857:2: rule__JvmParameterizedTypeReference__Group__1__Impl
+            // InternalPerspectiveDsl.g:19910:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
+            // InternalPerspectiveDsl.g:19911:2: rule__JvmParameterizedTypeReference__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group__1__Impl();
@@ -64902,27 +65067,27 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1__Impl"
-    // InternalPerspectiveDsl.g:19863:1: rule__JvmParameterizedTypeReference__Group__1__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) ;
+    // InternalPerspectiveDsl.g:19917:1: rule__JvmParameterizedTypeReference__Group__1__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) ;
     public final void rule__JvmParameterizedTypeReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19867:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
-            // InternalPerspectiveDsl.g:19868:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:19921:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
+            // InternalPerspectiveDsl.g:19922:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
             {
-            // InternalPerspectiveDsl.g:19868:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
-            // InternalPerspectiveDsl.g:19869:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            // InternalPerspectiveDsl.g:19922:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalPerspectiveDsl.g:19923:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); 
             }
-            // InternalPerspectiveDsl.g:19870:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            // InternalPerspectiveDsl.g:19924:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
             int alt138=2;
             alt138 = dfa138.predict(input);
             switch (alt138) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:19870:3: rule__JvmParameterizedTypeReference__Group_1__0
+                    // InternalPerspectiveDsl.g:19924:3: rule__JvmParameterizedTypeReference__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmParameterizedTypeReference__Group_1__0();
@@ -64960,14 +65125,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0"
-    // InternalPerspectiveDsl.g:19879:1: rule__JvmParameterizedTypeReference__Group_1__0 : rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 ;
+    // InternalPerspectiveDsl.g:19933:1: rule__JvmParameterizedTypeReference__Group_1__0 : rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19883:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
-            // InternalPerspectiveDsl.g:19884:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
+            // InternalPerspectiveDsl.g:19937:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
+            // InternalPerspectiveDsl.g:19938:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
             {
             pushFollow(FOLLOW_99);
             rule__JvmParameterizedTypeReference__Group_1__0__Impl();
@@ -64998,23 +65163,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0__Impl"
-    // InternalPerspectiveDsl.g:19891:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
+    // InternalPerspectiveDsl.g:19945:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19895:1: ( ( ( '<' ) ) )
-            // InternalPerspectiveDsl.g:19896:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:19949:1: ( ( ( '<' ) ) )
+            // InternalPerspectiveDsl.g:19950:1: ( ( '<' ) )
             {
-            // InternalPerspectiveDsl.g:19896:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:19897:2: ( '<' )
+            // InternalPerspectiveDsl.g:19950:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:19951:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); 
             }
-            // InternalPerspectiveDsl.g:19898:2: ( '<' )
-            // InternalPerspectiveDsl.g:19898:3: '<'
+            // InternalPerspectiveDsl.g:19952:2: ( '<' )
+            // InternalPerspectiveDsl.g:19952:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -65045,14 +65210,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1"
-    // InternalPerspectiveDsl.g:19906:1: rule__JvmParameterizedTypeReference__Group_1__1 : rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 ;
+    // InternalPerspectiveDsl.g:19960:1: rule__JvmParameterizedTypeReference__Group_1__1 : rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19910:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
-            // InternalPerspectiveDsl.g:19911:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
+            // InternalPerspectiveDsl.g:19964:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
+            // InternalPerspectiveDsl.g:19965:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
             {
             pushFollow(FOLLOW_100);
             rule__JvmParameterizedTypeReference__Group_1__1__Impl();
@@ -65083,23 +65248,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1__Impl"
-    // InternalPerspectiveDsl.g:19918:1: rule__JvmParameterizedTypeReference__Group_1__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) ;
+    // InternalPerspectiveDsl.g:19972:1: rule__JvmParameterizedTypeReference__Group_1__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19922:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
-            // InternalPerspectiveDsl.g:19923:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:19976:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
+            // InternalPerspectiveDsl.g:19977:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
             {
-            // InternalPerspectiveDsl.g:19923:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
-            // InternalPerspectiveDsl.g:19924:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:19977:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalPerspectiveDsl.g:19978:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); 
             }
-            // InternalPerspectiveDsl.g:19925:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
-            // InternalPerspectiveDsl.g:19925:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
+            // InternalPerspectiveDsl.g:19979:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalPerspectiveDsl.g:19979:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1();
@@ -65134,14 +65299,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2"
-    // InternalPerspectiveDsl.g:19933:1: rule__JvmParameterizedTypeReference__Group_1__2 : rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 ;
+    // InternalPerspectiveDsl.g:19987:1: rule__JvmParameterizedTypeReference__Group_1__2 : rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19937:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
-            // InternalPerspectiveDsl.g:19938:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
+            // InternalPerspectiveDsl.g:19991:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
+            // InternalPerspectiveDsl.g:19992:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
             {
             pushFollow(FOLLOW_100);
             rule__JvmParameterizedTypeReference__Group_1__2__Impl();
@@ -65172,35 +65337,35 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2__Impl"
-    // InternalPerspectiveDsl.g:19945:1: rule__JvmParameterizedTypeReference__Group_1__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:19999:1: rule__JvmParameterizedTypeReference__Group_1__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19949:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
-            // InternalPerspectiveDsl.g:19950:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:20003:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
+            // InternalPerspectiveDsl.g:20004:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:19950:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
-            // InternalPerspectiveDsl.g:19951:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            // InternalPerspectiveDsl.g:20004:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalPerspectiveDsl.g:20005:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); 
             }
-            // InternalPerspectiveDsl.g:19952:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            // InternalPerspectiveDsl.g:20006:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
             loop139:
             do {
                 int alt139=2;
                 int LA139_0 = input.LA(1);
 
-                if ( (LA139_0==98) ) {
+                if ( (LA139_0==100) ) {
                     alt139=1;
                 }
 
 
                 switch (alt139) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:19952:3: rule__JvmParameterizedTypeReference__Group_1_2__0
+            	    // InternalPerspectiveDsl.g:20006:3: rule__JvmParameterizedTypeReference__Group_1_2__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__JvmParameterizedTypeReference__Group_1_2__0();
@@ -65241,14 +65406,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3"
-    // InternalPerspectiveDsl.g:19960:1: rule__JvmParameterizedTypeReference__Group_1__3 : rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 ;
+    // InternalPerspectiveDsl.g:20014:1: rule__JvmParameterizedTypeReference__Group_1__3 : rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19964:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
-            // InternalPerspectiveDsl.g:19965:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
+            // InternalPerspectiveDsl.g:20018:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
+            // InternalPerspectiveDsl.g:20019:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
             {
             pushFollow(FOLLOW_139);
             rule__JvmParameterizedTypeReference__Group_1__3__Impl();
@@ -65279,17 +65444,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3__Impl"
-    // InternalPerspectiveDsl.g:19972:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:20026:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19976:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:19977:1: ( '>' )
+            // InternalPerspectiveDsl.g:20030:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:20031:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:19977:1: ( '>' )
-            // InternalPerspectiveDsl.g:19978:2: '>'
+            // InternalPerspectiveDsl.g:20031:1: ( '>' )
+            // InternalPerspectiveDsl.g:20032:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3()); 
@@ -65320,14 +65485,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4"
-    // InternalPerspectiveDsl.g:19987:1: rule__JvmParameterizedTypeReference__Group_1__4 : rule__JvmParameterizedTypeReference__Group_1__4__Impl ;
+    // InternalPerspectiveDsl.g:20041:1: rule__JvmParameterizedTypeReference__Group_1__4 : rule__JvmParameterizedTypeReference__Group_1__4__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:19991:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
-            // InternalPerspectiveDsl.g:19992:2: rule__JvmParameterizedTypeReference__Group_1__4__Impl
+            // InternalPerspectiveDsl.g:20045:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
+            // InternalPerspectiveDsl.g:20046:2: rule__JvmParameterizedTypeReference__Group_1__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1__4__Impl();
@@ -65353,22 +65518,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4__Impl"
-    // InternalPerspectiveDsl.g:19998:1: rule__JvmParameterizedTypeReference__Group_1__4__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) ;
+    // InternalPerspectiveDsl.g:20052:1: rule__JvmParameterizedTypeReference__Group_1__4__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20002:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
-            // InternalPerspectiveDsl.g:20003:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalPerspectiveDsl.g:20056:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
+            // InternalPerspectiveDsl.g:20057:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
             {
-            // InternalPerspectiveDsl.g:20003:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
-            // InternalPerspectiveDsl.g:20004:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            // InternalPerspectiveDsl.g:20057:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalPerspectiveDsl.g:20058:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); 
             }
-            // InternalPerspectiveDsl.g:20005:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            // InternalPerspectiveDsl.g:20059:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
             loop140:
             do {
                 int alt140=2;
@@ -65393,7 +65558,7 @@
 
                 switch (alt140) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:20005:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+            	    // InternalPerspectiveDsl.g:20059:3: rule__JvmParameterizedTypeReference__Group_1_4__0
             	    {
             	    pushFollow(FOLLOW_140);
             	    rule__JvmParameterizedTypeReference__Group_1_4__0();
@@ -65434,14 +65599,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0"
-    // InternalPerspectiveDsl.g:20014:1: rule__JvmParameterizedTypeReference__Group_1_2__0 : rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 ;
+    // InternalPerspectiveDsl.g:20068:1: rule__JvmParameterizedTypeReference__Group_1_2__0 : rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20018:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
-            // InternalPerspectiveDsl.g:20019:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
+            // InternalPerspectiveDsl.g:20072:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
+            // InternalPerspectiveDsl.g:20073:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
             {
             pushFollow(FOLLOW_99);
             rule__JvmParameterizedTypeReference__Group_1_2__0__Impl();
@@ -65472,22 +65637,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0__Impl"
-    // InternalPerspectiveDsl.g:20026:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:20080:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20030:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:20031:1: ( ',' )
+            // InternalPerspectiveDsl.g:20084:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:20085:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:20031:1: ( ',' )
-            // InternalPerspectiveDsl.g:20032:2: ','
+            // InternalPerspectiveDsl.g:20085:1: ( ',' )
+            // InternalPerspectiveDsl.g:20086:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
             }
@@ -65513,14 +65678,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1"
-    // InternalPerspectiveDsl.g:20041:1: rule__JvmParameterizedTypeReference__Group_1_2__1 : rule__JvmParameterizedTypeReference__Group_1_2__1__Impl ;
+    // InternalPerspectiveDsl.g:20095:1: rule__JvmParameterizedTypeReference__Group_1_2__1 : rule__JvmParameterizedTypeReference__Group_1_2__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20045:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
-            // InternalPerspectiveDsl.g:20046:2: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
+            // InternalPerspectiveDsl.g:20099:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
+            // InternalPerspectiveDsl.g:20100:2: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_2__1__Impl();
@@ -65546,23 +65711,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1__Impl"
-    // InternalPerspectiveDsl.g:20052:1: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:20106:1: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20056:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
-            // InternalPerspectiveDsl.g:20057:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:20110:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
+            // InternalPerspectiveDsl.g:20111:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:20057:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
-            // InternalPerspectiveDsl.g:20058:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:20111:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalPerspectiveDsl.g:20112:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); 
             }
-            // InternalPerspectiveDsl.g:20059:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
-            // InternalPerspectiveDsl.g:20059:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
+            // InternalPerspectiveDsl.g:20113:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalPerspectiveDsl.g:20113:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1();
@@ -65597,14 +65762,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0"
-    // InternalPerspectiveDsl.g:20068:1: rule__JvmParameterizedTypeReference__Group_1_4__0 : rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 ;
+    // InternalPerspectiveDsl.g:20122:1: rule__JvmParameterizedTypeReference__Group_1_4__0 : rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20072:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
-            // InternalPerspectiveDsl.g:20073:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
+            // InternalPerspectiveDsl.g:20126:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
+            // InternalPerspectiveDsl.g:20127:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
             {
             pushFollow(FOLLOW_7);
             rule__JvmParameterizedTypeReference__Group_1_4__0__Impl();
@@ -65635,23 +65800,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0__Impl"
-    // InternalPerspectiveDsl.g:20080:1: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:20134:1: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20084:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
-            // InternalPerspectiveDsl.g:20085:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalPerspectiveDsl.g:20138:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
+            // InternalPerspectiveDsl.g:20139:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:20085:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
-            // InternalPerspectiveDsl.g:20086:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalPerspectiveDsl.g:20139:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalPerspectiveDsl.g:20140:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); 
             }
-            // InternalPerspectiveDsl.g:20087:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
-            // InternalPerspectiveDsl.g:20087:3: rule__JvmParameterizedTypeReference__Group_1_4_0__0
+            // InternalPerspectiveDsl.g:20141:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalPerspectiveDsl.g:20141:3: rule__JvmParameterizedTypeReference__Group_1_4_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0__0();
@@ -65686,14 +65851,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1"
-    // InternalPerspectiveDsl.g:20095:1: rule__JvmParameterizedTypeReference__Group_1_4__1 : rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 ;
+    // InternalPerspectiveDsl.g:20149:1: rule__JvmParameterizedTypeReference__Group_1_4__1 : rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20099:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
-            // InternalPerspectiveDsl.g:20100:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
+            // InternalPerspectiveDsl.g:20153:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
+            // InternalPerspectiveDsl.g:20154:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
             {
             pushFollow(FOLLOW_69);
             rule__JvmParameterizedTypeReference__Group_1_4__1__Impl();
@@ -65724,23 +65889,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1__Impl"
-    // InternalPerspectiveDsl.g:20107:1: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) ;
+    // InternalPerspectiveDsl.g:20161:1: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20111:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
-            // InternalPerspectiveDsl.g:20112:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalPerspectiveDsl.g:20165:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
+            // InternalPerspectiveDsl.g:20166:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
             {
-            // InternalPerspectiveDsl.g:20112:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
-            // InternalPerspectiveDsl.g:20113:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalPerspectiveDsl.g:20166:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalPerspectiveDsl.g:20167:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); 
             }
-            // InternalPerspectiveDsl.g:20114:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
-            // InternalPerspectiveDsl.g:20114:3: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
+            // InternalPerspectiveDsl.g:20168:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalPerspectiveDsl.g:20168:3: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1();
@@ -65775,14 +65940,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2"
-    // InternalPerspectiveDsl.g:20122:1: rule__JvmParameterizedTypeReference__Group_1_4__2 : rule__JvmParameterizedTypeReference__Group_1_4__2__Impl ;
+    // InternalPerspectiveDsl.g:20176:1: rule__JvmParameterizedTypeReference__Group_1_4__2 : rule__JvmParameterizedTypeReference__Group_1_4__2__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20126:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
-            // InternalPerspectiveDsl.g:20127:2: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
+            // InternalPerspectiveDsl.g:20180:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
+            // InternalPerspectiveDsl.g:20181:2: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4__2__Impl();
@@ -65808,27 +65973,27 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2__Impl"
-    // InternalPerspectiveDsl.g:20133:1: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) ;
+    // InternalPerspectiveDsl.g:20187:1: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20137:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
-            // InternalPerspectiveDsl.g:20138:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalPerspectiveDsl.g:20191:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
+            // InternalPerspectiveDsl.g:20192:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
             {
-            // InternalPerspectiveDsl.g:20138:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
-            // InternalPerspectiveDsl.g:20139:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            // InternalPerspectiveDsl.g:20192:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalPerspectiveDsl.g:20193:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); 
             }
-            // InternalPerspectiveDsl.g:20140:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            // InternalPerspectiveDsl.g:20194:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
             int alt141=2;
             alt141 = dfa141.predict(input);
             switch (alt141) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:20140:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+                    // InternalPerspectiveDsl.g:20194:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmParameterizedTypeReference__Group_1_4_2__0();
@@ -65866,14 +66031,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0"
-    // InternalPerspectiveDsl.g:20149:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl ;
+    // InternalPerspectiveDsl.g:20203:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20153:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
-            // InternalPerspectiveDsl.g:20154:2: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
+            // InternalPerspectiveDsl.g:20207:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
+            // InternalPerspectiveDsl.g:20208:2: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl();
@@ -65899,23 +66064,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl"
-    // InternalPerspectiveDsl.g:20160:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) ;
+    // InternalPerspectiveDsl.g:20214:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20164:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
-            // InternalPerspectiveDsl.g:20165:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalPerspectiveDsl.g:20218:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
+            // InternalPerspectiveDsl.g:20219:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
             {
-            // InternalPerspectiveDsl.g:20165:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
-            // InternalPerspectiveDsl.g:20166:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalPerspectiveDsl.g:20219:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalPerspectiveDsl.g:20220:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); 
             }
-            // InternalPerspectiveDsl.g:20167:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
-            // InternalPerspectiveDsl.g:20167:3: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
+            // InternalPerspectiveDsl.g:20221:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalPerspectiveDsl.g:20221:3: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__0();
@@ -65950,14 +66115,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0"
-    // InternalPerspectiveDsl.g:20176:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 ;
+    // InternalPerspectiveDsl.g:20230:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20180:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
-            // InternalPerspectiveDsl.g:20181:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+            // InternalPerspectiveDsl.g:20234:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
+            // InternalPerspectiveDsl.g:20235:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
             {
             pushFollow(FOLLOW_139);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl();
@@ -65988,23 +66153,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl"
-    // InternalPerspectiveDsl.g:20188:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:20242:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl : ( () ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20192:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:20193:1: ( () )
+            // InternalPerspectiveDsl.g:20246:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:20247:1: ( () )
             {
-            // InternalPerspectiveDsl.g:20193:1: ( () )
-            // InternalPerspectiveDsl.g:20194:2: ()
+            // InternalPerspectiveDsl.g:20247:1: ( () )
+            // InternalPerspectiveDsl.g:20248:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:20195:2: ()
-            // InternalPerspectiveDsl.g:20195:3: 
+            // InternalPerspectiveDsl.g:20249:2: ()
+            // InternalPerspectiveDsl.g:20249:3: 
             {
             }
 
@@ -66029,14 +66194,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1"
-    // InternalPerspectiveDsl.g:20203:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl ;
+    // InternalPerspectiveDsl.g:20257:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20207:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
-            // InternalPerspectiveDsl.g:20208:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
+            // InternalPerspectiveDsl.g:20261:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
+            // InternalPerspectiveDsl.g:20262:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl();
@@ -66062,17 +66227,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl"
-    // InternalPerspectiveDsl.g:20214:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl : ( '.' ) ;
+    // InternalPerspectiveDsl.g:20268:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl : ( '.' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20218:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:20219:1: ( '.' )
+            // InternalPerspectiveDsl.g:20272:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:20273:1: ( '.' )
             {
-            // InternalPerspectiveDsl.g:20219:1: ( '.' )
-            // InternalPerspectiveDsl.g:20220:2: '.'
+            // InternalPerspectiveDsl.g:20273:1: ( '.' )
+            // InternalPerspectiveDsl.g:20274:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1()); 
@@ -66103,14 +66268,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0"
-    // InternalPerspectiveDsl.g:20230:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 ;
+    // InternalPerspectiveDsl.g:20284:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20234:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
-            // InternalPerspectiveDsl.g:20235:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
+            // InternalPerspectiveDsl.g:20288:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
+            // InternalPerspectiveDsl.g:20289:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
             {
             pushFollow(FOLLOW_99);
             rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl();
@@ -66141,23 +66306,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl"
-    // InternalPerspectiveDsl.g:20242:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl : ( ( '<' ) ) ;
+    // InternalPerspectiveDsl.g:20296:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl : ( ( '<' ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20246:1: ( ( ( '<' ) ) )
-            // InternalPerspectiveDsl.g:20247:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:20300:1: ( ( ( '<' ) ) )
+            // InternalPerspectiveDsl.g:20301:1: ( ( '<' ) )
             {
-            // InternalPerspectiveDsl.g:20247:1: ( ( '<' ) )
-            // InternalPerspectiveDsl.g:20248:2: ( '<' )
+            // InternalPerspectiveDsl.g:20301:1: ( ( '<' ) )
+            // InternalPerspectiveDsl.g:20302:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); 
             }
-            // InternalPerspectiveDsl.g:20249:2: ( '<' )
-            // InternalPerspectiveDsl.g:20249:3: '<'
+            // InternalPerspectiveDsl.g:20303:2: ( '<' )
+            // InternalPerspectiveDsl.g:20303:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -66188,14 +66353,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1"
-    // InternalPerspectiveDsl.g:20257:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 ;
+    // InternalPerspectiveDsl.g:20311:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20261:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
-            // InternalPerspectiveDsl.g:20262:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
+            // InternalPerspectiveDsl.g:20315:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
+            // InternalPerspectiveDsl.g:20316:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
             {
             pushFollow(FOLLOW_100);
             rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl();
@@ -66226,23 +66391,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl"
-    // InternalPerspectiveDsl.g:20269:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:20323:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20273:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
-            // InternalPerspectiveDsl.g:20274:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalPerspectiveDsl.g:20327:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
+            // InternalPerspectiveDsl.g:20328:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:20274:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
-            // InternalPerspectiveDsl.g:20275:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalPerspectiveDsl.g:20328:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalPerspectiveDsl.g:20329:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); 
             }
-            // InternalPerspectiveDsl.g:20276:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
-            // InternalPerspectiveDsl.g:20276:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
+            // InternalPerspectiveDsl.g:20330:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalPerspectiveDsl.g:20330:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1();
@@ -66277,14 +66442,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2"
-    // InternalPerspectiveDsl.g:20284:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2 : rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 ;
+    // InternalPerspectiveDsl.g:20338:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2 : rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20288:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
-            // InternalPerspectiveDsl.g:20289:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
+            // InternalPerspectiveDsl.g:20342:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
+            // InternalPerspectiveDsl.g:20343:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
             {
             pushFollow(FOLLOW_100);
             rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl();
@@ -66315,35 +66480,35 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl"
-    // InternalPerspectiveDsl.g:20296:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) ;
+    // InternalPerspectiveDsl.g:20350:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20300:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
-            // InternalPerspectiveDsl.g:20301:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalPerspectiveDsl.g:20354:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
+            // InternalPerspectiveDsl.g:20355:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
             {
-            // InternalPerspectiveDsl.g:20301:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
-            // InternalPerspectiveDsl.g:20302:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            // InternalPerspectiveDsl.g:20355:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalPerspectiveDsl.g:20356:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); 
             }
-            // InternalPerspectiveDsl.g:20303:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            // InternalPerspectiveDsl.g:20357:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
             loop142:
             do {
                 int alt142=2;
                 int LA142_0 = input.LA(1);
 
-                if ( (LA142_0==98) ) {
+                if ( (LA142_0==100) ) {
                     alt142=1;
                 }
 
 
                 switch (alt142) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:20303:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
+            	    // InternalPerspectiveDsl.g:20357:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
             	    {
             	    pushFollow(FOLLOW_61);
             	    rule__JvmParameterizedTypeReference__Group_1_4_2_2__0();
@@ -66384,14 +66549,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3"
-    // InternalPerspectiveDsl.g:20311:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3 : rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl ;
+    // InternalPerspectiveDsl.g:20365:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3 : rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20315:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
-            // InternalPerspectiveDsl.g:20316:2: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
+            // InternalPerspectiveDsl.g:20369:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
+            // InternalPerspectiveDsl.g:20370:2: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl();
@@ -66417,17 +66582,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl"
-    // InternalPerspectiveDsl.g:20322:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl : ( '>' ) ;
+    // InternalPerspectiveDsl.g:20376:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl : ( '>' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20326:1: ( ( '>' ) )
-            // InternalPerspectiveDsl.g:20327:1: ( '>' )
+            // InternalPerspectiveDsl.g:20380:1: ( ( '>' ) )
+            // InternalPerspectiveDsl.g:20381:1: ( '>' )
             {
-            // InternalPerspectiveDsl.g:20327:1: ( '>' )
-            // InternalPerspectiveDsl.g:20328:2: '>'
+            // InternalPerspectiveDsl.g:20381:1: ( '>' )
+            // InternalPerspectiveDsl.g:20382:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3()); 
@@ -66458,14 +66623,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0"
-    // InternalPerspectiveDsl.g:20338:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 ;
+    // InternalPerspectiveDsl.g:20392:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20342:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
-            // InternalPerspectiveDsl.g:20343:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+            // InternalPerspectiveDsl.g:20396:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
+            // InternalPerspectiveDsl.g:20397:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
             {
             pushFollow(FOLLOW_99);
             rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl();
@@ -66496,22 +66661,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl"
-    // InternalPerspectiveDsl.g:20350:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl : ( ',' ) ;
+    // InternalPerspectiveDsl.g:20404:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl : ( ',' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20354:1: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:20355:1: ( ',' )
+            // InternalPerspectiveDsl.g:20408:1: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:20409:1: ( ',' )
             {
-            // InternalPerspectiveDsl.g:20355:1: ( ',' )
-            // InternalPerspectiveDsl.g:20356:2: ','
+            // InternalPerspectiveDsl.g:20409:1: ( ',' )
+            // InternalPerspectiveDsl.g:20410:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
             }
@@ -66537,14 +66702,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1"
-    // InternalPerspectiveDsl.g:20365:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl ;
+    // InternalPerspectiveDsl.g:20419:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20369:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
-            // InternalPerspectiveDsl.g:20370:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
+            // InternalPerspectiveDsl.g:20423:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
+            // InternalPerspectiveDsl.g:20424:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl();
@@ -66570,23 +66735,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl"
-    // InternalPerspectiveDsl.g:20376:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) ;
+    // InternalPerspectiveDsl.g:20430:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20380:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
-            // InternalPerspectiveDsl.g:20381:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalPerspectiveDsl.g:20434:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
+            // InternalPerspectiveDsl.g:20435:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
             {
-            // InternalPerspectiveDsl.g:20381:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
-            // InternalPerspectiveDsl.g:20382:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalPerspectiveDsl.g:20435:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalPerspectiveDsl.g:20436:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); 
             }
-            // InternalPerspectiveDsl.g:20383:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
-            // InternalPerspectiveDsl.g:20383:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
+            // InternalPerspectiveDsl.g:20437:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalPerspectiveDsl.g:20437:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1();
@@ -66621,14 +66786,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__0"
-    // InternalPerspectiveDsl.g:20392:1: rule__JvmWildcardTypeReference__Group__0 : rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 ;
+    // InternalPerspectiveDsl.g:20446:1: rule__JvmWildcardTypeReference__Group__0 : rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 ;
     public final void rule__JvmWildcardTypeReference__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20396:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
-            // InternalPerspectiveDsl.g:20397:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
+            // InternalPerspectiveDsl.g:20450:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
+            // InternalPerspectiveDsl.g:20451:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
             {
             pushFollow(FOLLOW_99);
             rule__JvmWildcardTypeReference__Group__0__Impl();
@@ -66659,23 +66824,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__0__Impl"
-    // InternalPerspectiveDsl.g:20404:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
+    // InternalPerspectiveDsl.g:20458:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
     public final void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20408:1: ( ( () ) )
-            // InternalPerspectiveDsl.g:20409:1: ( () )
+            // InternalPerspectiveDsl.g:20462:1: ( ( () ) )
+            // InternalPerspectiveDsl.g:20463:1: ( () )
             {
-            // InternalPerspectiveDsl.g:20409:1: ( () )
-            // InternalPerspectiveDsl.g:20410:2: ()
+            // InternalPerspectiveDsl.g:20463:1: ( () )
+            // InternalPerspectiveDsl.g:20464:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); 
             }
-            // InternalPerspectiveDsl.g:20411:2: ()
-            // InternalPerspectiveDsl.g:20411:3: 
+            // InternalPerspectiveDsl.g:20465:2: ()
+            // InternalPerspectiveDsl.g:20465:3: 
             {
             }
 
@@ -66700,14 +66865,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__1"
-    // InternalPerspectiveDsl.g:20419:1: rule__JvmWildcardTypeReference__Group__1 : rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 ;
+    // InternalPerspectiveDsl.g:20473:1: rule__JvmWildcardTypeReference__Group__1 : rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 ;
     public final void rule__JvmWildcardTypeReference__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20423:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
-            // InternalPerspectiveDsl.g:20424:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
+            // InternalPerspectiveDsl.g:20477:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
+            // InternalPerspectiveDsl.g:20478:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
             {
             pushFollow(FOLLOW_143);
             rule__JvmWildcardTypeReference__Group__1__Impl();
@@ -66738,22 +66903,22 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__1__Impl"
-    // InternalPerspectiveDsl.g:20431:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
+    // InternalPerspectiveDsl.g:20485:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
     public final void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20435:1: ( ( '?' ) )
-            // InternalPerspectiveDsl.g:20436:1: ( '?' )
+            // InternalPerspectiveDsl.g:20489:1: ( ( '?' ) )
+            // InternalPerspectiveDsl.g:20490:1: ( '?' )
             {
-            // InternalPerspectiveDsl.g:20436:1: ( '?' )
-            // InternalPerspectiveDsl.g:20437:2: '?'
+            // InternalPerspectiveDsl.g:20490:1: ( '?' )
+            // InternalPerspectiveDsl.g:20491:2: '?'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
             }
-            match(input,122,FOLLOW_2); if (state.failed) return ;
+            match(input,124,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
             }
@@ -66779,14 +66944,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__2"
-    // InternalPerspectiveDsl.g:20446:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:20500:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
     public final void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20450:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
-            // InternalPerspectiveDsl.g:20451:2: rule__JvmWildcardTypeReference__Group__2__Impl
+            // InternalPerspectiveDsl.g:20504:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
+            // InternalPerspectiveDsl.g:20505:2: rule__JvmWildcardTypeReference__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group__2__Impl();
@@ -66812,22 +66977,22 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__2__Impl"
-    // InternalPerspectiveDsl.g:20457:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
+    // InternalPerspectiveDsl.g:20511:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
     public final void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20461:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
-            // InternalPerspectiveDsl.g:20462:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalPerspectiveDsl.g:20515:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
+            // InternalPerspectiveDsl.g:20516:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
             {
-            // InternalPerspectiveDsl.g:20462:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
-            // InternalPerspectiveDsl.g:20463:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            // InternalPerspectiveDsl.g:20516:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalPerspectiveDsl.g:20517:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); 
             }
-            // InternalPerspectiveDsl.g:20464:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            // InternalPerspectiveDsl.g:20518:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
             int alt143=2;
             int LA143_0 = input.LA(1);
 
@@ -66836,7 +67001,7 @@
             }
             switch (alt143) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:20464:3: rule__JvmWildcardTypeReference__Alternatives_2
+                    // InternalPerspectiveDsl.g:20518:3: rule__JvmWildcardTypeReference__Alternatives_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Alternatives_2();
@@ -66874,14 +67039,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0"
-    // InternalPerspectiveDsl.g:20473:1: rule__JvmWildcardTypeReference__Group_2_0__0 : rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 ;
+    // InternalPerspectiveDsl.g:20527:1: rule__JvmWildcardTypeReference__Group_2_0__0 : rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20477:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
-            // InternalPerspectiveDsl.g:20478:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
+            // InternalPerspectiveDsl.g:20531:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
+            // InternalPerspectiveDsl.g:20532:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
             {
             pushFollow(FOLLOW_144);
             rule__JvmWildcardTypeReference__Group_2_0__0__Impl();
@@ -66912,23 +67077,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0__Impl"
-    // InternalPerspectiveDsl.g:20485:1: rule__JvmWildcardTypeReference__Group_2_0__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) ;
+    // InternalPerspectiveDsl.g:20539:1: rule__JvmWildcardTypeReference__Group_2_0__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20489:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
-            // InternalPerspectiveDsl.g:20490:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:20543:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
+            // InternalPerspectiveDsl.g:20544:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
             {
-            // InternalPerspectiveDsl.g:20490:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
-            // InternalPerspectiveDsl.g:20491:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:20544:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalPerspectiveDsl.g:20545:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); 
             }
-            // InternalPerspectiveDsl.g:20492:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
-            // InternalPerspectiveDsl.g:20492:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
+            // InternalPerspectiveDsl.g:20546:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalPerspectiveDsl.g:20546:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0();
@@ -66963,14 +67128,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1"
-    // InternalPerspectiveDsl.g:20500:1: rule__JvmWildcardTypeReference__Group_2_0__1 : rule__JvmWildcardTypeReference__Group_2_0__1__Impl ;
+    // InternalPerspectiveDsl.g:20554:1: rule__JvmWildcardTypeReference__Group_2_0__1 : rule__JvmWildcardTypeReference__Group_2_0__1__Impl ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20504:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
-            // InternalPerspectiveDsl.g:20505:2: rule__JvmWildcardTypeReference__Group_2_0__1__Impl
+            // InternalPerspectiveDsl.g:20558:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
+            // InternalPerspectiveDsl.g:20559:2: rule__JvmWildcardTypeReference__Group_2_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group_2_0__1__Impl();
@@ -66996,35 +67161,35 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1__Impl"
-    // InternalPerspectiveDsl.g:20511:1: rule__JvmWildcardTypeReference__Group_2_0__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) ;
+    // InternalPerspectiveDsl.g:20565:1: rule__JvmWildcardTypeReference__Group_2_0__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20515:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
-            // InternalPerspectiveDsl.g:20516:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalPerspectiveDsl.g:20569:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
+            // InternalPerspectiveDsl.g:20570:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
             {
-            // InternalPerspectiveDsl.g:20516:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
-            // InternalPerspectiveDsl.g:20517:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            // InternalPerspectiveDsl.g:20570:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalPerspectiveDsl.g:20571:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); 
             }
-            // InternalPerspectiveDsl.g:20518:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            // InternalPerspectiveDsl.g:20572:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
             loop144:
             do {
                 int alt144=2;
                 int LA144_0 = input.LA(1);
 
-                if ( (LA144_0==123) ) {
+                if ( (LA144_0==125) ) {
                     alt144=1;
                 }
 
 
                 switch (alt144) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:20518:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
+            	    // InternalPerspectiveDsl.g:20572:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
             	    {
             	    pushFollow(FOLLOW_145);
             	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1();
@@ -67065,14 +67230,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0"
-    // InternalPerspectiveDsl.g:20527:1: rule__JvmWildcardTypeReference__Group_2_1__0 : rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 ;
+    // InternalPerspectiveDsl.g:20581:1: rule__JvmWildcardTypeReference__Group_2_1__0 : rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20531:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
-            // InternalPerspectiveDsl.g:20532:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
+            // InternalPerspectiveDsl.g:20585:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
+            // InternalPerspectiveDsl.g:20586:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
             {
             pushFollow(FOLLOW_144);
             rule__JvmWildcardTypeReference__Group_2_1__0__Impl();
@@ -67103,23 +67268,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0__Impl"
-    // InternalPerspectiveDsl.g:20539:1: rule__JvmWildcardTypeReference__Group_2_1__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) ;
+    // InternalPerspectiveDsl.g:20593:1: rule__JvmWildcardTypeReference__Group_2_1__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20543:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
-            // InternalPerspectiveDsl.g:20544:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalPerspectiveDsl.g:20597:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
+            // InternalPerspectiveDsl.g:20598:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
             {
-            // InternalPerspectiveDsl.g:20544:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
-            // InternalPerspectiveDsl.g:20545:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalPerspectiveDsl.g:20598:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalPerspectiveDsl.g:20599:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); 
             }
-            // InternalPerspectiveDsl.g:20546:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
-            // InternalPerspectiveDsl.g:20546:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
+            // InternalPerspectiveDsl.g:20600:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalPerspectiveDsl.g:20600:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0();
@@ -67154,14 +67319,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1"
-    // InternalPerspectiveDsl.g:20554:1: rule__JvmWildcardTypeReference__Group_2_1__1 : rule__JvmWildcardTypeReference__Group_2_1__1__Impl ;
+    // InternalPerspectiveDsl.g:20608:1: rule__JvmWildcardTypeReference__Group_2_1__1 : rule__JvmWildcardTypeReference__Group_2_1__1__Impl ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20558:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
-            // InternalPerspectiveDsl.g:20559:2: rule__JvmWildcardTypeReference__Group_2_1__1__Impl
+            // InternalPerspectiveDsl.g:20612:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
+            // InternalPerspectiveDsl.g:20613:2: rule__JvmWildcardTypeReference__Group_2_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group_2_1__1__Impl();
@@ -67187,35 +67352,35 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1__Impl"
-    // InternalPerspectiveDsl.g:20565:1: rule__JvmWildcardTypeReference__Group_2_1__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) ;
+    // InternalPerspectiveDsl.g:20619:1: rule__JvmWildcardTypeReference__Group_2_1__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20569:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
-            // InternalPerspectiveDsl.g:20570:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalPerspectiveDsl.g:20623:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
+            // InternalPerspectiveDsl.g:20624:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
             {
-            // InternalPerspectiveDsl.g:20570:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
-            // InternalPerspectiveDsl.g:20571:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            // InternalPerspectiveDsl.g:20624:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalPerspectiveDsl.g:20625:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); 
             }
-            // InternalPerspectiveDsl.g:20572:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            // InternalPerspectiveDsl.g:20626:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
             loop145:
             do {
                 int alt145=2;
                 int LA145_0 = input.LA(1);
 
-                if ( (LA145_0==123) ) {
+                if ( (LA145_0==125) ) {
                     alt145=1;
                 }
 
 
                 switch (alt145) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:20572:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
+            	    // InternalPerspectiveDsl.g:20626:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
             	    {
             	    pushFollow(FOLLOW_145);
             	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1();
@@ -67256,14 +67421,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__0"
-    // InternalPerspectiveDsl.g:20581:1: rule__JvmUpperBound__Group__0 : rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 ;
+    // InternalPerspectiveDsl.g:20635:1: rule__JvmUpperBound__Group__0 : rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 ;
     public final void rule__JvmUpperBound__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20585:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
-            // InternalPerspectiveDsl.g:20586:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
+            // InternalPerspectiveDsl.g:20639:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
+            // InternalPerspectiveDsl.g:20640:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
             {
             pushFollow(FOLLOW_79);
             rule__JvmUpperBound__Group__0__Impl();
@@ -67294,17 +67459,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__0__Impl"
-    // InternalPerspectiveDsl.g:20593:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
+    // InternalPerspectiveDsl.g:20647:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
     public final void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20597:1: ( ( 'extends' ) )
-            // InternalPerspectiveDsl.g:20598:1: ( 'extends' )
+            // InternalPerspectiveDsl.g:20651:1: ( ( 'extends' ) )
+            // InternalPerspectiveDsl.g:20652:1: ( 'extends' )
             {
-            // InternalPerspectiveDsl.g:20598:1: ( 'extends' )
-            // InternalPerspectiveDsl.g:20599:2: 'extends'
+            // InternalPerspectiveDsl.g:20652:1: ( 'extends' )
+            // InternalPerspectiveDsl.g:20653:2: 'extends'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0()); 
@@ -67335,14 +67500,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__1"
-    // InternalPerspectiveDsl.g:20608:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20662:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
     public final void rule__JvmUpperBound__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20612:1: ( rule__JvmUpperBound__Group__1__Impl )
-            // InternalPerspectiveDsl.g:20613:2: rule__JvmUpperBound__Group__1__Impl
+            // InternalPerspectiveDsl.g:20666:1: ( rule__JvmUpperBound__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20667:2: rule__JvmUpperBound__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__Group__1__Impl();
@@ -67368,23 +67533,23 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__1__Impl"
-    // InternalPerspectiveDsl.g:20619:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:20673:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20623:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:20624:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20677:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20678:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:20624:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
-            // InternalPerspectiveDsl.g:20625:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20678:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20679:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:20626:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
-            // InternalPerspectiveDsl.g:20626:3: rule__JvmUpperBound__TypeReferenceAssignment_1
+            // InternalPerspectiveDsl.g:20680:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20680:3: rule__JvmUpperBound__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__TypeReferenceAssignment_1();
@@ -67419,14 +67584,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__0"
-    // InternalPerspectiveDsl.g:20635:1: rule__JvmUpperBoundAnded__Group__0 : rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 ;
+    // InternalPerspectiveDsl.g:20689:1: rule__JvmUpperBoundAnded__Group__0 : rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 ;
     public final void rule__JvmUpperBoundAnded__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20639:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
-            // InternalPerspectiveDsl.g:20640:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
+            // InternalPerspectiveDsl.g:20693:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
+            // InternalPerspectiveDsl.g:20694:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
             {
             pushFollow(FOLLOW_79);
             rule__JvmUpperBoundAnded__Group__0__Impl();
@@ -67457,22 +67622,22 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__0__Impl"
-    // InternalPerspectiveDsl.g:20647:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
+    // InternalPerspectiveDsl.g:20701:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
     public final void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20651:1: ( ( '&' ) )
-            // InternalPerspectiveDsl.g:20652:1: ( '&' )
+            // InternalPerspectiveDsl.g:20705:1: ( ( '&' ) )
+            // InternalPerspectiveDsl.g:20706:1: ( '&' )
             {
-            // InternalPerspectiveDsl.g:20652:1: ( '&' )
-            // InternalPerspectiveDsl.g:20653:2: '&'
+            // InternalPerspectiveDsl.g:20706:1: ( '&' )
+            // InternalPerspectiveDsl.g:20707:2: '&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
             }
-            match(input,123,FOLLOW_2); if (state.failed) return ;
+            match(input,125,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
             }
@@ -67498,14 +67663,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__1"
-    // InternalPerspectiveDsl.g:20662:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20716:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
     public final void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20666:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
-            // InternalPerspectiveDsl.g:20667:2: rule__JvmUpperBoundAnded__Group__1__Impl
+            // InternalPerspectiveDsl.g:20720:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20721:2: rule__JvmUpperBoundAnded__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__Group__1__Impl();
@@ -67531,23 +67696,23 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__1__Impl"
-    // InternalPerspectiveDsl.g:20673:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:20727:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20677:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:20678:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20731:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20732:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:20678:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
-            // InternalPerspectiveDsl.g:20679:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20732:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20733:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:20680:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
-            // InternalPerspectiveDsl.g:20680:3: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
+            // InternalPerspectiveDsl.g:20734:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20734:3: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__TypeReferenceAssignment_1();
@@ -67582,14 +67747,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__0"
-    // InternalPerspectiveDsl.g:20689:1: rule__JvmLowerBound__Group__0 : rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 ;
+    // InternalPerspectiveDsl.g:20743:1: rule__JvmLowerBound__Group__0 : rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 ;
     public final void rule__JvmLowerBound__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20693:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
-            // InternalPerspectiveDsl.g:20694:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
+            // InternalPerspectiveDsl.g:20747:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
+            // InternalPerspectiveDsl.g:20748:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
             {
             pushFollow(FOLLOW_79);
             rule__JvmLowerBound__Group__0__Impl();
@@ -67620,17 +67785,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__0__Impl"
-    // InternalPerspectiveDsl.g:20701:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
+    // InternalPerspectiveDsl.g:20755:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
     public final void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20705:1: ( ( 'super' ) )
-            // InternalPerspectiveDsl.g:20706:1: ( 'super' )
+            // InternalPerspectiveDsl.g:20759:1: ( ( 'super' ) )
+            // InternalPerspectiveDsl.g:20760:1: ( 'super' )
             {
-            // InternalPerspectiveDsl.g:20706:1: ( 'super' )
-            // InternalPerspectiveDsl.g:20707:2: 'super'
+            // InternalPerspectiveDsl.g:20760:1: ( 'super' )
+            // InternalPerspectiveDsl.g:20761:2: 'super'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0()); 
@@ -67661,14 +67826,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__1"
-    // InternalPerspectiveDsl.g:20716:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20770:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
     public final void rule__JvmLowerBound__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20720:1: ( rule__JvmLowerBound__Group__1__Impl )
-            // InternalPerspectiveDsl.g:20721:2: rule__JvmLowerBound__Group__1__Impl
+            // InternalPerspectiveDsl.g:20774:1: ( rule__JvmLowerBound__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20775:2: rule__JvmLowerBound__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__Group__1__Impl();
@@ -67694,23 +67859,23 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__1__Impl"
-    // InternalPerspectiveDsl.g:20727:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:20781:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20731:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:20732:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20785:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20786:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:20732:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
-            // InternalPerspectiveDsl.g:20733:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20786:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20787:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:20734:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
-            // InternalPerspectiveDsl.g:20734:3: rule__JvmLowerBound__TypeReferenceAssignment_1
+            // InternalPerspectiveDsl.g:20788:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20788:3: rule__JvmLowerBound__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__TypeReferenceAssignment_1();
@@ -67745,14 +67910,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__0"
-    // InternalPerspectiveDsl.g:20743:1: rule__JvmLowerBoundAnded__Group__0 : rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 ;
+    // InternalPerspectiveDsl.g:20797:1: rule__JvmLowerBoundAnded__Group__0 : rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 ;
     public final void rule__JvmLowerBoundAnded__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20747:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
-            // InternalPerspectiveDsl.g:20748:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
+            // InternalPerspectiveDsl.g:20801:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
+            // InternalPerspectiveDsl.g:20802:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
             {
             pushFollow(FOLLOW_79);
             rule__JvmLowerBoundAnded__Group__0__Impl();
@@ -67783,22 +67948,22 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__0__Impl"
-    // InternalPerspectiveDsl.g:20755:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
+    // InternalPerspectiveDsl.g:20809:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
     public final void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20759:1: ( ( '&' ) )
-            // InternalPerspectiveDsl.g:20760:1: ( '&' )
+            // InternalPerspectiveDsl.g:20813:1: ( ( '&' ) )
+            // InternalPerspectiveDsl.g:20814:1: ( '&' )
             {
-            // InternalPerspectiveDsl.g:20760:1: ( '&' )
-            // InternalPerspectiveDsl.g:20761:2: '&'
+            // InternalPerspectiveDsl.g:20814:1: ( '&' )
+            // InternalPerspectiveDsl.g:20815:2: '&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
             }
-            match(input,123,FOLLOW_2); if (state.failed) return ;
+            match(input,125,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
             }
@@ -67824,14 +67989,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__1"
-    // InternalPerspectiveDsl.g:20770:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20824:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
     public final void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20774:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
-            // InternalPerspectiveDsl.g:20775:2: rule__JvmLowerBoundAnded__Group__1__Impl
+            // InternalPerspectiveDsl.g:20828:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20829:2: rule__JvmLowerBoundAnded__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__Group__1__Impl();
@@ -67857,23 +68022,23 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__1__Impl"
-    // InternalPerspectiveDsl.g:20781:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    // InternalPerspectiveDsl.g:20835:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20785:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
-            // InternalPerspectiveDsl.g:20786:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20839:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalPerspectiveDsl.g:20840:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
             {
-            // InternalPerspectiveDsl.g:20786:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
-            // InternalPerspectiveDsl.g:20787:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20840:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalPerspectiveDsl.g:20841:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalPerspectiveDsl.g:20788:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
-            // InternalPerspectiveDsl.g:20788:3: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
+            // InternalPerspectiveDsl.g:20842:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalPerspectiveDsl.g:20842:3: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__TypeReferenceAssignment_1();
@@ -67908,14 +68073,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0"
-    // InternalPerspectiveDsl.g:20797:1: rule__QualifiedNameWithWildcard__Group__0 : rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 ;
+    // InternalPerspectiveDsl.g:20851:1: rule__QualifiedNameWithWildcard__Group__0 : rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 ;
     public final void rule__QualifiedNameWithWildcard__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20801:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
-            // InternalPerspectiveDsl.g:20802:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
+            // InternalPerspectiveDsl.g:20855:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
+            // InternalPerspectiveDsl.g:20856:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
             {
             pushFollow(FOLLOW_139);
             rule__QualifiedNameWithWildcard__Group__0__Impl();
@@ -67946,17 +68111,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0__Impl"
-    // InternalPerspectiveDsl.g:20809:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
+    // InternalPerspectiveDsl.g:20863:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
     public final void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20813:1: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:20814:1: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:20867:1: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:20868:1: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:20814:1: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:20815:2: ruleQualifiedName
+            // InternalPerspectiveDsl.g:20868:1: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:20869:2: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
@@ -67991,14 +68156,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1"
-    // InternalPerspectiveDsl.g:20824:1: rule__QualifiedNameWithWildcard__Group__1 : rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 ;
+    // InternalPerspectiveDsl.g:20878:1: rule__QualifiedNameWithWildcard__Group__1 : rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 ;
     public final void rule__QualifiedNameWithWildcard__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20828:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
-            // InternalPerspectiveDsl.g:20829:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
+            // InternalPerspectiveDsl.g:20882:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
+            // InternalPerspectiveDsl.g:20883:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
             {
             pushFollow(FOLLOW_146);
             rule__QualifiedNameWithWildcard__Group__1__Impl();
@@ -68029,17 +68194,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1__Impl"
-    // InternalPerspectiveDsl.g:20836:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
+    // InternalPerspectiveDsl.g:20890:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
     public final void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20840:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:20841:1: ( '.' )
+            // InternalPerspectiveDsl.g:20894:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:20895:1: ( '.' )
             {
-            // InternalPerspectiveDsl.g:20841:1: ( '.' )
-            // InternalPerspectiveDsl.g:20842:2: '.'
+            // InternalPerspectiveDsl.g:20895:1: ( '.' )
+            // InternalPerspectiveDsl.g:20896:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
@@ -68070,14 +68235,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2"
-    // InternalPerspectiveDsl.g:20851:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
+    // InternalPerspectiveDsl.g:20905:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
     public final void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20855:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
-            // InternalPerspectiveDsl.g:20856:2: rule__QualifiedNameWithWildcard__Group__2__Impl
+            // InternalPerspectiveDsl.g:20909:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
+            // InternalPerspectiveDsl.g:20910:2: rule__QualifiedNameWithWildcard__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameWithWildcard__Group__2__Impl();
@@ -68103,17 +68268,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2__Impl"
-    // InternalPerspectiveDsl.g:20862:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
+    // InternalPerspectiveDsl.g:20916:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
     public final void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20866:1: ( ( '*' ) )
-            // InternalPerspectiveDsl.g:20867:1: ( '*' )
+            // InternalPerspectiveDsl.g:20920:1: ( ( '*' ) )
+            // InternalPerspectiveDsl.g:20921:1: ( '*' )
             {
-            // InternalPerspectiveDsl.g:20867:1: ( '*' )
-            // InternalPerspectiveDsl.g:20868:2: '*'
+            // InternalPerspectiveDsl.g:20921:1: ( '*' )
+            // InternalPerspectiveDsl.g:20922:2: '*'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
@@ -68144,14 +68309,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0"
-    // InternalPerspectiveDsl.g:20878:1: rule__QualifiedNameInStaticImport__Group__0 : rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 ;
+    // InternalPerspectiveDsl.g:20932:1: rule__QualifiedNameInStaticImport__Group__0 : rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 ;
     public final void rule__QualifiedNameInStaticImport__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20882:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
-            // InternalPerspectiveDsl.g:20883:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
+            // InternalPerspectiveDsl.g:20936:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
+            // InternalPerspectiveDsl.g:20937:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
             {
             pushFollow(FOLLOW_139);
             rule__QualifiedNameInStaticImport__Group__0__Impl();
@@ -68182,17 +68347,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0__Impl"
-    // InternalPerspectiveDsl.g:20890:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:20944:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20894:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:20895:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:20948:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:20949:1: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:20895:1: ( ruleValidID )
-            // InternalPerspectiveDsl.g:20896:2: ruleValidID
+            // InternalPerspectiveDsl.g:20949:1: ( ruleValidID )
+            // InternalPerspectiveDsl.g:20950:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
@@ -68227,14 +68392,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1"
-    // InternalPerspectiveDsl.g:20905:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
+    // InternalPerspectiveDsl.g:20959:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
     public final void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20909:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
-            // InternalPerspectiveDsl.g:20910:2: rule__QualifiedNameInStaticImport__Group__1__Impl
+            // InternalPerspectiveDsl.g:20963:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
+            // InternalPerspectiveDsl.g:20964:2: rule__QualifiedNameInStaticImport__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameInStaticImport__Group__1__Impl();
@@ -68260,17 +68425,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1__Impl"
-    // InternalPerspectiveDsl.g:20916:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
+    // InternalPerspectiveDsl.g:20970:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
     public final void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:20920:1: ( ( '.' ) )
-            // InternalPerspectiveDsl.g:20921:1: ( '.' )
+            // InternalPerspectiveDsl.g:20974:1: ( ( '.' ) )
+            // InternalPerspectiveDsl.g:20975:1: ( '.' )
             {
-            // InternalPerspectiveDsl.g:20921:1: ( '.' )
-            // InternalPerspectiveDsl.g:20922:2: '.'
+            // InternalPerspectiveDsl.g:20975:1: ( '.' )
+            // InternalPerspectiveDsl.g:20976:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
@@ -68301,17 +68466,17 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5"
-    // InternalPerspectiveDsl.g:20932:1: rule__Perspective__UnorderedGroup_5 : ( rule__Perspective__UnorderedGroup_5__0 )? ;
+    // InternalPerspectiveDsl.g:20986:1: rule__Perspective__UnorderedGroup_5 : ( rule__Perspective__UnorderedGroup_5__0 )? ;
     public final void rule__Perspective__UnorderedGroup_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
         	
         try {
-            // InternalPerspectiveDsl.g:20937:1: ( ( rule__Perspective__UnorderedGroup_5__0 )? )
-            // InternalPerspectiveDsl.g:20938:2: ( rule__Perspective__UnorderedGroup_5__0 )?
+            // InternalPerspectiveDsl.g:20991:1: ( ( rule__Perspective__UnorderedGroup_5__0 )? )
+            // InternalPerspectiveDsl.g:20992:2: ( rule__Perspective__UnorderedGroup_5__0 )?
             {
-            // InternalPerspectiveDsl.g:20938:2: ( rule__Perspective__UnorderedGroup_5__0 )?
+            // InternalPerspectiveDsl.g:20992:2: ( rule__Perspective__UnorderedGroup_5__0 )?
             int alt146=2;
             int LA146_0 = input.LA(1);
 
@@ -68359,17 +68524,17 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5__Impl"
-    // InternalPerspectiveDsl.g:20946:1: rule__Perspective__UnorderedGroup_5__Impl : ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) ) ;
+    // InternalPerspectiveDsl.g:21000:1: rule__Perspective__UnorderedGroup_5__Impl : ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) ) ;
     public final void rule__Perspective__UnorderedGroup_5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		boolean selected = false;
         	
         try {
-            // InternalPerspectiveDsl.g:20951:1: ( ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) ) )
-            // InternalPerspectiveDsl.g:20952:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:21005:1: ( ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:21006:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
             {
-            // InternalPerspectiveDsl.g:20952:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:21006:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) | ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) ) )
             int alt147=3;
             int LA147_0 = input.LA(1);
 
@@ -68391,28 +68556,28 @@
             }
             switch (alt147) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:20953:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21007:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20953:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20954:4: {...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21007:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21008:4: {...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__Perspective__UnorderedGroup_5__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)");
                     }
-                    // InternalPerspectiveDsl.g:20954:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:20955:5: ( ( rule__Perspective__Group_5_0__0 ) )
+                    // InternalPerspectiveDsl.g:21008:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21009:5: ( ( rule__Perspective__Group_5_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20961:5: ( ( rule__Perspective__Group_5_0__0 ) )
-                    // InternalPerspectiveDsl.g:20962:6: ( rule__Perspective__Group_5_0__0 )
+                    // InternalPerspectiveDsl.g:21015:5: ( ( rule__Perspective__Group_5_0__0 ) )
+                    // InternalPerspectiveDsl.g:21016:6: ( rule__Perspective__Group_5_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveAccess().getGroup_5_0()); 
                     }
-                    // InternalPerspectiveDsl.g:20963:6: ( rule__Perspective__Group_5_0__0 )
-                    // InternalPerspectiveDsl.g:20963:7: rule__Perspective__Group_5_0__0
+                    // InternalPerspectiveDsl.g:21017:6: ( rule__Perspective__Group_5_0__0 )
+                    // InternalPerspectiveDsl.g:21017:7: rule__Perspective__Group_5_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Perspective__Group_5_0__0();
@@ -68438,28 +68603,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:20968:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21022:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20968:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20969:4: {...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21022:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21023:4: {...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__Perspective__UnorderedGroup_5__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1)");
                     }
-                    // InternalPerspectiveDsl.g:20969:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:20970:5: ( ( rule__Perspective__Group_5_1__0 ) )
+                    // InternalPerspectiveDsl.g:21023:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21024:5: ( ( rule__Perspective__Group_5_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20976:5: ( ( rule__Perspective__Group_5_1__0 ) )
-                    // InternalPerspectiveDsl.g:20977:6: ( rule__Perspective__Group_5_1__0 )
+                    // InternalPerspectiveDsl.g:21030:5: ( ( rule__Perspective__Group_5_1__0 ) )
+                    // InternalPerspectiveDsl.g:21031:6: ( rule__Perspective__Group_5_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveAccess().getGroup_5_1()); 
                     }
-                    // InternalPerspectiveDsl.g:20978:6: ( rule__Perspective__Group_5_1__0 )
-                    // InternalPerspectiveDsl.g:20978:7: rule__Perspective__Group_5_1__0
+                    // InternalPerspectiveDsl.g:21032:6: ( rule__Perspective__Group_5_1__0 )
+                    // InternalPerspectiveDsl.g:21032:7: rule__Perspective__Group_5_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Perspective__Group_5_1__0();
@@ -68485,28 +68650,28 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:20983:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21037:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:20983:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:20984:4: {...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:21037:3: ({...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21038:4: {...}? => ( ( ( rule__Perspective__Group_5_2__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__Perspective__UnorderedGroup_5__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2)");
                     }
-                    // InternalPerspectiveDsl.g:20984:107: ( ( ( rule__Perspective__Group_5_2__0 ) ) )
-                    // InternalPerspectiveDsl.g:20985:5: ( ( rule__Perspective__Group_5_2__0 ) )
+                    // InternalPerspectiveDsl.g:21038:107: ( ( ( rule__Perspective__Group_5_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:21039:5: ( ( rule__Perspective__Group_5_2__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 2);
                     selected = true;
-                    // InternalPerspectiveDsl.g:20991:5: ( ( rule__Perspective__Group_5_2__0 ) )
-                    // InternalPerspectiveDsl.g:20992:6: ( rule__Perspective__Group_5_2__0 )
+                    // InternalPerspectiveDsl.g:21045:5: ( ( rule__Perspective__Group_5_2__0 ) )
+                    // InternalPerspectiveDsl.g:21046:6: ( rule__Perspective__Group_5_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveAccess().getGroup_5_2()); 
                     }
-                    // InternalPerspectiveDsl.g:20993:6: ( rule__Perspective__Group_5_2__0 )
-                    // InternalPerspectiveDsl.g:20993:7: rule__Perspective__Group_5_2__0
+                    // InternalPerspectiveDsl.g:21047:6: ( rule__Perspective__Group_5_2__0 )
+                    // InternalPerspectiveDsl.g:21047:7: rule__Perspective__Group_5_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Perspective__Group_5_2__0();
@@ -68555,21 +68720,21 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5__0"
-    // InternalPerspectiveDsl.g:21006:1: rule__Perspective__UnorderedGroup_5__0 : rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )? ;
+    // InternalPerspectiveDsl.g:21060:1: rule__Perspective__UnorderedGroup_5__0 : rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )? ;
     public final void rule__Perspective__UnorderedGroup_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21010:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )? )
-            // InternalPerspectiveDsl.g:21011:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )?
+            // InternalPerspectiveDsl.g:21064:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )? )
+            // InternalPerspectiveDsl.g:21065:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__1 )?
             {
             pushFollow(FOLLOW_147);
             rule__Perspective__UnorderedGroup_5__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21012:2: ( rule__Perspective__UnorderedGroup_5__1 )?
+            // InternalPerspectiveDsl.g:21066:2: ( rule__Perspective__UnorderedGroup_5__1 )?
             int alt148=2;
             int LA148_0 = input.LA(1);
 
@@ -68616,21 +68781,21 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5__1"
-    // InternalPerspectiveDsl.g:21018:1: rule__Perspective__UnorderedGroup_5__1 : rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )? ;
+    // InternalPerspectiveDsl.g:21072:1: rule__Perspective__UnorderedGroup_5__1 : rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )? ;
     public final void rule__Perspective__UnorderedGroup_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21022:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )? )
-            // InternalPerspectiveDsl.g:21023:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )?
+            // InternalPerspectiveDsl.g:21076:1: ( rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )? )
+            // InternalPerspectiveDsl.g:21077:2: rule__Perspective__UnorderedGroup_5__Impl ( rule__Perspective__UnorderedGroup_5__2 )?
             {
             pushFollow(FOLLOW_147);
             rule__Perspective__UnorderedGroup_5__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21024:2: ( rule__Perspective__UnorderedGroup_5__2 )?
+            // InternalPerspectiveDsl.g:21078:2: ( rule__Perspective__UnorderedGroup_5__2 )?
             int alt149=2;
             int LA149_0 = input.LA(1);
 
@@ -68677,14 +68842,14 @@
 
 
     // $ANTLR start "rule__Perspective__UnorderedGroup_5__2"
-    // InternalPerspectiveDsl.g:21030:1: rule__Perspective__UnorderedGroup_5__2 : rule__Perspective__UnorderedGroup_5__Impl ;
+    // InternalPerspectiveDsl.g:21084:1: rule__Perspective__UnorderedGroup_5__2 : rule__Perspective__UnorderedGroup_5__Impl ;
     public final void rule__Perspective__UnorderedGroup_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21034:1: ( rule__Perspective__UnorderedGroup_5__Impl )
-            // InternalPerspectiveDsl.g:21035:2: rule__Perspective__UnorderedGroup_5__Impl
+            // InternalPerspectiveDsl.g:21088:1: ( rule__Perspective__UnorderedGroup_5__Impl )
+            // InternalPerspectiveDsl.g:21089:2: rule__Perspective__UnorderedGroup_5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Perspective__UnorderedGroup_5__Impl();
@@ -68710,17 +68875,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3"
-    // InternalPerspectiveDsl.g:21042:1: rule__PerspectiveSashContainer__UnorderedGroup_3 : ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )? ;
+    // InternalPerspectiveDsl.g:21096:1: rule__PerspectiveSashContainer__UnorderedGroup_3 : ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )? ;
     public final void rule__PerspectiveSashContainer__UnorderedGroup_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3());
         	
         try {
-            // InternalPerspectiveDsl.g:21047:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )? )
-            // InternalPerspectiveDsl.g:21048:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:21101:1: ( ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )? )
+            // InternalPerspectiveDsl.g:21102:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
             {
-            // InternalPerspectiveDsl.g:21048:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:21102:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )?
             int alt150=2;
             int LA150_0 = input.LA(1);
 
@@ -68771,17 +68936,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl"
-    // InternalPerspectiveDsl.g:21056:1: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) ) ;
+    // InternalPerspectiveDsl.g:21110:1: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) ) ;
     public final void rule__PerspectiveSashContainer__UnorderedGroup_3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		boolean selected = false;
         	
         try {
-            // InternalPerspectiveDsl.g:21061:1: ( ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) ) )
-            // InternalPerspectiveDsl.g:21062:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:21115:1: ( ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:21116:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) )
             {
-            // InternalPerspectiveDsl.g:21062:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:21116:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) ) )
             int alt151=4;
             int LA151_0 = input.LA(1);
 
@@ -68806,28 +68971,28 @@
             }
             switch (alt151) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:21063:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21117:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21063:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21064:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21117:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21118:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0)");
                     }
-                    // InternalPerspectiveDsl.g:21064:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:21065:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:21118:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21119:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21071:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:21072:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:21125:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:21126:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:21073:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:21073:7: rule__PerspectiveSashContainer__Group_3_0__0
+                    // InternalPerspectiveDsl.g:21127:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:21127:7: rule__PerspectiveSashContainer__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSashContainer__Group_3_0__0();
@@ -68853,28 +69018,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:21078:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21132:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21078:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21079:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21132:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21133:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1)");
                     }
-                    // InternalPerspectiveDsl.g:21079:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:21080:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:21133:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21134:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21086:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
-                    // InternalPerspectiveDsl.g:21087:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:21140:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:21141:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:21088:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
-                    // InternalPerspectiveDsl.g:21088:7: rule__PerspectiveSashContainer__Group_3_1__0
+                    // InternalPerspectiveDsl.g:21142:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:21142:7: rule__PerspectiveSashContainer__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSashContainer__Group_3_1__0();
@@ -68900,28 +69065,28 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:21093:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21147:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21093:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21094:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:21147:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21148:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2)");
                     }
-                    // InternalPerspectiveDsl.g:21094:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
-                    // InternalPerspectiveDsl.g:21095:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:21148:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:21149:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21101:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
-                    // InternalPerspectiveDsl.g:21102:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:21155:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:21156:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); 
                     }
-                    // InternalPerspectiveDsl.g:21103:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
-                    // InternalPerspectiveDsl.g:21103:7: rule__PerspectiveSashContainer__Group_3_2__0
+                    // InternalPerspectiveDsl.g:21157:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:21157:7: rule__PerspectiveSashContainer__Group_3_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSashContainer__Group_3_2__0();
@@ -68947,28 +69112,28 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:21108:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21162:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21108:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21109:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:21162:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21163:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectiveSashContainer__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3)");
                     }
-                    // InternalPerspectiveDsl.g:21109:120: ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) )
-                    // InternalPerspectiveDsl.g:21110:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:21163:120: ( ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:21164:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 3);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21116:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
-                    // InternalPerspectiveDsl.g:21117:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:21170:5: ( ( rule__PerspectiveSashContainer__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:21171:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_3()); 
                     }
-                    // InternalPerspectiveDsl.g:21118:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
-                    // InternalPerspectiveDsl.g:21118:7: rule__PerspectiveSashContainer__Group_3_3__0
+                    // InternalPerspectiveDsl.g:21172:6: ( rule__PerspectiveSashContainer__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:21172:7: rule__PerspectiveSashContainer__Group_3_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSashContainer__Group_3_3__0();
@@ -69017,21 +69182,21 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__0"
-    // InternalPerspectiveDsl.g:21131:1: rule__PerspectiveSashContainer__UnorderedGroup_3__0 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )? ;
+    // InternalPerspectiveDsl.g:21185:1: rule__PerspectiveSashContainer__UnorderedGroup_3__0 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )? ;
     public final void rule__PerspectiveSashContainer__UnorderedGroup_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21135:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )? )
-            // InternalPerspectiveDsl.g:21136:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:21189:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )? )
+            // InternalPerspectiveDsl.g:21190:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
             {
             pushFollow(FOLLOW_148);
             rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21137:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:21191:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )?
             int alt152=2;
             int LA152_0 = input.LA(1);
 
@@ -69081,21 +69246,21 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__1"
-    // InternalPerspectiveDsl.g:21143:1: rule__PerspectiveSashContainer__UnorderedGroup_3__1 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )? ;
+    // InternalPerspectiveDsl.g:21197:1: rule__PerspectiveSashContainer__UnorderedGroup_3__1 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )? ;
     public final void rule__PerspectiveSashContainer__UnorderedGroup_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21147:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )? )
-            // InternalPerspectiveDsl.g:21148:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:21201:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )? )
+            // InternalPerspectiveDsl.g:21202:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
             {
             pushFollow(FOLLOW_148);
             rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21149:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:21203:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )?
             int alt153=2;
             int LA153_0 = input.LA(1);
 
@@ -69145,21 +69310,21 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__2"
-    // InternalPerspectiveDsl.g:21155:1: rule__PerspectiveSashContainer__UnorderedGroup_3__2 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )? ;
+    // InternalPerspectiveDsl.g:21209:1: rule__PerspectiveSashContainer__UnorderedGroup_3__2 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )? ;
     public final void rule__PerspectiveSashContainer__UnorderedGroup_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21159:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )? )
-            // InternalPerspectiveDsl.g:21160:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
+            // InternalPerspectiveDsl.g:21213:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )? )
+            // InternalPerspectiveDsl.g:21214:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
             {
             pushFollow(FOLLOW_148);
             rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21161:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
+            // InternalPerspectiveDsl.g:21215:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )?
             int alt154=2;
             int LA154_0 = input.LA(1);
 
@@ -69209,14 +69374,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__UnorderedGroup_3__3"
-    // InternalPerspectiveDsl.g:21167:1: rule__PerspectiveSashContainer__UnorderedGroup_3__3 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ;
+    // InternalPerspectiveDsl.g:21221:1: rule__PerspectiveSashContainer__UnorderedGroup_3__3 : rule__PerspectiveSashContainer__UnorderedGroup_3__Impl ;
     public final void rule__PerspectiveSashContainer__UnorderedGroup_3__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21171:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl )
-            // InternalPerspectiveDsl.g:21172:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
+            // InternalPerspectiveDsl.g:21225:1: ( rule__PerspectiveSashContainer__UnorderedGroup_3__Impl )
+            // InternalPerspectiveDsl.g:21226:2: rule__PerspectiveSashContainer__UnorderedGroup_3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSashContainer__UnorderedGroup_3__Impl();
@@ -69242,27 +69407,30 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3"
-    // InternalPerspectiveDsl.g:21179:1: rule__PerspectivePartStack__UnorderedGroup_3 : ( rule__PerspectivePartStack__UnorderedGroup_3__0 )? ;
+    // InternalPerspectiveDsl.g:21233:1: rule__PerspectivePartStack__UnorderedGroup_3 : ( rule__PerspectivePartStack__UnorderedGroup_3__0 )? ;
     public final void rule__PerspectivePartStack__UnorderedGroup_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
         	
         try {
-            // InternalPerspectiveDsl.g:21184:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3__0 )? )
-            // InternalPerspectiveDsl.g:21185:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:21238:1: ( ( rule__PerspectivePartStack__UnorderedGroup_3__0 )? )
+            // InternalPerspectiveDsl.g:21239:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
             {
-            // InternalPerspectiveDsl.g:21185:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:21239:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )?
             int alt155=2;
             int LA155_0 = input.LA(1);
 
             if ( LA155_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
                 alt155=1;
             }
-            else if ( LA155_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+            else if ( LA155_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
                 alt155=1;
             }
-            else if ( LA155_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+            else if ( LA155_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                alt155=1;
+            }
+            else if ( LA155_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3) ) {
                 alt155=1;
             }
             switch (alt155) {
@@ -69300,29 +69468,32 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__Impl"
-    // InternalPerspectiveDsl.g:21193:1: rule__PerspectivePartStack__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) ) ;
+    // InternalPerspectiveDsl.g:21247:1: rule__PerspectivePartStack__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_3__0 ) ) ) ) ) ;
     public final void rule__PerspectivePartStack__UnorderedGroup_3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		boolean selected = false;
         	
         try {
-            // InternalPerspectiveDsl.g:21198:1: ( ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) ) )
-            // InternalPerspectiveDsl.g:21199:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:21252:1: ( ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_3__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:21253:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_3__0 ) ) ) ) )
             {
-            // InternalPerspectiveDsl.g:21199:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) )
-            int alt156=3;
+            // InternalPerspectiveDsl.g:21253:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_3__0 ) ) ) ) )
+            int alt156=4;
             int LA156_0 = input.LA(1);
 
             if ( LA156_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
                 alt156=1;
             }
-            else if ( LA156_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+            else if ( LA156_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
                 alt156=2;
             }
-            else if ( LA156_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+            else if ( LA156_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
                 alt156=3;
             }
+            else if ( LA156_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3) ) {
+                alt156=4;
+            }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
@@ -69332,28 +69503,28 @@
             }
             switch (alt156) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:21200:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21254:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21200:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21201:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21254:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21255:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectivePartStack__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0)");
                     }
-                    // InternalPerspectiveDsl.g:21201:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:21202:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:21255:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21256:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21208:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:21209:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:21262:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:21263:6: ( rule__PerspectivePartStack__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:21210:6: ( rule__PerspectivePartStack__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:21210:7: rule__PerspectivePartStack__Group_3_0__0
+                    // InternalPerspectiveDsl.g:21264:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:21264:7: rule__PerspectivePartStack__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePartStack__Group_3_0__0();
@@ -69379,28 +69550,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:21215:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21269:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21215:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21216:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21269:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21270:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectivePartStack__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)");
                     }
-                    // InternalPerspectiveDsl.g:21216:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:21217:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:21270:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21271:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21223:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
-                    // InternalPerspectiveDsl.g:21224:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:21277:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:21278:6: ( rule__PerspectivePartStack__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:21225:6: ( rule__PerspectivePartStack__Group_3_1__0 )
-                    // InternalPerspectiveDsl.g:21225:7: rule__PerspectivePartStack__Group_3_1__0
+                    // InternalPerspectiveDsl.g:21279:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:21279:7: rule__PerspectivePartStack__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePartStack__Group_3_1__0();
@@ -69426,28 +69597,28 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:21230:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21284:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21230:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21231:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:21284:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21285:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectivePartStack__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2)");
                     }
-                    // InternalPerspectiveDsl.g:21231:116: ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
-                    // InternalPerspectiveDsl.g:21232:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:21285:116: ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:21286:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21238:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
-                    // InternalPerspectiveDsl.g:21239:6: ( rule__PerspectivePartStack__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:21292:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:21293:6: ( rule__PerspectivePartStack__Group_3_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2()); 
                     }
-                    // InternalPerspectiveDsl.g:21240:6: ( rule__PerspectivePartStack__Group_3_2__0 )
-                    // InternalPerspectiveDsl.g:21240:7: rule__PerspectivePartStack__Group_3_2__0
+                    // InternalPerspectiveDsl.g:21294:6: ( rule__PerspectivePartStack__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:21294:7: rule__PerspectivePartStack__Group_3_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePartStack__Group_3_2__0();
@@ -69472,6 +69643,53 @@
 
                     }
                     break;
+                case 4 :
+                    // InternalPerspectiveDsl.g:21299:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_3__0 ) ) ) )
+                    {
+                    // InternalPerspectiveDsl.g:21299:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21300:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_3__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__PerspectivePartStack__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3)");
+                    }
+                    // InternalPerspectiveDsl.g:21300:116: ( ( ( rule__PerspectivePartStack__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:21301:5: ( ( rule__PerspectivePartStack__Group_3_3__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3);
+                    selected = true;
+                    // InternalPerspectiveDsl.g:21307:5: ( ( rule__PerspectivePartStack__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:21308:6: ( rule__PerspectivePartStack__Group_3_3__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_3()); 
+                    }
+                    // InternalPerspectiveDsl.g:21309:6: ( rule__PerspectivePartStack__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:21309:7: rule__PerspectivePartStack__Group_3_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePartStack__Group_3_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPerspectivePartStackAccess().getGroup_3_3()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
 
             }
 
@@ -69496,31 +69714,34 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__0"
-    // InternalPerspectiveDsl.g:21253:1: rule__PerspectivePartStack__UnorderedGroup_3__0 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )? ;
+    // InternalPerspectiveDsl.g:21322:1: rule__PerspectivePartStack__UnorderedGroup_3__0 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )? ;
     public final void rule__PerspectivePartStack__UnorderedGroup_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21257:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )? )
-            // InternalPerspectiveDsl.g:21258:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:21326:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )? )
+            // InternalPerspectiveDsl.g:21327:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
             {
             pushFollow(FOLLOW_149);
             rule__PerspectivePartStack__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21259:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:21328:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )?
             int alt157=2;
             int LA157_0 = input.LA(1);
 
             if ( LA157_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
                 alt157=1;
             }
-            else if ( LA157_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+            else if ( LA157_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
                 alt157=1;
             }
-            else if ( LA157_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+            else if ( LA157_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                alt157=1;
+            }
+            else if ( LA157_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3) ) {
                 alt157=1;
             }
             switch (alt157) {
@@ -69557,31 +69778,34 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__1"
-    // InternalPerspectiveDsl.g:21265:1: rule__PerspectivePartStack__UnorderedGroup_3__1 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )? ;
+    // InternalPerspectiveDsl.g:21334:1: rule__PerspectivePartStack__UnorderedGroup_3__1 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )? ;
     public final void rule__PerspectivePartStack__UnorderedGroup_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21269:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )? )
-            // InternalPerspectiveDsl.g:21270:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:21338:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )? )
+            // InternalPerspectiveDsl.g:21339:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
             {
             pushFollow(FOLLOW_149);
             rule__PerspectivePartStack__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21271:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:21340:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )?
             int alt158=2;
             int LA158_0 = input.LA(1);
 
             if ( LA158_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
                 alt158=1;
             }
-            else if ( LA158_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+            else if ( LA158_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
                 alt158=1;
             }
-            else if ( LA158_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+            else if ( LA158_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                alt158=1;
+            }
+            else if ( LA158_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3) ) {
                 alt158=1;
             }
             switch (alt158) {
@@ -69618,14 +69842,78 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__2"
-    // InternalPerspectiveDsl.g:21277:1: rule__PerspectivePartStack__UnorderedGroup_3__2 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ;
+    // InternalPerspectiveDsl.g:21346:1: rule__PerspectivePartStack__UnorderedGroup_3__2 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__3 )? ;
     public final void rule__PerspectivePartStack__UnorderedGroup_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21281:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl )
-            // InternalPerspectiveDsl.g:21282:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl
+            // InternalPerspectiveDsl.g:21350:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__3 )? )
+            // InternalPerspectiveDsl.g:21351:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl ( rule__PerspectivePartStack__UnorderedGroup_3__3 )?
+            {
+            pushFollow(FOLLOW_149);
+            rule__PerspectivePartStack__UnorderedGroup_3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalPerspectiveDsl.g:21352:2: ( rule__PerspectivePartStack__UnorderedGroup_3__3 )?
+            int alt159=2;
+            int LA159_0 = input.LA(1);
+
+            if ( LA159_0 == 65 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
+                alt159=1;
+            }
+            else if ( LA159_0 == 68 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+                alt159=1;
+            }
+            else if ( LA159_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                alt159=1;
+            }
+            else if ( LA159_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3) ) {
+                alt159=1;
+            }
+            switch (alt159) {
+                case 1 :
+                    // InternalPerspectiveDsl.g:0:0: rule__PerspectivePartStack__UnorderedGroup_3__3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__PerspectivePartStack__UnorderedGroup_3__3();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__UnorderedGroup_3__2"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__UnorderedGroup_3__3"
+    // InternalPerspectiveDsl.g:21358:1: rule__PerspectivePartStack__UnorderedGroup_3__3 : rule__PerspectivePartStack__UnorderedGroup_3__Impl ;
+    public final void rule__PerspectivePartStack__UnorderedGroup_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:21362:1: ( rule__PerspectivePartStack__UnorderedGroup_3__Impl )
+            // InternalPerspectiveDsl.g:21363:2: rule__PerspectivePartStack__UnorderedGroup_3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePartStack__UnorderedGroup_3__Impl();
@@ -69647,40 +69935,40 @@
         }
         return ;
     }
-    // $ANTLR end "rule__PerspectivePartStack__UnorderedGroup_3__2"
+    // $ANTLR end "rule__PerspectivePartStack__UnorderedGroup_3__3"
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3"
-    // InternalPerspectiveDsl.g:21289:1: rule__PerspectivePart__UnorderedGroup_3 : ( rule__PerspectivePart__UnorderedGroup_3__0 )? ;
+    // InternalPerspectiveDsl.g:21370:1: rule__PerspectivePart__UnorderedGroup_3 : ( rule__PerspectivePart__UnorderedGroup_3__0 )? ;
     public final void rule__PerspectivePart__UnorderedGroup_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
         	
         try {
-            // InternalPerspectiveDsl.g:21294:1: ( ( rule__PerspectivePart__UnorderedGroup_3__0 )? )
-            // InternalPerspectiveDsl.g:21295:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
+            // InternalPerspectiveDsl.g:21375:1: ( ( rule__PerspectivePart__UnorderedGroup_3__0 )? )
+            // InternalPerspectiveDsl.g:21376:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
             {
-            // InternalPerspectiveDsl.g:21295:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
-            int alt159=2;
-            int LA159_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:21376:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )?
+            int alt160=2;
+            int LA160_0 = input.LA(1);
 
-            if ( LA159_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
-                alt159=1;
+            if ( LA160_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt160=1;
             }
-            else if ( LA159_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
-                alt159=1;
+            else if ( LA160_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt160=1;
             }
-            else if ( LA159_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
-                alt159=1;
+            else if ( LA160_0 == 70 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt160=1;
             }
-            else if ( LA159_0 == 69 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
-                alt159=1;
+            else if ( LA160_0 == 71 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt160=1;
             }
-            else if ( LA159_0 == 125 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
-                alt159=1;
+            else if ( LA160_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt160=1;
             }
-            switch (alt159) {
+            switch (alt160) {
                 case 1 :
                     // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__0
                     {
@@ -69715,66 +70003,66 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__Impl"
-    // InternalPerspectiveDsl.g:21303:1: rule__PerspectivePart__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) ) ;
+    // InternalPerspectiveDsl.g:21384:1: rule__PerspectivePart__UnorderedGroup_3__Impl : ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) ) ;
     public final void rule__PerspectivePart__UnorderedGroup_3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		boolean selected = false;
         	
         try {
-            // InternalPerspectiveDsl.g:21308:1: ( ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) ) )
-            // InternalPerspectiveDsl.g:21309:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) )
+            // InternalPerspectiveDsl.g:21389:1: ( ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:21390:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) )
             {
-            // InternalPerspectiveDsl.g:21309:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) )
-            int alt160=5;
-            int LA160_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:21390:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) ) )
+            int alt161=5;
+            int LA161_0 = input.LA(1);
 
-            if ( LA160_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
-                alt160=1;
+            if ( LA161_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt161=1;
             }
-            else if ( LA160_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
-                alt160=2;
+            else if ( LA161_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt161=2;
             }
-            else if ( LA160_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
-                alt160=3;
+            else if ( LA161_0 == 70 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt161=3;
             }
-            else if ( LA160_0 == 69 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
-                alt160=4;
+            else if ( LA161_0 == 71 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt161=4;
             }
-            else if ( LA160_0 == 125 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
-                alt160=5;
+            else if ( LA161_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt161=5;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 160, 0, input);
+                    new NoViableAltException("", 161, 0, input);
 
                 throw nvae;
             }
-            switch (alt160) {
+            switch (alt161) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:21310:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21391:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21310:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21311:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21391:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21392:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)");
                     }
-                    // InternalPerspectiveDsl.g:21311:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:21312:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:21392:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21393:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21318:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
-                    // InternalPerspectiveDsl.g:21319:6: ( rule__PerspectivePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:21399:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+                    // InternalPerspectiveDsl.g:21400:6: ( rule__PerspectivePart__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); 
                     }
-                    // InternalPerspectiveDsl.g:21320:6: ( rule__PerspectivePart__Group_3_0__0 )
-                    // InternalPerspectiveDsl.g:21320:7: rule__PerspectivePart__Group_3_0__0
+                    // InternalPerspectiveDsl.g:21401:6: ( rule__PerspectivePart__Group_3_0__0 )
+                    // InternalPerspectiveDsl.g:21401:7: rule__PerspectivePart__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__Group_3_0__0();
@@ -69800,28 +70088,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:21325:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21406:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21325:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21326:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21406:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21407:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)");
                     }
-                    // InternalPerspectiveDsl.g:21326:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:21327:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:21407:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21408:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21333:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
-                    // InternalPerspectiveDsl.g:21334:6: ( rule__PerspectivePart__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:21414:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+                    // InternalPerspectiveDsl.g:21415:6: ( rule__PerspectivePart__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); 
                     }
-                    // InternalPerspectiveDsl.g:21335:6: ( rule__PerspectivePart__Group_3_1__0 )
-                    // InternalPerspectiveDsl.g:21335:7: rule__PerspectivePart__Group_3_1__0
+                    // InternalPerspectiveDsl.g:21416:6: ( rule__PerspectivePart__Group_3_1__0 )
+                    // InternalPerspectiveDsl.g:21416:7: rule__PerspectivePart__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__Group_3_1__0();
@@ -69847,28 +70135,28 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:21340:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21421:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21340:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21341:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:21421:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21422:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)");
                     }
-                    // InternalPerspectiveDsl.g:21341:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
-                    // InternalPerspectiveDsl.g:21342:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:21422:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+                    // InternalPerspectiveDsl.g:21423:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21348:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
-                    // InternalPerspectiveDsl.g:21349:6: ( rule__PerspectivePart__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:21429:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+                    // InternalPerspectiveDsl.g:21430:6: ( rule__PerspectivePart__Group_3_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); 
                     }
-                    // InternalPerspectiveDsl.g:21350:6: ( rule__PerspectivePart__Group_3_2__0 )
-                    // InternalPerspectiveDsl.g:21350:7: rule__PerspectivePart__Group_3_2__0
+                    // InternalPerspectiveDsl.g:21431:6: ( rule__PerspectivePart__Group_3_2__0 )
+                    // InternalPerspectiveDsl.g:21431:7: rule__PerspectivePart__Group_3_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__Group_3_2__0();
@@ -69894,28 +70182,28 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:21355:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21436:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21355:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21356:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:21436:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21437:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)");
                     }
-                    // InternalPerspectiveDsl.g:21356:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
-                    // InternalPerspectiveDsl.g:21357:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:21437:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+                    // InternalPerspectiveDsl.g:21438:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21363:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
-                    // InternalPerspectiveDsl.g:21364:6: ( rule__PerspectivePart__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:21444:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+                    // InternalPerspectiveDsl.g:21445:6: ( rule__PerspectivePart__Group_3_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); 
                     }
-                    // InternalPerspectiveDsl.g:21365:6: ( rule__PerspectivePart__Group_3_3__0 )
-                    // InternalPerspectiveDsl.g:21365:7: rule__PerspectivePart__Group_3_3__0
+                    // InternalPerspectiveDsl.g:21446:6: ( rule__PerspectivePart__Group_3_3__0 )
+                    // InternalPerspectiveDsl.g:21446:7: rule__PerspectivePart__Group_3_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__Group_3_3__0();
@@ -69941,28 +70229,28 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:21370:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
+                    // InternalPerspectiveDsl.g:21451:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21370:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
-                    // InternalPerspectiveDsl.g:21371:4: {...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) )
+                    // InternalPerspectiveDsl.g:21451:3: ({...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) ) )
+                    // InternalPerspectiveDsl.g:21452:4: {...}? => ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectivePart__UnorderedGroup_3__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4)");
                     }
-                    // InternalPerspectiveDsl.g:21371:111: ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) )
-                    // InternalPerspectiveDsl.g:21372:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
+                    // InternalPerspectiveDsl.g:21452:111: ( ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) ) )
+                    // InternalPerspectiveDsl.g:21453:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21378:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
-                    // InternalPerspectiveDsl.g:21379:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
+                    // InternalPerspectiveDsl.g:21459:5: ( ( rule__PerspectivePart__IsClosableAssignment_3_4 ) )
+                    // InternalPerspectiveDsl.g:21460:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectivePartAccess().getIsClosableAssignment_3_4()); 
                     }
-                    // InternalPerspectiveDsl.g:21380:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
-                    // InternalPerspectiveDsl.g:21380:7: rule__PerspectivePart__IsClosableAssignment_3_4
+                    // InternalPerspectiveDsl.g:21461:6: ( rule__PerspectivePart__IsClosableAssignment_3_4 )
+                    // InternalPerspectiveDsl.g:21461:7: rule__PerspectivePart__IsClosableAssignment_3_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectivePart__IsClosableAssignment_3_4();
@@ -70011,40 +70299,40 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__0"
-    // InternalPerspectiveDsl.g:21393:1: rule__PerspectivePart__UnorderedGroup_3__0 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )? ;
+    // InternalPerspectiveDsl.g:21474:1: rule__PerspectivePart__UnorderedGroup_3__0 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )? ;
     public final void rule__PerspectivePart__UnorderedGroup_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21397:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )? )
-            // InternalPerspectiveDsl.g:21398:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )?
+            // InternalPerspectiveDsl.g:21478:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )? )
+            // InternalPerspectiveDsl.g:21479:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__1 )?
             {
             pushFollow(FOLLOW_150);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21399:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )?
-            int alt161=2;
-            int LA161_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:21480:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )?
+            int alt162=2;
+            int LA162_0 = input.LA(1);
 
-            if ( LA161_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
-                alt161=1;
+            if ( LA162_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt162=1;
             }
-            else if ( LA161_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
-                alt161=1;
+            else if ( LA162_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt162=1;
             }
-            else if ( LA161_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
-                alt161=1;
+            else if ( LA162_0 == 70 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt162=1;
             }
-            else if ( LA161_0 == 69 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
-                alt161=1;
+            else if ( LA162_0 == 71 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt162=1;
             }
-            else if ( LA161_0 == 125 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
-                alt161=1;
+            else if ( LA162_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt162=1;
             }
-            switch (alt161) {
+            switch (alt162) {
                 case 1 :
                     // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__1
                     {
@@ -70078,40 +70366,40 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__1"
-    // InternalPerspectiveDsl.g:21405:1: rule__PerspectivePart__UnorderedGroup_3__1 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )? ;
+    // InternalPerspectiveDsl.g:21486:1: rule__PerspectivePart__UnorderedGroup_3__1 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )? ;
     public final void rule__PerspectivePart__UnorderedGroup_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21409:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )? )
-            // InternalPerspectiveDsl.g:21410:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )?
+            // InternalPerspectiveDsl.g:21490:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )? )
+            // InternalPerspectiveDsl.g:21491:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__2 )?
             {
             pushFollow(FOLLOW_150);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21411:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )?
-            int alt162=2;
-            int LA162_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:21492:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )?
+            int alt163=2;
+            int LA163_0 = input.LA(1);
 
-            if ( LA162_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
-                alt162=1;
+            if ( LA163_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt163=1;
             }
-            else if ( LA162_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
-                alt162=1;
+            else if ( LA163_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt163=1;
             }
-            else if ( LA162_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
-                alt162=1;
+            else if ( LA163_0 == 70 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt163=1;
             }
-            else if ( LA162_0 == 69 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
-                alt162=1;
+            else if ( LA163_0 == 71 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt163=1;
             }
-            else if ( LA162_0 == 125 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
-                alt162=1;
+            else if ( LA163_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt163=1;
             }
-            switch (alt162) {
+            switch (alt163) {
                 case 1 :
                     // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__2
                     {
@@ -70145,40 +70433,40 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__2"
-    // InternalPerspectiveDsl.g:21417:1: rule__PerspectivePart__UnorderedGroup_3__2 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )? ;
+    // InternalPerspectiveDsl.g:21498:1: rule__PerspectivePart__UnorderedGroup_3__2 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )? ;
     public final void rule__PerspectivePart__UnorderedGroup_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21421:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )? )
-            // InternalPerspectiveDsl.g:21422:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )?
+            // InternalPerspectiveDsl.g:21502:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )? )
+            // InternalPerspectiveDsl.g:21503:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__3 )?
             {
             pushFollow(FOLLOW_150);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21423:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )?
-            int alt163=2;
-            int LA163_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:21504:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )?
+            int alt164=2;
+            int LA164_0 = input.LA(1);
 
-            if ( LA163_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
-                alt163=1;
+            if ( LA164_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt164=1;
             }
-            else if ( LA163_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
-                alt163=1;
+            else if ( LA164_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt164=1;
             }
-            else if ( LA163_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
-                alt163=1;
+            else if ( LA164_0 == 70 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt164=1;
             }
-            else if ( LA163_0 == 69 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
-                alt163=1;
+            else if ( LA164_0 == 71 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt164=1;
             }
-            else if ( LA163_0 == 125 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
-                alt163=1;
+            else if ( LA164_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt164=1;
             }
-            switch (alt163) {
+            switch (alt164) {
                 case 1 :
                     // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__3
                     {
@@ -70212,40 +70500,40 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__3"
-    // InternalPerspectiveDsl.g:21429:1: rule__PerspectivePart__UnorderedGroup_3__3 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )? ;
+    // InternalPerspectiveDsl.g:21510:1: rule__PerspectivePart__UnorderedGroup_3__3 : rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )? ;
     public final void rule__PerspectivePart__UnorderedGroup_3__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21433:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )? )
-            // InternalPerspectiveDsl.g:21434:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )?
+            // InternalPerspectiveDsl.g:21514:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )? )
+            // InternalPerspectiveDsl.g:21515:2: rule__PerspectivePart__UnorderedGroup_3__Impl ( rule__PerspectivePart__UnorderedGroup_3__4 )?
             {
             pushFollow(FOLLOW_150);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21435:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )?
-            int alt164=2;
-            int LA164_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:21516:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )?
+            int alt165=2;
+            int LA165_0 = input.LA(1);
 
-            if ( LA164_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
-                alt164=1;
+            if ( LA165_0 == 66 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
+                alt165=1;
             }
-            else if ( LA164_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
-                alt164=1;
+            else if ( LA165_0 == 60 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
+                alt165=1;
             }
-            else if ( LA164_0 == 59 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
-                alt164=1;
+            else if ( LA165_0 == 70 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                alt165=1;
             }
-            else if ( LA164_0 == 69 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
-                alt164=1;
+            else if ( LA165_0 == 71 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                alt165=1;
             }
-            else if ( LA164_0 == 125 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
-                alt164=1;
+            else if ( LA165_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                alt165=1;
             }
-            switch (alt164) {
+            switch (alt165) {
                 case 1 :
                     // InternalPerspectiveDsl.g:0:0: rule__PerspectivePart__UnorderedGroup_3__4
                     {
@@ -70279,14 +70567,14 @@
 
 
     // $ANTLR start "rule__PerspectivePart__UnorderedGroup_3__4"
-    // InternalPerspectiveDsl.g:21441:1: rule__PerspectivePart__UnorderedGroup_3__4 : rule__PerspectivePart__UnorderedGroup_3__Impl ;
+    // InternalPerspectiveDsl.g:21522:1: rule__PerspectivePart__UnorderedGroup_3__4 : rule__PerspectivePart__UnorderedGroup_3__Impl ;
     public final void rule__PerspectivePart__UnorderedGroup_3__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21445:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl )
-            // InternalPerspectiveDsl.g:21446:2: rule__PerspectivePart__UnorderedGroup_3__Impl
+            // InternalPerspectiveDsl.g:21526:1: ( rule__PerspectivePart__UnorderedGroup_3__Impl )
+            // InternalPerspectiveDsl.g:21527:2: rule__PerspectivePart__UnorderedGroup_3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectivePart__UnorderedGroup_3__Impl();
@@ -70312,27 +70600,27 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4"
-    // InternalPerspectiveDsl.g:21453:1: rule__PerspectiveSearch__UnorderedGroup_4 : ( rule__PerspectiveSearch__UnorderedGroup_4__0 )? ;
+    // InternalPerspectiveDsl.g:21534:1: rule__PerspectiveSearch__UnorderedGroup_4 : ( rule__PerspectiveSearch__UnorderedGroup_4__0 )? ;
     public final void rule__PerspectiveSearch__UnorderedGroup_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
         	
         try {
-            // InternalPerspectiveDsl.g:21458:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4__0 )? )
-            // InternalPerspectiveDsl.g:21459:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
+            // InternalPerspectiveDsl.g:21539:1: ( ( rule__PerspectiveSearch__UnorderedGroup_4__0 )? )
+            // InternalPerspectiveDsl.g:21540:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
             {
-            // InternalPerspectiveDsl.g:21459:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
-            int alt165=2;
-            int LA165_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:21540:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )?
+            int alt166=2;
+            int LA166_0 = input.LA(1);
 
-            if ( LA165_0 == 87 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
-                alt165=1;
+            if ( LA166_0 == 89 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+                alt166=1;
             }
-            else if ( LA165_0 == 88 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
-                alt165=1;
+            else if ( LA166_0 == 90 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+                alt166=1;
             }
-            switch (alt165) {
+            switch (alt166) {
                 case 1 :
                     // InternalPerspectiveDsl.g:0:0: rule__PerspectiveSearch__UnorderedGroup_4__0
                     {
@@ -70367,57 +70655,57 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4__Impl"
-    // InternalPerspectiveDsl.g:21467:1: rule__PerspectiveSearch__UnorderedGroup_4__Impl : ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) ) ;
+    // InternalPerspectiveDsl.g:21548:1: rule__PerspectiveSearch__UnorderedGroup_4__Impl : ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) ) ;
     public final void rule__PerspectiveSearch__UnorderedGroup_4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         		boolean selected = false;
         	
         try {
-            // InternalPerspectiveDsl.g:21472:1: ( ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) ) )
-            // InternalPerspectiveDsl.g:21473:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
+            // InternalPerspectiveDsl.g:21553:1: ( ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:21554:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
             {
-            // InternalPerspectiveDsl.g:21473:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
-            int alt166=2;
-            int LA166_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:21554:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) | ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) ) )
+            int alt167=2;
+            int LA167_0 = input.LA(1);
 
-            if ( LA166_0 == 87 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
-                alt166=1;
+            if ( LA167_0 == 89 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+                alt167=1;
             }
-            else if ( LA166_0 == 88 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
-                alt166=2;
+            else if ( LA167_0 == 90 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+                alt167=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 166, 0, input);
+                    new NoViableAltException("", 167, 0, input);
 
                 throw nvae;
             }
-            switch (alt166) {
+            switch (alt167) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:21474:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21555:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21474:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21475:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21555:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21556:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectiveSearch__UnorderedGroup_4__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)");
                     }
-                    // InternalPerspectiveDsl.g:21475:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
-                    // InternalPerspectiveDsl.g:21476:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+                    // InternalPerspectiveDsl.g:21556:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+                    // InternalPerspectiveDsl.g:21557:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21482:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
-                    // InternalPerspectiveDsl.g:21483:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+                    // InternalPerspectiveDsl.g:21563:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+                    // InternalPerspectiveDsl.g:21564:6: ( rule__PerspectiveSearch__Group_4_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0()); 
                     }
-                    // InternalPerspectiveDsl.g:21484:6: ( rule__PerspectiveSearch__Group_4_0__0 )
-                    // InternalPerspectiveDsl.g:21484:7: rule__PerspectiveSearch__Group_4_0__0
+                    // InternalPerspectiveDsl.g:21565:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+                    // InternalPerspectiveDsl.g:21565:7: rule__PerspectiveSearch__Group_4_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSearch__Group_4_0__0();
@@ -70443,28 +70731,28 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:21489:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21570:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:21489:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
-                    // InternalPerspectiveDsl.g:21490:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21570:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) ) )
+                    // InternalPerspectiveDsl.g:21571:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) )
                     {
                     if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
                         if (state.backtracking>0) {state.failed=true; return ;}
                         throw new FailedPredicateException(input, "rule__PerspectiveSearch__UnorderedGroup_4__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1)");
                     }
-                    // InternalPerspectiveDsl.g:21490:113: ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) )
-                    // InternalPerspectiveDsl.g:21491:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
+                    // InternalPerspectiveDsl.g:21571:113: ( ( ( rule__PerspectiveSearch__Group_4_1__0 ) ) )
+                    // InternalPerspectiveDsl.g:21572:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
                     {
                     getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1);
                     selected = true;
-                    // InternalPerspectiveDsl.g:21497:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
-                    // InternalPerspectiveDsl.g:21498:6: ( rule__PerspectiveSearch__Group_4_1__0 )
+                    // InternalPerspectiveDsl.g:21578:5: ( ( rule__PerspectiveSearch__Group_4_1__0 ) )
+                    // InternalPerspectiveDsl.g:21579:6: ( rule__PerspectiveSearch__Group_4_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_1()); 
                     }
-                    // InternalPerspectiveDsl.g:21499:6: ( rule__PerspectiveSearch__Group_4_1__0 )
-                    // InternalPerspectiveDsl.g:21499:7: rule__PerspectiveSearch__Group_4_1__0
+                    // InternalPerspectiveDsl.g:21580:6: ( rule__PerspectiveSearch__Group_4_1__0 )
+                    // InternalPerspectiveDsl.g:21580:7: rule__PerspectiveSearch__Group_4_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PerspectiveSearch__Group_4_1__0();
@@ -70513,31 +70801,31 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4__0"
-    // InternalPerspectiveDsl.g:21512:1: rule__PerspectiveSearch__UnorderedGroup_4__0 : rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )? ;
+    // InternalPerspectiveDsl.g:21593:1: rule__PerspectiveSearch__UnorderedGroup_4__0 : rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )? ;
     public final void rule__PerspectiveSearch__UnorderedGroup_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21516:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )? )
-            // InternalPerspectiveDsl.g:21517:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
+            // InternalPerspectiveDsl.g:21597:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )? )
+            // InternalPerspectiveDsl.g:21598:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
             {
             pushFollow(FOLLOW_151);
             rule__PerspectiveSearch__UnorderedGroup_4__Impl();
 
             state._fsp--;
             if (state.failed) return ;
-            // InternalPerspectiveDsl.g:21518:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
-            int alt167=2;
-            int LA167_0 = input.LA(1);
+            // InternalPerspectiveDsl.g:21599:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )?
+            int alt168=2;
+            int LA168_0 = input.LA(1);
 
-            if ( LA167_0 == 87 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
-                alt167=1;
+            if ( LA168_0 == 89 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+                alt168=1;
             }
-            else if ( LA167_0 == 88 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
-                alt167=1;
+            else if ( LA168_0 == 90 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+                alt168=1;
             }
-            switch (alt167) {
+            switch (alt168) {
                 case 1 :
                     // InternalPerspectiveDsl.g:0:0: rule__PerspectiveSearch__UnorderedGroup_4__1
                     {
@@ -70571,14 +70859,14 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__UnorderedGroup_4__1"
-    // InternalPerspectiveDsl.g:21524:1: rule__PerspectiveSearch__UnorderedGroup_4__1 : rule__PerspectiveSearch__UnorderedGroup_4__Impl ;
+    // InternalPerspectiveDsl.g:21605:1: rule__PerspectiveSearch__UnorderedGroup_4__1 : rule__PerspectiveSearch__UnorderedGroup_4__Impl ;
     public final void rule__PerspectiveSearch__UnorderedGroup_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21528:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl )
-            // InternalPerspectiveDsl.g:21529:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl
+            // InternalPerspectiveDsl.g:21609:1: ( rule__PerspectiveSearch__UnorderedGroup_4__Impl )
+            // InternalPerspectiveDsl.g:21610:2: rule__PerspectiveSearch__UnorderedGroup_4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PerspectiveSearch__UnorderedGroup_4__Impl();
@@ -70604,17 +70892,17 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__ImportSectionAssignment_0"
-    // InternalPerspectiveDsl.g:21536:1: rule__PerspectiveModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
+    // InternalPerspectiveDsl.g:21617:1: rule__PerspectiveModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
     public final void rule__PerspectiveModel__ImportSectionAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21540:1: ( ( ruleXImportSection ) )
-            // InternalPerspectiveDsl.g:21541:2: ( ruleXImportSection )
+            // InternalPerspectiveDsl.g:21621:1: ( ( ruleXImportSection ) )
+            // InternalPerspectiveDsl.g:21622:2: ( ruleXImportSection )
             {
-            // InternalPerspectiveDsl.g:21541:2: ( ruleXImportSection )
-            // InternalPerspectiveDsl.g:21542:3: ruleXImportSection
+            // InternalPerspectiveDsl.g:21622:2: ( ruleXImportSection )
+            // InternalPerspectiveDsl.g:21623:3: ruleXImportSection
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
@@ -70649,17 +70937,17 @@
 
 
     // $ANTLR start "rule__PerspectiveModel__PackagesAssignment_1"
-    // InternalPerspectiveDsl.g:21551:1: rule__PerspectiveModel__PackagesAssignment_1 : ( rulePerspectivePackage ) ;
+    // InternalPerspectiveDsl.g:21632:1: rule__PerspectiveModel__PackagesAssignment_1 : ( rulePerspectivePackage ) ;
     public final void rule__PerspectiveModel__PackagesAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21555:1: ( ( rulePerspectivePackage ) )
-            // InternalPerspectiveDsl.g:21556:2: ( rulePerspectivePackage )
+            // InternalPerspectiveDsl.g:21636:1: ( ( rulePerspectivePackage ) )
+            // InternalPerspectiveDsl.g:21637:2: ( rulePerspectivePackage )
             {
-            // InternalPerspectiveDsl.g:21556:2: ( rulePerspectivePackage )
-            // InternalPerspectiveDsl.g:21557:3: rulePerspectivePackage
+            // InternalPerspectiveDsl.g:21637:2: ( rulePerspectivePackage )
+            // InternalPerspectiveDsl.g:21638:3: rulePerspectivePackage
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveModelAccess().getPackagesPerspectivePackageParserRuleCall_1_0()); 
@@ -70694,17 +70982,17 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__NameAssignment_2"
-    // InternalPerspectiveDsl.g:21566:1: rule__PerspectivePackage__NameAssignment_2 : ( ruleQualifiedName ) ;
+    // InternalPerspectiveDsl.g:21647:1: rule__PerspectivePackage__NameAssignment_2 : ( ruleQualifiedName ) ;
     public final void rule__PerspectivePackage__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21570:1: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:21571:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21651:1: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:21652:2: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:21571:2: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:21572:3: ruleQualifiedName
+            // InternalPerspectiveDsl.g:21652:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:21653:3: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
@@ -70739,17 +71027,17 @@
 
 
     // $ANTLR start "rule__PerspectivePackage__PerspectivesAssignment_3_1"
-    // InternalPerspectiveDsl.g:21581:1: rule__PerspectivePackage__PerspectivesAssignment_3_1 : ( rulePerspective ) ;
+    // InternalPerspectiveDsl.g:21662:1: rule__PerspectivePackage__PerspectivesAssignment_3_1 : ( rulePerspective ) ;
     public final void rule__PerspectivePackage__PerspectivesAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21585:1: ( ( rulePerspective ) )
-            // InternalPerspectiveDsl.g:21586:2: ( rulePerspective )
+            // InternalPerspectiveDsl.g:21666:1: ( ( rulePerspective ) )
+            // InternalPerspectiveDsl.g:21667:2: ( rulePerspective )
             {
-            // InternalPerspectiveDsl.g:21586:2: ( rulePerspective )
-            // InternalPerspectiveDsl.g:21587:3: rulePerspective
+            // InternalPerspectiveDsl.g:21667:2: ( rulePerspective )
+            // InternalPerspectiveDsl.g:21668:3: rulePerspective
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePackageAccess().getPerspectivesPerspectiveParserRuleCall_3_1_0()); 
@@ -70784,17 +71072,17 @@
 
 
     // $ANTLR start "rule__Perspective__NameAssignment_2"
-    // InternalPerspectiveDsl.g:21596:1: rule__Perspective__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    // InternalPerspectiveDsl.g:21677:1: rule__Perspective__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
     public final void rule__Perspective__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21600:1: ( ( ruleTRANSLATABLEID ) )
-            // InternalPerspectiveDsl.g:21601:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:21681:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalPerspectiveDsl.g:21682:2: ( ruleTRANSLATABLEID )
             {
-            // InternalPerspectiveDsl.g:21601:2: ( ruleTRANSLATABLEID )
-            // InternalPerspectiveDsl.g:21602:3: ruleTRANSLATABLEID
+            // InternalPerspectiveDsl.g:21682:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:21683:3: ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
@@ -70829,28 +71117,28 @@
 
 
     // $ANTLR start "rule__Perspective__DescriptionAssignment_3_0"
-    // InternalPerspectiveDsl.g:21611:1: rule__Perspective__DescriptionAssignment_3_0 : ( ( 'describedBy' ) ) ;
+    // InternalPerspectiveDsl.g:21692:1: rule__Perspective__DescriptionAssignment_3_0 : ( ( 'describedBy' ) ) ;
     public final void rule__Perspective__DescriptionAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21615:1: ( ( ( 'describedBy' ) ) )
-            // InternalPerspectiveDsl.g:21616:2: ( ( 'describedBy' ) )
+            // InternalPerspectiveDsl.g:21696:1: ( ( ( 'describedBy' ) ) )
+            // InternalPerspectiveDsl.g:21697:2: ( ( 'describedBy' ) )
             {
-            // InternalPerspectiveDsl.g:21616:2: ( ( 'describedBy' ) )
-            // InternalPerspectiveDsl.g:21617:3: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:21697:2: ( ( 'describedBy' ) )
+            // InternalPerspectiveDsl.g:21698:3: ( 'describedBy' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:21618:3: ( 'describedBy' )
-            // InternalPerspectiveDsl.g:21619:4: 'describedBy'
+            // InternalPerspectiveDsl.g:21699:3: ( 'describedBy' )
+            // InternalPerspectiveDsl.g:21700:4: 'describedBy'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
             }
-            match(input,124,FOLLOW_2); if (state.failed) return ;
+            match(input,126,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectiveAccess().getDescriptionDescribedByKeyword_3_0_0()); 
             }
@@ -70882,17 +71170,17 @@
 
 
     // $ANTLR start "rule__Perspective__DescriptionValueAssignment_3_1"
-    // InternalPerspectiveDsl.g:21630:1: rule__Perspective__DescriptionValueAssignment_3_1 : ( ruleTRANSLATABLESTRING ) ;
+    // InternalPerspectiveDsl.g:21711:1: rule__Perspective__DescriptionValueAssignment_3_1 : ( ruleTRANSLATABLESTRING ) ;
     public final void rule__Perspective__DescriptionValueAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21634:1: ( ( ruleTRANSLATABLESTRING ) )
-            // InternalPerspectiveDsl.g:21635:2: ( ruleTRANSLATABLESTRING )
+            // InternalPerspectiveDsl.g:21715:1: ( ( ruleTRANSLATABLESTRING ) )
+            // InternalPerspectiveDsl.g:21716:2: ( ruleTRANSLATABLESTRING )
             {
-            // InternalPerspectiveDsl.g:21635:2: ( ruleTRANSLATABLESTRING )
-            // InternalPerspectiveDsl.g:21636:3: ruleTRANSLATABLESTRING
+            // InternalPerspectiveDsl.g:21716:2: ( ruleTRANSLATABLESTRING )
+            // InternalPerspectiveDsl.g:21717:3: ruleTRANSLATABLESTRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
@@ -70927,23 +71215,23 @@
 
 
     // $ANTLR start "rule__Perspective__ProcessAssignment_4_1"
-    // InternalPerspectiveDsl.g:21645:1: rule__Perspective__ProcessAssignment_4_1 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21726:1: rule__Perspective__ProcessAssignment_4_1 : ( ( RULE_ID ) ) ;
     public final void rule__Perspective__ProcessAssignment_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21649:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21650:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21730:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21731:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21650:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21651:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21731:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21732:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getProcessBlipCrossReference_4_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21652:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21653:4: RULE_ID
+            // InternalPerspectiveDsl.g:21733:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21734:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getProcessBlipIDTerminalRuleCall_4_1_0_1()); 
@@ -70980,23 +71268,23 @@
 
 
     // $ANTLR start "rule__Perspective__UserTaskAssignment_4_3"
-    // InternalPerspectiveDsl.g:21664:1: rule__Perspective__UserTaskAssignment_4_3 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21745:1: rule__Perspective__UserTaskAssignment_4_3 : ( ( RULE_ID ) ) ;
     public final void rule__Perspective__UserTaskAssignment_4_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21668:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21669:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21749:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21750:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21669:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21670:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21750:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21751:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskCrossReference_4_3_0()); 
             }
-            // InternalPerspectiveDsl.g:21671:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21672:4: RULE_ID
+            // InternalPerspectiveDsl.g:21752:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21753:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1()); 
@@ -71033,17 +71321,17 @@
 
 
     // $ANTLR start "rule__Perspective__IconURIAssignment_5_0_1"
-    // InternalPerspectiveDsl.g:21683:1: rule__Perspective__IconURIAssignment_5_0_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21764:1: rule__Perspective__IconURIAssignment_5_0_1 : ( RULE_STRING ) ;
     public final void rule__Perspective__IconURIAssignment_5_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21687:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21688:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21768:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21769:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21688:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21689:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21769:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21770:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getIconURISTRINGTerminalRuleCall_5_0_1_0()); 
@@ -71074,17 +71362,17 @@
 
 
     // $ANTLR start "rule__Perspective__AccessibilityPhraseAssignment_5_1_1"
-    // InternalPerspectiveDsl.g:21698:1: rule__Perspective__AccessibilityPhraseAssignment_5_1_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21779:1: rule__Perspective__AccessibilityPhraseAssignment_5_1_1 : ( RULE_STRING ) ;
     public final void rule__Perspective__AccessibilityPhraseAssignment_5_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21702:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21703:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21783:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21784:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21703:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21704:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21784:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21785:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_5_1_1_0()); 
@@ -71115,23 +71403,23 @@
 
 
     // $ANTLR start "rule__Perspective__ToolbarAssignment_5_2_1"
-    // InternalPerspectiveDsl.g:21713:1: rule__Perspective__ToolbarAssignment_5_2_1 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21794:1: rule__Perspective__ToolbarAssignment_5_2_1 : ( ( RULE_ID ) ) ;
     public final void rule__Perspective__ToolbarAssignment_5_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21717:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21718:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21798:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21799:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21718:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21719:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21799:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21800:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarCrossReference_5_2_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21720:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21721:4: RULE_ID
+            // InternalPerspectiveDsl.g:21801:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21802:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getToolbarActionToolbarIDTerminalRuleCall_5_2_1_0_1()); 
@@ -71168,17 +71456,17 @@
 
 
     // $ANTLR start "rule__Perspective__ElementsAssignment_7"
-    // InternalPerspectiveDsl.g:21732:1: rule__Perspective__ElementsAssignment_7 : ( rulePerspectiveElement ) ;
+    // InternalPerspectiveDsl.g:21813:1: rule__Perspective__ElementsAssignment_7 : ( rulePerspectiveElement ) ;
     public final void rule__Perspective__ElementsAssignment_7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21736:1: ( ( rulePerspectiveElement ) )
-            // InternalPerspectiveDsl.g:21737:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21817:1: ( ( rulePerspectiveElement ) )
+            // InternalPerspectiveDsl.g:21818:2: ( rulePerspectiveElement )
             {
-            // InternalPerspectiveDsl.g:21737:2: ( rulePerspectiveElement )
-            // InternalPerspectiveDsl.g:21738:3: rulePerspectiveElement
+            // InternalPerspectiveDsl.g:21818:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21819:3: rulePerspectiveElement
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getElementsPerspectiveElementParserRuleCall_7_0()); 
@@ -71213,17 +71501,17 @@
 
 
     // $ANTLR start "rule__Perspective__EventmanagerAssignment_8_1"
-    // InternalPerspectiveDsl.g:21747:1: rule__Perspective__EventmanagerAssignment_8_1 : ( rulePerspectiveEventManager ) ;
+    // InternalPerspectiveDsl.g:21828:1: rule__Perspective__EventmanagerAssignment_8_1 : ( rulePerspectiveEventManager ) ;
     public final void rule__Perspective__EventmanagerAssignment_8_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21751:1: ( ( rulePerspectiveEventManager ) )
-            // InternalPerspectiveDsl.g:21752:2: ( rulePerspectiveEventManager )
+            // InternalPerspectiveDsl.g:21832:1: ( ( rulePerspectiveEventManager ) )
+            // InternalPerspectiveDsl.g:21833:2: ( rulePerspectiveEventManager )
             {
-            // InternalPerspectiveDsl.g:21752:2: ( rulePerspectiveEventManager )
-            // InternalPerspectiveDsl.g:21753:3: rulePerspectiveEventManager
+            // InternalPerspectiveDsl.g:21833:2: ( rulePerspectiveEventManager )
+            // InternalPerspectiveDsl.g:21834:3: rulePerspectiveEventManager
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveAccess().getEventmanagerPerspectiveEventManagerParserRuleCall_8_1_0()); 
@@ -71258,17 +71546,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__ElementIdAssignment_2"
-    // InternalPerspectiveDsl.g:21762:1: rule__PerspectiveSashContainer__ElementIdAssignment_2 : ( RULE_ID ) ;
+    // InternalPerspectiveDsl.g:21843:1: rule__PerspectiveSashContainer__ElementIdAssignment_2 : ( RULE_ID ) ;
     public final void rule__PerspectiveSashContainer__ElementIdAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21766:1: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21767:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21847:1: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21848:2: ( RULE_ID )
             {
-            // InternalPerspectiveDsl.g:21767:2: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21768:3: RULE_ID
+            // InternalPerspectiveDsl.g:21848:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21849:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getElementIdIDTerminalRuleCall_2_0()); 
@@ -71299,17 +71587,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__OrientationAssignment_3_0_1"
-    // InternalPerspectiveDsl.g:21777:1: rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 : ( ruleSashOrientation ) ;
+    // InternalPerspectiveDsl.g:21858:1: rule__PerspectiveSashContainer__OrientationAssignment_3_0_1 : ( ruleSashOrientation ) ;
     public final void rule__PerspectiveSashContainer__OrientationAssignment_3_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21781:1: ( ( ruleSashOrientation ) )
-            // InternalPerspectiveDsl.g:21782:2: ( ruleSashOrientation )
+            // InternalPerspectiveDsl.g:21862:1: ( ( ruleSashOrientation ) )
+            // InternalPerspectiveDsl.g:21863:2: ( ruleSashOrientation )
             {
-            // InternalPerspectiveDsl.g:21782:2: ( ruleSashOrientation )
-            // InternalPerspectiveDsl.g:21783:3: ruleSashOrientation
+            // InternalPerspectiveDsl.g:21863:2: ( ruleSashOrientation )
+            // InternalPerspectiveDsl.g:21864:3: ruleSashOrientation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getOrientationSashOrientationEnumRuleCall_3_0_1_0()); 
@@ -71344,23 +71632,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:21792:1: rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21873:1: rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveSashContainer__SelectedElementAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21796:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21797:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21877:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21878:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21797:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21798:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21878:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21879:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementCrossReference_3_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21799:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21800:4: RULE_ID
+            // InternalPerspectiveDsl.g:21880:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21881:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getSelectedElementPerspectiveElementIDTerminalRuleCall_3_1_1_0_1()); 
@@ -71397,17 +71685,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1"
-    // InternalPerspectiveDsl.g:21811:1: rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21892:1: rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1 : ( RULE_STRING ) ;
     public final void rule__PerspectiveSashContainer__ContainerDataAssignment_3_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21815:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21816:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21896:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21897:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21816:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21817:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21897:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21898:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); 
@@ -71438,17 +71726,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1"
-    // InternalPerspectiveDsl.g:21826:1: rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:21907:1: rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1 : ( RULE_STRING ) ;
     public final void rule__PerspectiveSashContainer__AccessibilityPhraseAssignment_3_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21830:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21831:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21911:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21912:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21831:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21832:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21912:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21913:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); 
@@ -71479,17 +71767,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSashContainer__ElementsAssignment_5"
-    // InternalPerspectiveDsl.g:21841:1: rule__PerspectiveSashContainer__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
+    // InternalPerspectiveDsl.g:21922:1: rule__PerspectiveSashContainer__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
     public final void rule__PerspectiveSashContainer__ElementsAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21845:1: ( ( rulePerspectiveElement ) )
-            // InternalPerspectiveDsl.g:21846:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21926:1: ( ( rulePerspectiveElement ) )
+            // InternalPerspectiveDsl.g:21927:2: ( rulePerspectiveElement )
             {
-            // InternalPerspectiveDsl.g:21846:2: ( rulePerspectiveElement )
-            // InternalPerspectiveDsl.g:21847:3: rulePerspectiveElement
+            // InternalPerspectiveDsl.g:21927:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:21928:3: rulePerspectiveElement
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSashContainerAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
@@ -71524,17 +71812,17 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__ElementIdAssignment_2"
-    // InternalPerspectiveDsl.g:21856:1: rule__PerspectivePartStack__ElementIdAssignment_2 : ( RULE_ID ) ;
+    // InternalPerspectiveDsl.g:21937:1: rule__PerspectivePartStack__ElementIdAssignment_2 : ( RULE_ID ) ;
     public final void rule__PerspectivePartStack__ElementIdAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21860:1: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21861:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21941:1: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21942:2: ( RULE_ID )
             {
-            // InternalPerspectiveDsl.g:21861:2: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21862:3: RULE_ID
+            // InternalPerspectiveDsl.g:21942:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21943:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getElementIdIDTerminalRuleCall_2_0()); 
@@ -71565,23 +71853,23 @@
 
 
     // $ANTLR start "rule__PerspectivePartStack__SelectedElementAssignment_3_0_1"
-    // InternalPerspectiveDsl.g:21871:1: rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:21952:1: rule__PerspectivePartStack__SelectedElementAssignment_3_0_1 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectivePartStack__SelectedElementAssignment_3_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21875:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:21876:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21956:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21957:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21876:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:21877:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21957:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21958:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartCrossReference_3_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:21878:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:21879:4: RULE_ID
+            // InternalPerspectiveDsl.g:21959:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21960:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1()); 
@@ -71617,25 +71905,37 @@
     // $ANTLR end "rule__PerspectivePartStack__SelectedElementAssignment_3_0_1"
 
 
-    // $ANTLR start "rule__PerspectivePartStack__ContainerDataAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:21890:1: rule__PerspectivePartStack__ContainerDataAssignment_3_1_1 : ( RULE_STRING ) ;
-    public final void rule__PerspectivePartStack__ContainerDataAssignment_3_1_1() throws RecognitionException {
+    // $ANTLR start "rule__PerspectivePartStack__SynchronizeAssignment_3_1_1"
+    // InternalPerspectiveDsl.g:21971:1: rule__PerspectivePartStack__SynchronizeAssignment_3_1_1 : ( ( RULE_ID ) ) ;
+    public final void rule__PerspectivePartStack__SynchronizeAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21894:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21895:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21975:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:21976:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:21895:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21896:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21976:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:21977:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); 
+               before(grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackCrossReference_3_1_1_0()); 
             }
-            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            // InternalPerspectiveDsl.g:21978:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:21979:4: RULE_ID
+            {
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0()); 
+               before(grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackIDTerminalRuleCall_3_1_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackIDTerminalRuleCall_3_1_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackCrossReference_3_1_1_0()); 
             }
 
             }
@@ -71655,28 +71955,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__PerspectivePartStack__ContainerDataAssignment_3_1_1"
+    // $ANTLR end "rule__PerspectivePartStack__SynchronizeAssignment_3_1_1"
 
 
-    // $ANTLR start "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1"
-    // InternalPerspectiveDsl.g:21905:1: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1 : ( RULE_STRING ) ;
-    public final void rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1() throws RecognitionException {
+    // $ANTLR start "rule__PerspectivePartStack__ContainerDataAssignment_3_2_1"
+    // InternalPerspectiveDsl.g:21990:1: rule__PerspectivePartStack__ContainerDataAssignment_3_2_1 : ( RULE_STRING ) ;
+    public final void rule__PerspectivePartStack__ContainerDataAssignment_3_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21909:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21910:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21994:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:21995:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21910:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21911:3: RULE_STRING
+            // InternalPerspectiveDsl.g:21995:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:21996:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); 
+               before(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); 
             }
             match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0()); 
+               after(grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0()); 
             }
 
             }
@@ -71696,21 +71996,62 @@
         }
         return ;
     }
-    // $ANTLR end "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_2_1"
+    // $ANTLR end "rule__PerspectivePartStack__ContainerDataAssignment_3_2_1"
+
+
+    // $ANTLR start "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1"
+    // InternalPerspectiveDsl.g:22005:1: rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1 : ( RULE_STRING ) ;
+    public final void rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalPerspectiveDsl.g:22009:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:22010:2: ( RULE_STRING )
+            {
+            // InternalPerspectiveDsl.g:22010:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22011:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerspectivePartStack__AccessibilityPhraseAssignment_3_3_1"
 
 
     // $ANTLR start "rule__PerspectivePartStack__ElementsAssignment_5"
-    // InternalPerspectiveDsl.g:21920:1: rule__PerspectivePartStack__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
+    // InternalPerspectiveDsl.g:22020:1: rule__PerspectivePartStack__ElementsAssignment_5 : ( rulePerspectiveElement ) ;
     public final void rule__PerspectivePartStack__ElementsAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21924:1: ( ( rulePerspectiveElement ) )
-            // InternalPerspectiveDsl.g:21925:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:22024:1: ( ( rulePerspectiveElement ) )
+            // InternalPerspectiveDsl.g:22025:2: ( rulePerspectiveElement )
             {
-            // InternalPerspectiveDsl.g:21925:2: ( rulePerspectiveElement )
-            // InternalPerspectiveDsl.g:21926:3: rulePerspectiveElement
+            // InternalPerspectiveDsl.g:22025:2: ( rulePerspectiveElement )
+            // InternalPerspectiveDsl.g:22026:3: rulePerspectiveElement
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0()); 
@@ -71745,17 +72086,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__ElementIdAssignment_2"
-    // InternalPerspectiveDsl.g:21935:1: rule__PerspectivePart__ElementIdAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    // InternalPerspectiveDsl.g:22035:1: rule__PerspectivePart__ElementIdAssignment_2 : ( ruleTRANSLATABLEID ) ;
     public final void rule__PerspectivePart__ElementIdAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21939:1: ( ( ruleTRANSLATABLEID ) )
-            // InternalPerspectiveDsl.g:21940:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:22039:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalPerspectiveDsl.g:22040:2: ( ruleTRANSLATABLEID )
             {
-            // InternalPerspectiveDsl.g:21940:2: ( ruleTRANSLATABLEID )
-            // InternalPerspectiveDsl.g:21941:3: ruleTRANSLATABLEID
+            // InternalPerspectiveDsl.g:22040:2: ( ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:22041:3: ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getElementIdTRANSLATABLEIDParserRuleCall_2_0()); 
@@ -71790,17 +72131,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__ContainerDataAssignment_3_0_1"
-    // InternalPerspectiveDsl.g:21950:1: rule__PerspectivePart__ContainerDataAssignment_3_0_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:22050:1: rule__PerspectivePart__ContainerDataAssignment_3_0_1 : ( RULE_STRING ) ;
     public final void rule__PerspectivePart__ContainerDataAssignment_3_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21954:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21955:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22054:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:22055:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21955:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21956:3: RULE_STRING
+            // InternalPerspectiveDsl.g:22055:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22056:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getContainerDataSTRINGTerminalRuleCall_3_0_1_0()); 
@@ -71831,17 +72172,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:21965:1: rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:22065:1: rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1 : ( RULE_STRING ) ;
     public final void rule__PerspectivePart__AccessibilityPhraseAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21969:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21970:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22069:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:22070:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21970:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21971:3: RULE_STRING
+            // InternalPerspectiveDsl.g:22070:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22071:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_1_1_0()); 
@@ -71872,17 +72213,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__IconURIAssignment_3_2_1"
-    // InternalPerspectiveDsl.g:21980:1: rule__PerspectivePart__IconURIAssignment_3_2_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:22080:1: rule__PerspectivePart__IconURIAssignment_3_2_1 : ( RULE_STRING ) ;
     public final void rule__PerspectivePart__IconURIAssignment_3_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21984:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:21985:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22084:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:22085:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:21985:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:21986:3: RULE_STRING
+            // InternalPerspectiveDsl.g:22085:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22086:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIconURISTRINGTerminalRuleCall_3_2_1_0()); 
@@ -71913,17 +72254,17 @@
 
 
     // $ANTLR start "rule__PerspectivePart__ViewAssignment_3_3_1"
-    // InternalPerspectiveDsl.g:21995:1: rule__PerspectivePart__ViewAssignment_3_3_1 : ( rulePerspectiveView ) ;
+    // InternalPerspectiveDsl.g:22095:1: rule__PerspectivePart__ViewAssignment_3_3_1 : ( rulePerspectiveView ) ;
     public final void rule__PerspectivePart__ViewAssignment_3_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:21999:1: ( ( rulePerspectiveView ) )
-            // InternalPerspectiveDsl.g:22000:2: ( rulePerspectiveView )
+            // InternalPerspectiveDsl.g:22099:1: ( ( rulePerspectiveView ) )
+            // InternalPerspectiveDsl.g:22100:2: ( rulePerspectiveView )
             {
-            // InternalPerspectiveDsl.g:22000:2: ( rulePerspectiveView )
-            // InternalPerspectiveDsl.g:22001:3: rulePerspectiveView
+            // InternalPerspectiveDsl.g:22100:2: ( rulePerspectiveView )
+            // InternalPerspectiveDsl.g:22101:3: rulePerspectiveView
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getViewPerspectiveViewParserRuleCall_3_3_1_0()); 
@@ -71958,28 +72299,28 @@
 
 
     // $ANTLR start "rule__PerspectivePart__IsClosableAssignment_3_4"
-    // InternalPerspectiveDsl.g:22010:1: rule__PerspectivePart__IsClosableAssignment_3_4 : ( ( 'isClosable' ) ) ;
+    // InternalPerspectiveDsl.g:22110:1: rule__PerspectivePart__IsClosableAssignment_3_4 : ( ( 'isClosable' ) ) ;
     public final void rule__PerspectivePart__IsClosableAssignment_3_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22014:1: ( ( ( 'isClosable' ) ) )
-            // InternalPerspectiveDsl.g:22015:2: ( ( 'isClosable' ) )
+            // InternalPerspectiveDsl.g:22114:1: ( ( ( 'isClosable' ) ) )
+            // InternalPerspectiveDsl.g:22115:2: ( ( 'isClosable' ) )
             {
-            // InternalPerspectiveDsl.g:22015:2: ( ( 'isClosable' ) )
-            // InternalPerspectiveDsl.g:22016:3: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:22115:2: ( ( 'isClosable' ) )
+            // InternalPerspectiveDsl.g:22116:3: ( 'isClosable' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
             }
-            // InternalPerspectiveDsl.g:22017:3: ( 'isClosable' )
-            // InternalPerspectiveDsl.g:22018:4: 'isClosable'
+            // InternalPerspectiveDsl.g:22117:3: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:22118:4: 'isClosable'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
             }
-            match(input,125,FOLLOW_2); if (state.failed) return ;
+            match(input,127,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0()); 
             }
@@ -72011,17 +72352,17 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__NameAssignment_1"
-    // InternalPerspectiveDsl.g:22029:1: rule__PerspectiveEventManager__NameAssignment_1 : ( RULE_ID ) ;
+    // InternalPerspectiveDsl.g:22129:1: rule__PerspectiveEventManager__NameAssignment_1 : ( RULE_ID ) ;
     public final void rule__PerspectiveEventManager__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22033:1: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22034:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22133:1: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22134:2: ( RULE_ID )
             {
-            // InternalPerspectiveDsl.g:22034:2: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22035:3: RULE_ID
+            // InternalPerspectiveDsl.g:22134:2: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22135:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventManagerAccess().getNameIDTerminalRuleCall_1_0()); 
@@ -72052,17 +72393,17 @@
 
 
     // $ANTLR start "rule__PerspectiveEventManager__EventsAssignment_3"
-    // InternalPerspectiveDsl.g:22044:1: rule__PerspectiveEventManager__EventsAssignment_3 : ( rulePerspectiveEvent ) ;
+    // InternalPerspectiveDsl.g:22144:1: rule__PerspectiveEventManager__EventsAssignment_3 : ( rulePerspectiveEvent ) ;
     public final void rule__PerspectiveEventManager__EventsAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22048:1: ( ( rulePerspectiveEvent ) )
-            // InternalPerspectiveDsl.g:22049:2: ( rulePerspectiveEvent )
+            // InternalPerspectiveDsl.g:22148:1: ( ( rulePerspectiveEvent ) )
+            // InternalPerspectiveDsl.g:22149:2: ( rulePerspectiveEvent )
             {
-            // InternalPerspectiveDsl.g:22049:2: ( rulePerspectiveEvent )
-            // InternalPerspectiveDsl.g:22050:3: rulePerspectiveEvent
+            // InternalPerspectiveDsl.g:22149:2: ( rulePerspectiveEvent )
+            // InternalPerspectiveDsl.g:22150:3: rulePerspectiveEvent
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventManagerAccess().getEventsPerspectiveEventParserRuleCall_3_0()); 
@@ -72097,23 +72438,23 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__TargetAssignment_2"
-    // InternalPerspectiveDsl.g:22059:1: rule__PerspectiveEvent__TargetAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22159:1: rule__PerspectiveEvent__TargetAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveEvent__TargetAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22063:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22064:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22163:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22164:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22064:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22065:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22164:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22165:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getTargetPerspectivePartCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22066:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22067:4: RULE_ID
+            // InternalPerspectiveDsl.g:22166:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22167:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getTargetPerspectivePartIDTerminalRuleCall_2_0_1()); 
@@ -72150,23 +72491,23 @@
 
 
     // $ANTLR start "rule__PerspectiveEvent__AllowedsourcesAssignment_5"
-    // InternalPerspectiveDsl.g:22078:1: rule__PerspectiveEvent__AllowedsourcesAssignment_5 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22178:1: rule__PerspectiveEvent__AllowedsourcesAssignment_5 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveEvent__AllowedsourcesAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22082:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22083:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22182:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22183:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22083:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22084:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22183:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22184:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesPerspectivePartCrossReference_5_0()); 
             }
-            // InternalPerspectiveDsl.g:22085:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22086:4: RULE_ID
+            // InternalPerspectiveDsl.g:22185:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22186:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveEventAccess().getAllowedsourcesPerspectivePartIDTerminalRuleCall_5_0_1()); 
@@ -72203,23 +72544,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSelection__RefAssignment_2"
-    // InternalPerspectiveDsl.g:22097:1: rule__PerspectiveSelection__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22197:1: rule__PerspectiveSelection__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveSelection__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22101:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22102:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22201:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22202:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22102:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22103:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22202:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22203:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getRefTableCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22104:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22105:4: RULE_ID
+            // InternalPerspectiveDsl.g:22204:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22205:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSelectionAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
@@ -72256,23 +72597,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTable__RefAssignment_2"
-    // InternalPerspectiveDsl.g:22116:1: rule__PerspectiveTable__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22216:1: rule__PerspectiveTable__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveTable__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22120:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22121:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22220:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22221:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22121:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22122:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22221:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22222:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getRefTableCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22123:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22124:4: RULE_ID
+            // InternalPerspectiveDsl.g:22223:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22224:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTableAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
@@ -72309,23 +72650,23 @@
 
 
     // $ANTLR start "rule__PerspectiveGrid__RefAssignment_2"
-    // InternalPerspectiveDsl.g:22135:1: rule__PerspectiveGrid__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22235:1: rule__PerspectiveGrid__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveGrid__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22139:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22140:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22239:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22240:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22140:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22141:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22240:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22241:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getRefTableCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22142:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22143:4: RULE_ID
+            // InternalPerspectiveDsl.g:22242:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22243:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveGridAccess().getRefTableIDTerminalRuleCall_2_0_1()); 
@@ -72362,23 +72703,23 @@
 
 
     // $ANTLR start "rule__PerspectiveChart__RefAssignment_2"
-    // InternalPerspectiveDsl.g:22154:1: rule__PerspectiveChart__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22254:1: rule__PerspectiveChart__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveChart__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22158:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22159:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22258:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22259:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22159:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22160:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22259:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22260:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getRefChartCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22161:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22162:4: RULE_ID
+            // InternalPerspectiveDsl.g:22261:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22262:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveChartAccess().getRefChartIDTerminalRuleCall_2_0_1()); 
@@ -72415,23 +72756,23 @@
 
 
     // $ANTLR start "rule__PerspectiveReport__RefAssignment_2"
-    // InternalPerspectiveDsl.g:22173:1: rule__PerspectiveReport__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22273:1: rule__PerspectiveReport__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveReport__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22177:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22178:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22277:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22278:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22178:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22179:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22278:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22279:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getRefReportCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22180:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22181:4: RULE_ID
+            // InternalPerspectiveDsl.g:22280:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22281:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveReportAccess().getRefReportIDTerminalRuleCall_2_0_1()); 
@@ -72468,23 +72809,23 @@
 
 
     // $ANTLR start "rule__PerspectiveOrganization__RefAssignment_2"
-    // InternalPerspectiveDsl.g:22192:1: rule__PerspectiveOrganization__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22292:1: rule__PerspectiveOrganization__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveOrganization__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22196:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22197:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22296:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22297:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22197:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22198:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22297:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22298:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22199:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22200:4: RULE_ID
+            // InternalPerspectiveDsl.g:22299:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22300:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveOrganizationAccess().getRefOrganizationIDTerminalRuleCall_2_0_1()); 
@@ -72521,23 +72862,23 @@
 
 
     // $ANTLR start "rule__PerspectiveTopology__RefAssignment_2"
-    // InternalPerspectiveDsl.g:22211:1: rule__PerspectiveTopology__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22311:1: rule__PerspectiveTopology__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveTopology__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22215:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22216:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22315:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22316:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22216:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22217:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22316:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22317:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22218:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22219:4: RULE_ID
+            // InternalPerspectiveDsl.g:22318:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22319:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTopologyAccess().getRefTopologyIDTerminalRuleCall_2_0_1()); 
@@ -72574,23 +72915,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDialog__RefAssignment_2"
-    // InternalPerspectiveDsl.g:22230:1: rule__PerspectiveDialog__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22330:1: rule__PerspectiveDialog__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveDialog__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22234:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22235:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22334:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22335:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22235:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22236:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22335:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22336:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getRefDialogCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22237:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22238:4: RULE_ID
+            // InternalPerspectiveDsl.g:22337:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22338:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDialogAccess().getRefDialogIDTerminalRuleCall_2_0_1()); 
@@ -72627,23 +72968,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__DtoRefAssignment_3"
-    // InternalPerspectiveDsl.g:22249:1: rule__PerspectiveKanban__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22349:1: rule__PerspectiveKanban__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveKanban__DtoRefAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22253:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22254:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22353:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22354:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22254:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22255:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22354:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22355:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoCrossReference_3_0()); 
             }
-            // InternalPerspectiveDsl.g:22256:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22257:4: RULE_ID
+            // InternalPerspectiveDsl.g:22356:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22357:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); 
@@ -72680,23 +73021,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__CardRefAssignment_5"
-    // InternalPerspectiveDsl.g:22268:1: rule__PerspectiveKanban__CardRefAssignment_5 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22368:1: rule__PerspectiveKanban__CardRefAssignment_5 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveKanban__CardRefAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22272:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22273:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22372:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22373:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22273:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22274:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22373:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22374:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogCrossReference_5_0()); 
             }
-            // InternalPerspectiveDsl.g:22275:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22276:4: RULE_ID
+            // InternalPerspectiveDsl.g:22375:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22376:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getCardRefDialogIDTerminalRuleCall_5_0_1()); 
@@ -72733,23 +73074,23 @@
 
 
     // $ANTLR start "rule__PerspectiveKanban__DialogRefAssignment_7"
-    // InternalPerspectiveDsl.g:22287:1: rule__PerspectiveKanban__DialogRefAssignment_7 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22387:1: rule__PerspectiveKanban__DialogRefAssignment_7 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveKanban__DialogRefAssignment_7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22291:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22292:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22391:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22392:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22292:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22293:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22392:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22393:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogCrossReference_7_0()); 
             }
-            // InternalPerspectiveDsl.g:22294:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22295:4: RULE_ID
+            // InternalPerspectiveDsl.g:22394:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22395:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveKanbanAccess().getDialogRefDialogIDTerminalRuleCall_7_0_1()); 
@@ -72786,23 +73127,23 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__DtoRefAssignment_3"
-    // InternalPerspectiveDsl.g:22306:1: rule__PerspectiveSearch__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22406:1: rule__PerspectiveSearch__DtoRefAssignment_3 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveSearch__DtoRefAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22310:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22311:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22410:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22411:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22311:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22312:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22411:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22412:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoCrossReference_3_0()); 
             }
-            // InternalPerspectiveDsl.g:22313:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22314:4: RULE_ID
+            // InternalPerspectiveDsl.g:22413:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22414:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDtoRefLDtoIDTerminalRuleCall_3_0_1()); 
@@ -72839,17 +73180,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__DepthAssignment_4_0_1"
-    // InternalPerspectiveDsl.g:22325:1: rule__PerspectiveSearch__DepthAssignment_4_0_1 : ( RULE_INT ) ;
+    // InternalPerspectiveDsl.g:22425:1: rule__PerspectiveSearch__DepthAssignment_4_0_1 : ( RULE_INT ) ;
     public final void rule__PerspectiveSearch__DepthAssignment_4_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22329:1: ( ( RULE_INT ) )
-            // InternalPerspectiveDsl.g:22330:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:22429:1: ( ( RULE_INT ) )
+            // InternalPerspectiveDsl.g:22430:2: ( RULE_INT )
             {
-            // InternalPerspectiveDsl.g:22330:2: ( RULE_INT )
-            // InternalPerspectiveDsl.g:22331:3: RULE_INT
+            // InternalPerspectiveDsl.g:22430:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:22431:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getDepthINTTerminalRuleCall_4_0_1_0()); 
@@ -72880,17 +73221,17 @@
 
 
     // $ANTLR start "rule__PerspectiveSearch__FilterColsAssignment_4_1_1"
-    // InternalPerspectiveDsl.g:22340:1: rule__PerspectiveSearch__FilterColsAssignment_4_1_1 : ( RULE_INT ) ;
+    // InternalPerspectiveDsl.g:22440:1: rule__PerspectiveSearch__FilterColsAssignment_4_1_1 : ( RULE_INT ) ;
     public final void rule__PerspectiveSearch__FilterColsAssignment_4_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22344:1: ( ( RULE_INT ) )
-            // InternalPerspectiveDsl.g:22345:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:22444:1: ( ( RULE_INT ) )
+            // InternalPerspectiveDsl.g:22445:2: ( RULE_INT )
             {
-            // InternalPerspectiveDsl.g:22345:2: ( RULE_INT )
-            // InternalPerspectiveDsl.g:22346:3: RULE_INT
+            // InternalPerspectiveDsl.g:22445:2: ( RULE_INT )
+            // InternalPerspectiveDsl.g:22446:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveSearchAccess().getFilterColsINTTerminalRuleCall_4_1_1_0()); 
@@ -72921,23 +73262,23 @@
 
 
     // $ANTLR start "rule__PerspectiveDataInterchange__RefAssignment_2"
-    // InternalPerspectiveDsl.g:22355:1: rule__PerspectiveDataInterchange__RefAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalPerspectiveDsl.g:22455:1: rule__PerspectiveDataInterchange__RefAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__PerspectiveDataInterchange__RefAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22359:1: ( ( ( RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:22360:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22459:1: ( ( ( RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:22460:2: ( ( RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:22360:2: ( ( RULE_ID ) )
-            // InternalPerspectiveDsl.g:22361:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22460:2: ( ( RULE_ID ) )
+            // InternalPerspectiveDsl.g:22461:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangeGroupCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22362:3: ( RULE_ID )
-            // InternalPerspectiveDsl.g:22363:4: RULE_ID
+            // InternalPerspectiveDsl.g:22462:3: ( RULE_ID )
+            // InternalPerspectiveDsl.g:22463:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDataInterchangeAccess().getRefDataInterchangeGroupIDTerminalRuleCall_2_0_1()); 
@@ -72974,17 +73315,17 @@
 
 
     // $ANTLR start "rule__PerspectiveTitle__HtmlNameAssignment_2"
-    // InternalPerspectiveDsl.g:22374:1: rule__PerspectiveTitle__HtmlNameAssignment_2 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:22474:1: rule__PerspectiveTitle__HtmlNameAssignment_2 : ( RULE_STRING ) ;
     public final void rule__PerspectiveTitle__HtmlNameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22378:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:22379:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22478:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:22479:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:22379:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:22380:3: RULE_STRING
+            // InternalPerspectiveDsl.g:22479:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22480:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveTitleAccess().getHtmlNameSTRINGTerminalRuleCall_2_0()); 
@@ -73015,17 +73356,17 @@
 
 
     // $ANTLR start "rule__PerspectiveDashboard__NameAssignment_2"
-    // InternalPerspectiveDsl.g:22389:1: rule__PerspectiveDashboard__NameAssignment_2 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:22489:1: rule__PerspectiveDashboard__NameAssignment_2 : ( RULE_STRING ) ;
     public final void rule__PerspectiveDashboard__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22393:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:22394:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22493:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:22494:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:22394:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:22395:3: RULE_STRING
+            // InternalPerspectiveDsl.g:22494:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22495:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveDashboardAccess().getNameSTRINGTerminalRuleCall_2_0()); 
@@ -73056,17 +73397,17 @@
 
 
     // $ANTLR start "rule__PerspectiveBrowser__UrlAssignment_3"
-    // InternalPerspectiveDsl.g:22404:1: rule__PerspectiveBrowser__UrlAssignment_3 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:22504:1: rule__PerspectiveBrowser__UrlAssignment_3 : ( RULE_STRING ) ;
     public final void rule__PerspectiveBrowser__UrlAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22408:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:22409:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22508:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:22509:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:22409:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:22410:3: RULE_STRING
+            // InternalPerspectiveDsl.g:22509:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:22510:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getPerspectiveBrowserAccess().getUrlSTRINGTerminalRuleCall_3_0()); 
@@ -73097,23 +73438,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__StaticAssignment_2_0_0"
-    // InternalPerspectiveDsl.g:22419:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
+    // InternalPerspectiveDsl.g:22519:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
     public final void rule__XImportDeclaration__StaticAssignment_2_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22423:1: ( ( ( 'static' ) ) )
-            // InternalPerspectiveDsl.g:22424:2: ( ( 'static' ) )
+            // InternalPerspectiveDsl.g:22523:1: ( ( ( 'static' ) ) )
+            // InternalPerspectiveDsl.g:22524:2: ( ( 'static' ) )
             {
-            // InternalPerspectiveDsl.g:22424:2: ( ( 'static' ) )
-            // InternalPerspectiveDsl.g:22425:3: ( 'static' )
+            // InternalPerspectiveDsl.g:22524:2: ( ( 'static' ) )
+            // InternalPerspectiveDsl.g:22525:3: ( 'static' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:22426:3: ( 'static' )
-            // InternalPerspectiveDsl.g:22427:4: 'static'
+            // InternalPerspectiveDsl.g:22526:3: ( 'static' )
+            // InternalPerspectiveDsl.g:22527:4: 'static'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
@@ -73150,23 +73491,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ExtensionAssignment_2_0_1"
-    // InternalPerspectiveDsl.g:22438:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
+    // InternalPerspectiveDsl.g:22538:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
     public final void rule__XImportDeclaration__ExtensionAssignment_2_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22442:1: ( ( ( 'extension' ) ) )
-            // InternalPerspectiveDsl.g:22443:2: ( ( 'extension' ) )
+            // InternalPerspectiveDsl.g:22542:1: ( ( ( 'extension' ) ) )
+            // InternalPerspectiveDsl.g:22543:2: ( ( 'extension' ) )
             {
-            // InternalPerspectiveDsl.g:22443:2: ( ( 'extension' ) )
-            // InternalPerspectiveDsl.g:22444:3: ( 'extension' )
+            // InternalPerspectiveDsl.g:22543:2: ( ( 'extension' ) )
+            // InternalPerspectiveDsl.g:22544:3: ( 'extension' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22445:3: ( 'extension' )
-            // InternalPerspectiveDsl.g:22446:4: 'extension'
+            // InternalPerspectiveDsl.g:22545:3: ( 'extension' )
+            // InternalPerspectiveDsl.g:22546:4: 'extension'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
@@ -73203,23 +73544,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2"
-    // InternalPerspectiveDsl.g:22457:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
+    // InternalPerspectiveDsl.g:22557:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
     public final void rule__XImportDeclaration__ImportedTypeAssignment_2_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22461:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
-            // InternalPerspectiveDsl.g:22462:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalPerspectiveDsl.g:22561:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
+            // InternalPerspectiveDsl.g:22562:2: ( ( ruleQualifiedNameInStaticImport ) )
             {
-            // InternalPerspectiveDsl.g:22462:2: ( ( ruleQualifiedNameInStaticImport ) )
-            // InternalPerspectiveDsl.g:22463:3: ( ruleQualifiedNameInStaticImport )
+            // InternalPerspectiveDsl.g:22562:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalPerspectiveDsl.g:22563:3: ( ruleQualifiedNameInStaticImport )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22464:3: ( ruleQualifiedNameInStaticImport )
-            // InternalPerspectiveDsl.g:22465:4: ruleQualifiedNameInStaticImport
+            // InternalPerspectiveDsl.g:22564:3: ( ruleQualifiedNameInStaticImport )
+            // InternalPerspectiveDsl.g:22565:4: ruleQualifiedNameInStaticImport
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_2_0_2_0_1()); 
@@ -73260,23 +73601,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__WildcardAssignment_2_0_3_0"
-    // InternalPerspectiveDsl.g:22476:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
+    // InternalPerspectiveDsl.g:22576:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
     public final void rule__XImportDeclaration__WildcardAssignment_2_0_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22480:1: ( ( ( '*' ) ) )
-            // InternalPerspectiveDsl.g:22481:2: ( ( '*' ) )
+            // InternalPerspectiveDsl.g:22580:1: ( ( ( '*' ) ) )
+            // InternalPerspectiveDsl.g:22581:2: ( ( '*' ) )
             {
-            // InternalPerspectiveDsl.g:22481:2: ( ( '*' ) )
-            // InternalPerspectiveDsl.g:22482:3: ( '*' )
+            // InternalPerspectiveDsl.g:22581:2: ( ( '*' ) )
+            // InternalPerspectiveDsl.g:22582:3: ( '*' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:22483:3: ( '*' )
-            // InternalPerspectiveDsl.g:22484:4: '*'
+            // InternalPerspectiveDsl.g:22583:3: ( '*' )
+            // InternalPerspectiveDsl.g:22584:4: '*'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
@@ -73313,17 +73654,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__MemberNameAssignment_2_0_3_1"
-    // InternalPerspectiveDsl.g:22495:1: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:22595:1: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 : ( ruleValidID ) ;
     public final void rule__XImportDeclaration__MemberNameAssignment_2_0_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22499:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:22500:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:22599:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:22600:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:22500:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:22501:3: ruleValidID
+            // InternalPerspectiveDsl.g:22600:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:22601:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0()); 
@@ -73358,23 +73699,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_1"
-    // InternalPerspectiveDsl.g:22510:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:22610:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XImportDeclaration__ImportedTypeAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22514:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:22515:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:22614:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:22615:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:22515:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:22516:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:22615:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:22616:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22517:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:22518:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:22617:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:22618:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_2_1_0_1()); 
@@ -73415,17 +73756,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedNamespaceAssignment_2_2"
-    // InternalPerspectiveDsl.g:22529:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
+    // InternalPerspectiveDsl.g:22629:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
     public final void rule__XImportDeclaration__ImportedNamespaceAssignment_2_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22533:1: ( ( ruleQualifiedNameWithWildcard ) )
-            // InternalPerspectiveDsl.g:22534:2: ( ruleQualifiedNameWithWildcard )
+            // InternalPerspectiveDsl.g:22633:1: ( ( ruleQualifiedNameWithWildcard ) )
+            // InternalPerspectiveDsl.g:22634:2: ( ruleQualifiedNameWithWildcard )
             {
-            // InternalPerspectiveDsl.g:22534:2: ( ruleQualifiedNameWithWildcard )
-            // InternalPerspectiveDsl.g:22535:3: ruleQualifiedNameWithWildcard
+            // InternalPerspectiveDsl.g:22634:2: ( ruleQualifiedNameWithWildcard )
+            // InternalPerspectiveDsl.g:22635:3: ruleQualifiedNameWithWildcard
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0()); 
@@ -73460,28 +73801,28 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__FqnImportAssignment_2_3_0"
-    // InternalPerspectiveDsl.g:22544:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
+    // InternalPerspectiveDsl.g:22644:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
     public final void rule__XImportDeclaration__FqnImportAssignment_2_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22548:1: ( ( ( 'ns' ) ) )
-            // InternalPerspectiveDsl.g:22549:2: ( ( 'ns' ) )
+            // InternalPerspectiveDsl.g:22648:1: ( ( ( 'ns' ) ) )
+            // InternalPerspectiveDsl.g:22649:2: ( ( 'ns' ) )
             {
-            // InternalPerspectiveDsl.g:22549:2: ( ( 'ns' ) )
-            // InternalPerspectiveDsl.g:22550:3: ( 'ns' )
+            // InternalPerspectiveDsl.g:22649:2: ( ( 'ns' ) )
+            // InternalPerspectiveDsl.g:22650:3: ( 'ns' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:22551:3: ( 'ns' )
-            // InternalPerspectiveDsl.g:22552:4: 'ns'
+            // InternalPerspectiveDsl.g:22651:3: ( 'ns' )
+            // InternalPerspectiveDsl.g:22652:4: 'ns'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
-            match(input,126,FOLLOW_2); if (state.failed) return ;
+            match(input,128,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
@@ -73513,17 +73854,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1"
-    // InternalPerspectiveDsl.g:22563:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
+    // InternalPerspectiveDsl.g:22663:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
     public final void rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22567:1: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:22568:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:22667:1: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:22668:2: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:22568:2: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:22569:3: ruleQualifiedName
+            // InternalPerspectiveDsl.g:22668:2: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:22669:3: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0()); 
@@ -73558,23 +73899,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__AnnotationTypeAssignment_2"
-    // InternalPerspectiveDsl.g:22578:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:22678:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22582:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:22583:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:22682:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:22683:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:22583:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:22584:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:22683:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:22684:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:22585:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:22586:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:22685:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:22686:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeQualifiedNameParserRuleCall_2_0_1()); 
@@ -73615,17 +73956,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0"
-    // InternalPerspectiveDsl.g:22597:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 : ( ruleXAnnotationElementValuePair ) ;
+    // InternalPerspectiveDsl.g:22697:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 : ( ruleXAnnotationElementValuePair ) ;
     public final void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22601:1: ( ( ruleXAnnotationElementValuePair ) )
-            // InternalPerspectiveDsl.g:22602:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:22701:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalPerspectiveDsl.g:22702:2: ( ruleXAnnotationElementValuePair )
             {
-            // InternalPerspectiveDsl.g:22602:2: ( ruleXAnnotationElementValuePair )
-            // InternalPerspectiveDsl.g:22603:3: ruleXAnnotationElementValuePair
+            // InternalPerspectiveDsl.g:22702:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:22703:3: ruleXAnnotationElementValuePair
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
@@ -73660,17 +74001,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1"
-    // InternalPerspectiveDsl.g:22612:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 : ( ruleXAnnotationElementValuePair ) ;
+    // InternalPerspectiveDsl.g:22712:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 : ( ruleXAnnotationElementValuePair ) ;
     public final void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22616:1: ( ( ruleXAnnotationElementValuePair ) )
-            // InternalPerspectiveDsl.g:22617:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:22716:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalPerspectiveDsl.g:22717:2: ( ruleXAnnotationElementValuePair )
             {
-            // InternalPerspectiveDsl.g:22617:2: ( ruleXAnnotationElementValuePair )
-            // InternalPerspectiveDsl.g:22618:3: ruleXAnnotationElementValuePair
+            // InternalPerspectiveDsl.g:22717:2: ( ruleXAnnotationElementValuePair )
+            // InternalPerspectiveDsl.g:22718:3: ruleXAnnotationElementValuePair
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
@@ -73705,17 +74046,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ValueAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:22627:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
+    // InternalPerspectiveDsl.g:22727:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
     public final void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22631:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
-            // InternalPerspectiveDsl.g:22632:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalPerspectiveDsl.g:22731:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
+            // InternalPerspectiveDsl.g:22732:2: ( ruleXAnnotationElementValueOrCommaList )
             {
-            // InternalPerspectiveDsl.g:22632:2: ( ruleXAnnotationElementValueOrCommaList )
-            // InternalPerspectiveDsl.g:22633:3: ruleXAnnotationElementValueOrCommaList
+            // InternalPerspectiveDsl.g:22732:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalPerspectiveDsl.g:22733:3: ruleXAnnotationElementValueOrCommaList
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
@@ -73750,23 +74091,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0"
-    // InternalPerspectiveDsl.g:22642:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
+    // InternalPerspectiveDsl.g:22742:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
     public final void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22646:1: ( ( ( ruleValidID ) ) )
-            // InternalPerspectiveDsl.g:22647:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:22746:1: ( ( ( ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:22747:2: ( ( ruleValidID ) )
             {
-            // InternalPerspectiveDsl.g:22647:2: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:22648:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:22747:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:22748:3: ( ruleValidID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
             }
-            // InternalPerspectiveDsl.g:22649:3: ( ruleValidID )
-            // InternalPerspectiveDsl.g:22650:4: ruleValidID
+            // InternalPerspectiveDsl.g:22749:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:22750:4: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationValidIDParserRuleCall_0_0_0_0_1()); 
@@ -73807,17 +74148,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__ValueAssignment_1"
-    // InternalPerspectiveDsl.g:22661:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
+    // InternalPerspectiveDsl.g:22761:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
     public final void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22665:1: ( ( ruleXAnnotationElementValue ) )
-            // InternalPerspectiveDsl.g:22666:2: ( ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:22765:1: ( ( ruleXAnnotationElementValue ) )
+            // InternalPerspectiveDsl.g:22766:2: ( ruleXAnnotationElementValue )
             {
-            // InternalPerspectiveDsl.g:22666:2: ( ruleXAnnotationElementValue )
-            // InternalPerspectiveDsl.g:22667:3: ruleXAnnotationElementValue
+            // InternalPerspectiveDsl.g:22766:2: ( ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:22767:3: ruleXAnnotationElementValue
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
@@ -73852,17 +74193,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0"
-    // InternalPerspectiveDsl.g:22676:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:22776:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22680:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:22681:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22780:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:22781:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:22681:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:22682:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:22781:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22782:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
@@ -73897,17 +74238,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1"
-    // InternalPerspectiveDsl.g:22691:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:22791:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22695:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:22696:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22795:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:22796:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:22696:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:22697:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:22796:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22797:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
@@ -73942,17 +74283,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1"
-    // InternalPerspectiveDsl.g:22706:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:22806:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22710:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:22711:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22810:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:22811:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:22711:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:22712:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:22811:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22812:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
@@ -73987,17 +74328,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_0"
-    // InternalPerspectiveDsl.g:22721:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:22821:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22725:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:22726:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22825:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:22826:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:22726:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:22727:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:22826:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22827:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
@@ -74032,17 +74373,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1"
-    // InternalPerspectiveDsl.g:22736:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:22836:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22740:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:22741:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22840:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:22841:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:22741:2: ( ruleXAnnotationOrExpression )
-            // InternalPerspectiveDsl.g:22742:3: ruleXAnnotationOrExpression
+            // InternalPerspectiveDsl.g:22841:2: ( ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:22842:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
@@ -74077,23 +74418,23 @@
 
 
     // $ANTLR start "rule__XAssignment__FeatureAssignment_0_1"
-    // InternalPerspectiveDsl.g:22751:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
+    // InternalPerspectiveDsl.g:22851:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
     public final void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22755:1: ( ( ( ruleFeatureCallID ) ) )
-            // InternalPerspectiveDsl.g:22756:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:22855:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalPerspectiveDsl.g:22856:2: ( ( ruleFeatureCallID ) )
             {
-            // InternalPerspectiveDsl.g:22756:2: ( ( ruleFeatureCallID ) )
-            // InternalPerspectiveDsl.g:22757:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:22856:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:22857:3: ( ruleFeatureCallID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22758:3: ( ruleFeatureCallID )
-            // InternalPerspectiveDsl.g:22759:4: ruleFeatureCallID
+            // InternalPerspectiveDsl.g:22858:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:22859:4: ruleFeatureCallID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_1_0_1()); 
@@ -74134,17 +74475,17 @@
 
 
     // $ANTLR start "rule__XAssignment__ValueAssignment_0_3"
-    // InternalPerspectiveDsl.g:22770:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
+    // InternalPerspectiveDsl.g:22870:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
     public final void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22774:1: ( ( ruleXAssignment ) )
-            // InternalPerspectiveDsl.g:22775:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22874:1: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:22875:2: ( ruleXAssignment )
             {
-            // InternalPerspectiveDsl.g:22775:2: ( ruleXAssignment )
-            // InternalPerspectiveDsl.g:22776:3: ruleXAssignment
+            // InternalPerspectiveDsl.g:22875:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22876:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
@@ -74179,23 +74520,23 @@
 
 
     // $ANTLR start "rule__XAssignment__FeatureAssignment_1_1_0_0_1"
-    // InternalPerspectiveDsl.g:22785:1: rule__XAssignment__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpMultiAssign ) ) ;
+    // InternalPerspectiveDsl.g:22885:1: rule__XAssignment__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpMultiAssign ) ) ;
     public final void rule__XAssignment__FeatureAssignment_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22789:1: ( ( ( ruleOpMultiAssign ) ) )
-            // InternalPerspectiveDsl.g:22790:2: ( ( ruleOpMultiAssign ) )
+            // InternalPerspectiveDsl.g:22889:1: ( ( ( ruleOpMultiAssign ) ) )
+            // InternalPerspectiveDsl.g:22890:2: ( ( ruleOpMultiAssign ) )
             {
-            // InternalPerspectiveDsl.g:22790:2: ( ( ruleOpMultiAssign ) )
-            // InternalPerspectiveDsl.g:22791:3: ( ruleOpMultiAssign )
+            // InternalPerspectiveDsl.g:22890:2: ( ( ruleOpMultiAssign ) )
+            // InternalPerspectiveDsl.g:22891:3: ( ruleOpMultiAssign )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22792:3: ( ruleOpMultiAssign )
-            // InternalPerspectiveDsl.g:22793:4: ruleOpMultiAssign
+            // InternalPerspectiveDsl.g:22892:3: ( ruleOpMultiAssign )
+            // InternalPerspectiveDsl.g:22893:4: ruleOpMultiAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_1_1_0_0_1_0_1()); 
@@ -74236,17 +74577,17 @@
 
 
     // $ANTLR start "rule__XAssignment__RightOperandAssignment_1_1_1"
-    // InternalPerspectiveDsl.g:22804:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
+    // InternalPerspectiveDsl.g:22904:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
     public final void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22808:1: ( ( ruleXAssignment ) )
-            // InternalPerspectiveDsl.g:22809:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22908:1: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:22909:2: ( ruleXAssignment )
             {
-            // InternalPerspectiveDsl.g:22809:2: ( ruleXAssignment )
-            // InternalPerspectiveDsl.g:22810:3: ruleXAssignment
+            // InternalPerspectiveDsl.g:22909:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:22910:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
@@ -74281,23 +74622,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:22819:1: rule__XOrExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOr ) ) ;
+    // InternalPerspectiveDsl.g:22919:1: rule__XOrExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOr ) ) ;
     public final void rule__XOrExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22823:1: ( ( ( ruleOpOr ) ) )
-            // InternalPerspectiveDsl.g:22824:2: ( ( ruleOpOr ) )
+            // InternalPerspectiveDsl.g:22923:1: ( ( ( ruleOpOr ) ) )
+            // InternalPerspectiveDsl.g:22924:2: ( ( ruleOpOr ) )
             {
-            // InternalPerspectiveDsl.g:22824:2: ( ( ruleOpOr ) )
-            // InternalPerspectiveDsl.g:22825:3: ( ruleOpOr )
+            // InternalPerspectiveDsl.g:22924:2: ( ( ruleOpOr ) )
+            // InternalPerspectiveDsl.g:22925:3: ( ruleOpOr )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22826:3: ( ruleOpOr )
-            // InternalPerspectiveDsl.g:22827:4: ruleOpOr
+            // InternalPerspectiveDsl.g:22926:3: ( ruleOpOr )
+            // InternalPerspectiveDsl.g:22927:4: ruleOpOr
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementOpOrParserRuleCall_1_0_0_1_0_1()); 
@@ -74338,17 +74679,17 @@
 
 
     // $ANTLR start "rule__XOrExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:22838:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
+    // InternalPerspectiveDsl.g:22938:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
     public final void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22842:1: ( ( ruleXAndExpression ) )
-            // InternalPerspectiveDsl.g:22843:2: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:22942:1: ( ( ruleXAndExpression ) )
+            // InternalPerspectiveDsl.g:22943:2: ( ruleXAndExpression )
             {
-            // InternalPerspectiveDsl.g:22843:2: ( ruleXAndExpression )
-            // InternalPerspectiveDsl.g:22844:3: ruleXAndExpression
+            // InternalPerspectiveDsl.g:22943:2: ( ruleXAndExpression )
+            // InternalPerspectiveDsl.g:22944:3: ruleXAndExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
@@ -74383,23 +74724,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:22853:1: rule__XAndExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAnd ) ) ;
+    // InternalPerspectiveDsl.g:22953:1: rule__XAndExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAnd ) ) ;
     public final void rule__XAndExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22857:1: ( ( ( ruleOpAnd ) ) )
-            // InternalPerspectiveDsl.g:22858:2: ( ( ruleOpAnd ) )
+            // InternalPerspectiveDsl.g:22957:1: ( ( ( ruleOpAnd ) ) )
+            // InternalPerspectiveDsl.g:22958:2: ( ( ruleOpAnd ) )
             {
-            // InternalPerspectiveDsl.g:22858:2: ( ( ruleOpAnd ) )
-            // InternalPerspectiveDsl.g:22859:3: ( ruleOpAnd )
+            // InternalPerspectiveDsl.g:22958:2: ( ( ruleOpAnd ) )
+            // InternalPerspectiveDsl.g:22959:3: ( ruleOpAnd )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22860:3: ( ruleOpAnd )
-            // InternalPerspectiveDsl.g:22861:4: ruleOpAnd
+            // InternalPerspectiveDsl.g:22960:3: ( ruleOpAnd )
+            // InternalPerspectiveDsl.g:22961:4: ruleOpAnd
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1()); 
@@ -74440,17 +74781,17 @@
 
 
     // $ANTLR start "rule__XAndExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:22872:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
+    // InternalPerspectiveDsl.g:22972:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
     public final void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22876:1: ( ( ruleXEqualityExpression ) )
-            // InternalPerspectiveDsl.g:22877:2: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:22976:1: ( ( ruleXEqualityExpression ) )
+            // InternalPerspectiveDsl.g:22977:2: ( ruleXEqualityExpression )
             {
-            // InternalPerspectiveDsl.g:22877:2: ( ruleXEqualityExpression )
-            // InternalPerspectiveDsl.g:22878:3: ruleXEqualityExpression
+            // InternalPerspectiveDsl.g:22977:2: ( ruleXEqualityExpression )
+            // InternalPerspectiveDsl.g:22978:3: ruleXEqualityExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
@@ -74485,23 +74826,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:22887:1: rule__XEqualityExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpEquality ) ) ;
+    // InternalPerspectiveDsl.g:22987:1: rule__XEqualityExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpEquality ) ) ;
     public final void rule__XEqualityExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22891:1: ( ( ( ruleOpEquality ) ) )
-            // InternalPerspectiveDsl.g:22892:2: ( ( ruleOpEquality ) )
+            // InternalPerspectiveDsl.g:22991:1: ( ( ( ruleOpEquality ) ) )
+            // InternalPerspectiveDsl.g:22992:2: ( ( ruleOpEquality ) )
             {
-            // InternalPerspectiveDsl.g:22892:2: ( ( ruleOpEquality ) )
-            // InternalPerspectiveDsl.g:22893:3: ( ruleOpEquality )
+            // InternalPerspectiveDsl.g:22992:2: ( ( ruleOpEquality ) )
+            // InternalPerspectiveDsl.g:22993:3: ( ruleOpEquality )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22894:3: ( ruleOpEquality )
-            // InternalPerspectiveDsl.g:22895:4: ruleOpEquality
+            // InternalPerspectiveDsl.g:22994:3: ( ruleOpEquality )
+            // InternalPerspectiveDsl.g:22995:4: ruleOpEquality
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementOpEqualityParserRuleCall_1_0_0_1_0_1()); 
@@ -74542,17 +74883,17 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:22906:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
+    // InternalPerspectiveDsl.g:23006:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
     public final void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22910:1: ( ( ruleXRelationalExpression ) )
-            // InternalPerspectiveDsl.g:22911:2: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:23010:1: ( ( ruleXRelationalExpression ) )
+            // InternalPerspectiveDsl.g:23011:2: ( ruleXRelationalExpression )
             {
-            // InternalPerspectiveDsl.g:22911:2: ( ruleXRelationalExpression )
-            // InternalPerspectiveDsl.g:22912:3: ruleXRelationalExpression
+            // InternalPerspectiveDsl.g:23011:2: ( ruleXRelationalExpression )
+            // InternalPerspectiveDsl.g:23012:3: ruleXRelationalExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
@@ -74587,17 +74928,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__TypeAssignment_1_0_1"
-    // InternalPerspectiveDsl.g:22921:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23021:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22925:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:22926:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23025:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23026:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:22926:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:22927:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23026:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23027:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
@@ -74632,23 +74973,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1"
-    // InternalPerspectiveDsl.g:22936:1: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpCompare ) ) ;
+    // InternalPerspectiveDsl.g:23036:1: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpCompare ) ) ;
     public final void rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22940:1: ( ( ( ruleOpCompare ) ) )
-            // InternalPerspectiveDsl.g:22941:2: ( ( ruleOpCompare ) )
+            // InternalPerspectiveDsl.g:23040:1: ( ( ( ruleOpCompare ) ) )
+            // InternalPerspectiveDsl.g:23041:2: ( ( ruleOpCompare ) )
             {
-            // InternalPerspectiveDsl.g:22941:2: ( ( ruleOpCompare ) )
-            // InternalPerspectiveDsl.g:22942:3: ( ruleOpCompare )
+            // InternalPerspectiveDsl.g:23041:2: ( ( ruleOpCompare ) )
+            // InternalPerspectiveDsl.g:23042:3: ( ruleOpCompare )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22943:3: ( ruleOpCompare )
-            // InternalPerspectiveDsl.g:22944:4: ruleOpCompare
+            // InternalPerspectiveDsl.g:23043:3: ( ruleOpCompare )
+            // InternalPerspectiveDsl.g:23044:4: ruleOpCompare
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_1_0_0_1_0_1()); 
@@ -74689,17 +75030,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__RightOperandAssignment_1_1_1"
-    // InternalPerspectiveDsl.g:22955:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
+    // InternalPerspectiveDsl.g:23055:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
     public final void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22959:1: ( ( ruleXOtherOperatorExpression ) )
-            // InternalPerspectiveDsl.g:22960:2: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:23059:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalPerspectiveDsl.g:23060:2: ( ruleXOtherOperatorExpression )
             {
-            // InternalPerspectiveDsl.g:22960:2: ( ruleXOtherOperatorExpression )
-            // InternalPerspectiveDsl.g:22961:3: ruleXOtherOperatorExpression
+            // InternalPerspectiveDsl.g:23060:2: ( ruleXOtherOperatorExpression )
+            // InternalPerspectiveDsl.g:23061:3: ruleXOtherOperatorExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
@@ -74734,23 +75075,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:22970:1: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOther ) ) ;
+    // InternalPerspectiveDsl.g:23070:1: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOther ) ) ;
     public final void rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22974:1: ( ( ( ruleOpOther ) ) )
-            // InternalPerspectiveDsl.g:22975:2: ( ( ruleOpOther ) )
+            // InternalPerspectiveDsl.g:23074:1: ( ( ( ruleOpOther ) ) )
+            // InternalPerspectiveDsl.g:23075:2: ( ( ruleOpOther ) )
             {
-            // InternalPerspectiveDsl.g:22975:2: ( ( ruleOpOther ) )
-            // InternalPerspectiveDsl.g:22976:3: ( ruleOpOther )
+            // InternalPerspectiveDsl.g:23075:2: ( ( ruleOpOther ) )
+            // InternalPerspectiveDsl.g:23076:3: ( ruleOpOther )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:22977:3: ( ruleOpOther )
-            // InternalPerspectiveDsl.g:22978:4: ruleOpOther
+            // InternalPerspectiveDsl.g:23077:3: ( ruleOpOther )
+            // InternalPerspectiveDsl.g:23078:4: ruleOpOther
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementOpOtherParserRuleCall_1_0_0_1_0_1()); 
@@ -74791,17 +75132,17 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:22989:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
+    // InternalPerspectiveDsl.g:23089:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
     public final void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:22993:1: ( ( ruleXAdditiveExpression ) )
-            // InternalPerspectiveDsl.g:22994:2: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:23093:1: ( ( ruleXAdditiveExpression ) )
+            // InternalPerspectiveDsl.g:23094:2: ( ruleXAdditiveExpression )
             {
-            // InternalPerspectiveDsl.g:22994:2: ( ruleXAdditiveExpression )
-            // InternalPerspectiveDsl.g:22995:3: ruleXAdditiveExpression
+            // InternalPerspectiveDsl.g:23094:2: ( ruleXAdditiveExpression )
+            // InternalPerspectiveDsl.g:23095:3: ruleXAdditiveExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
@@ -74836,23 +75177,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:23004:1: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAdd ) ) ;
+    // InternalPerspectiveDsl.g:23104:1: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAdd ) ) ;
     public final void rule__XAdditiveExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23008:1: ( ( ( ruleOpAdd ) ) )
-            // InternalPerspectiveDsl.g:23009:2: ( ( ruleOpAdd ) )
+            // InternalPerspectiveDsl.g:23108:1: ( ( ( ruleOpAdd ) ) )
+            // InternalPerspectiveDsl.g:23109:2: ( ( ruleOpAdd ) )
             {
-            // InternalPerspectiveDsl.g:23009:2: ( ( ruleOpAdd ) )
-            // InternalPerspectiveDsl.g:23010:3: ( ruleOpAdd )
+            // InternalPerspectiveDsl.g:23109:2: ( ( ruleOpAdd ) )
+            // InternalPerspectiveDsl.g:23110:3: ( ruleOpAdd )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23011:3: ( ruleOpAdd )
-            // InternalPerspectiveDsl.g:23012:4: ruleOpAdd
+            // InternalPerspectiveDsl.g:23111:3: ( ruleOpAdd )
+            // InternalPerspectiveDsl.g:23112:4: ruleOpAdd
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementOpAddParserRuleCall_1_0_0_1_0_1()); 
@@ -74893,17 +75234,17 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:23023:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
+    // InternalPerspectiveDsl.g:23123:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
     public final void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23027:1: ( ( ruleXMultiplicativeExpression ) )
-            // InternalPerspectiveDsl.g:23028:2: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:23127:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalPerspectiveDsl.g:23128:2: ( ruleXMultiplicativeExpression )
             {
-            // InternalPerspectiveDsl.g:23028:2: ( ruleXMultiplicativeExpression )
-            // InternalPerspectiveDsl.g:23029:3: ruleXMultiplicativeExpression
+            // InternalPerspectiveDsl.g:23128:2: ( ruleXMultiplicativeExpression )
+            // InternalPerspectiveDsl.g:23129:3: ruleXMultiplicativeExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
@@ -74938,23 +75279,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1"
-    // InternalPerspectiveDsl.g:23038:1: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpMulti ) ) ;
+    // InternalPerspectiveDsl.g:23138:1: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpMulti ) ) ;
     public final void rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23042:1: ( ( ( ruleOpMulti ) ) )
-            // InternalPerspectiveDsl.g:23043:2: ( ( ruleOpMulti ) )
+            // InternalPerspectiveDsl.g:23142:1: ( ( ( ruleOpMulti ) ) )
+            // InternalPerspectiveDsl.g:23143:2: ( ( ruleOpMulti ) )
             {
-            // InternalPerspectiveDsl.g:23043:2: ( ( ruleOpMulti ) )
-            // InternalPerspectiveDsl.g:23044:3: ( ruleOpMulti )
+            // InternalPerspectiveDsl.g:23143:2: ( ( ruleOpMulti ) )
+            // InternalPerspectiveDsl.g:23144:3: ( ruleOpMulti )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23045:3: ( ruleOpMulti )
-            // InternalPerspectiveDsl.g:23046:4: ruleOpMulti
+            // InternalPerspectiveDsl.g:23145:3: ( ruleOpMulti )
+            // InternalPerspectiveDsl.g:23146:4: ruleOpMulti
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementOpMultiParserRuleCall_1_0_0_1_0_1()); 
@@ -74995,17 +75336,17 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__RightOperandAssignment_1_1"
-    // InternalPerspectiveDsl.g:23057:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
+    // InternalPerspectiveDsl.g:23157:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
     public final void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23061:1: ( ( ruleXUnaryOperation ) )
-            // InternalPerspectiveDsl.g:23062:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:23161:1: ( ( ruleXUnaryOperation ) )
+            // InternalPerspectiveDsl.g:23162:2: ( ruleXUnaryOperation )
             {
-            // InternalPerspectiveDsl.g:23062:2: ( ruleXUnaryOperation )
-            // InternalPerspectiveDsl.g:23063:3: ruleXUnaryOperation
+            // InternalPerspectiveDsl.g:23162:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:23163:3: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
@@ -75040,23 +75381,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__FeatureAssignment_0_1"
-    // InternalPerspectiveDsl.g:23072:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
+    // InternalPerspectiveDsl.g:23172:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
     public final void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23076:1: ( ( ( ruleOpUnary ) ) )
-            // InternalPerspectiveDsl.g:23077:2: ( ( ruleOpUnary ) )
+            // InternalPerspectiveDsl.g:23176:1: ( ( ( ruleOpUnary ) ) )
+            // InternalPerspectiveDsl.g:23177:2: ( ( ruleOpUnary ) )
             {
-            // InternalPerspectiveDsl.g:23077:2: ( ( ruleOpUnary ) )
-            // InternalPerspectiveDsl.g:23078:3: ( ruleOpUnary )
+            // InternalPerspectiveDsl.g:23177:2: ( ( ruleOpUnary ) )
+            // InternalPerspectiveDsl.g:23178:3: ( ruleOpUnary )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23079:3: ( ruleOpUnary )
-            // InternalPerspectiveDsl.g:23080:4: ruleOpUnary
+            // InternalPerspectiveDsl.g:23179:3: ( ruleOpUnary )
+            // InternalPerspectiveDsl.g:23180:4: ruleOpUnary
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementOpUnaryParserRuleCall_0_1_0_1()); 
@@ -75097,17 +75438,17 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__OperandAssignment_0_2"
-    // InternalPerspectiveDsl.g:23091:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
+    // InternalPerspectiveDsl.g:23191:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
     public final void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23095:1: ( ( ruleXUnaryOperation ) )
-            // InternalPerspectiveDsl.g:23096:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:23195:1: ( ( ruleXUnaryOperation ) )
+            // InternalPerspectiveDsl.g:23196:2: ( ruleXUnaryOperation )
             {
-            // InternalPerspectiveDsl.g:23096:2: ( ruleXUnaryOperation )
-            // InternalPerspectiveDsl.g:23097:3: ruleXUnaryOperation
+            // InternalPerspectiveDsl.g:23196:2: ( ruleXUnaryOperation )
+            // InternalPerspectiveDsl.g:23197:3: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
@@ -75142,17 +75483,17 @@
 
 
     // $ANTLR start "rule__XCastedExpression__TypeAssignment_1_1"
-    // InternalPerspectiveDsl.g:23106:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23206:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23110:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23111:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23210:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23211:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23111:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23112:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23211:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23212:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
@@ -75187,23 +75528,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__FeatureAssignment_1_0_1"
-    // InternalPerspectiveDsl.g:23121:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
+    // InternalPerspectiveDsl.g:23221:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
     public final void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23125:1: ( ( ( ruleOpPostfix ) ) )
-            // InternalPerspectiveDsl.g:23126:2: ( ( ruleOpPostfix ) )
+            // InternalPerspectiveDsl.g:23225:1: ( ( ( ruleOpPostfix ) ) )
+            // InternalPerspectiveDsl.g:23226:2: ( ( ruleOpPostfix ) )
             {
-            // InternalPerspectiveDsl.g:23126:2: ( ( ruleOpPostfix ) )
-            // InternalPerspectiveDsl.g:23127:3: ( ruleOpPostfix )
+            // InternalPerspectiveDsl.g:23226:2: ( ( ruleOpPostfix ) )
+            // InternalPerspectiveDsl.g:23227:3: ( ruleOpPostfix )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23128:3: ( ruleOpPostfix )
-            // InternalPerspectiveDsl.g:23129:4: ruleOpPostfix
+            // InternalPerspectiveDsl.g:23228:3: ( ruleOpPostfix )
+            // InternalPerspectiveDsl.g:23229:4: ruleOpPostfix
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_0_1_0_1()); 
@@ -75244,28 +75585,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1"
-    // InternalPerspectiveDsl.g:23140:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 : ( ( '::' ) ) ;
+    // InternalPerspectiveDsl.g:23240:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 : ( ( '::' ) ) ;
     public final void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23144:1: ( ( ( '::' ) ) )
-            // InternalPerspectiveDsl.g:23145:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:23244:1: ( ( ( '::' ) ) )
+            // InternalPerspectiveDsl.g:23245:2: ( ( '::' ) )
             {
-            // InternalPerspectiveDsl.g:23145:2: ( ( '::' ) )
-            // InternalPerspectiveDsl.g:23146:3: ( '::' )
+            // InternalPerspectiveDsl.g:23245:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:23246:3: ( '::' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23147:3: ( '::' )
-            // InternalPerspectiveDsl.g:23148:4: '::'
+            // InternalPerspectiveDsl.g:23247:3: ( '::' )
+            // InternalPerspectiveDsl.g:23248:4: '::'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
-            match(input,127,FOLLOW_2); if (state.failed) return ;
+            match(input,129,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
@@ -75297,23 +75638,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2"
-    // InternalPerspectiveDsl.g:23159:1: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 : ( ( ruleFeatureCallID ) ) ;
+    // InternalPerspectiveDsl.g:23259:1: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 : ( ( ruleFeatureCallID ) ) ;
     public final void rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23163:1: ( ( ( ruleFeatureCallID ) ) )
-            // InternalPerspectiveDsl.g:23164:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:23263:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalPerspectiveDsl.g:23264:2: ( ( ruleFeatureCallID ) )
             {
-            // InternalPerspectiveDsl.g:23164:2: ( ( ruleFeatureCallID ) )
-            // InternalPerspectiveDsl.g:23165:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:23264:2: ( ( ruleFeatureCallID ) )
+            // InternalPerspectiveDsl.g:23265:3: ( ruleFeatureCallID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
             }
-            // InternalPerspectiveDsl.g:23166:3: ( ruleFeatureCallID )
-            // InternalPerspectiveDsl.g:23167:4: ruleFeatureCallID
+            // InternalPerspectiveDsl.g:23266:3: ( ruleFeatureCallID )
+            // InternalPerspectiveDsl.g:23267:4: ruleFeatureCallID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_0_2_0_1()); 
@@ -75354,17 +75695,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ValueAssignment_1_0_1"
-    // InternalPerspectiveDsl.g:23178:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
+    // InternalPerspectiveDsl.g:23278:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
     public final void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23182:1: ( ( ruleXAssignment ) )
-            // InternalPerspectiveDsl.g:23183:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:23282:1: ( ( ruleXAssignment ) )
+            // InternalPerspectiveDsl.g:23283:2: ( ruleXAssignment )
             {
-            // InternalPerspectiveDsl.g:23183:2: ( ruleXAssignment )
-            // InternalPerspectiveDsl.g:23184:3: ruleXAssignment
+            // InternalPerspectiveDsl.g:23283:2: ( ruleXAssignment )
+            // InternalPerspectiveDsl.g:23284:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
@@ -75399,28 +75740,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1"
-    // InternalPerspectiveDsl.g:23193:1: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 : ( ( '?.' ) ) ;
+    // InternalPerspectiveDsl.g:23293:1: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 : ( ( '?.' ) ) ;
     public final void rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23197:1: ( ( ( '?.' ) ) )
-            // InternalPerspectiveDsl.g:23198:2: ( ( '?.' ) )
+            // InternalPerspectiveDsl.g:23297:1: ( ( ( '?.' ) ) )
+            // InternalPerspectiveDsl.g:23298:2: ( ( '?.' ) )
             {
-            // InternalPerspectiveDsl.g:23198:2: ( ( '?.' ) )
-            // InternalPerspectiveDsl.g:23199:3: ( '?.' )
+            // InternalPerspectiveDsl.g:23298:2: ( ( '?.' ) )
+            // InternalPerspectiveDsl.g:23299:3: ( '?.' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23200:3: ( '?.' )
-            // InternalPerspectiveDsl.g:23201:4: '?.'
+            // InternalPerspectiveDsl.g:23300:3: ( '?.' )
+            // InternalPerspectiveDsl.g:23301:4: '?.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
-            match(input,128,FOLLOW_2); if (state.failed) return ;
+            match(input,130,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
@@ -75452,28 +75793,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2"
-    // InternalPerspectiveDsl.g:23212:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 : ( ( '::' ) ) ;
+    // InternalPerspectiveDsl.g:23312:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 : ( ( '::' ) ) ;
     public final void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23216:1: ( ( ( '::' ) ) )
-            // InternalPerspectiveDsl.g:23217:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:23316:1: ( ( ( '::' ) ) )
+            // InternalPerspectiveDsl.g:23317:2: ( ( '::' ) )
             {
-            // InternalPerspectiveDsl.g:23217:2: ( ( '::' ) )
-            // InternalPerspectiveDsl.g:23218:3: ( '::' )
+            // InternalPerspectiveDsl.g:23317:2: ( ( '::' ) )
+            // InternalPerspectiveDsl.g:23318:3: ( '::' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
-            // InternalPerspectiveDsl.g:23219:3: ( '::' )
-            // InternalPerspectiveDsl.g:23220:4: '::'
+            // InternalPerspectiveDsl.g:23319:3: ( '::' )
+            // InternalPerspectiveDsl.g:23320:4: '::'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
-            match(input,127,FOLLOW_2); if (state.failed) return ;
+            match(input,129,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
@@ -75505,17 +75846,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1"
-    // InternalPerspectiveDsl.g:23231:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:23331:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23235:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23236:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23335:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23336:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23236:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23237:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:23336:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23337:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
@@ -75550,17 +75891,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1"
-    // InternalPerspectiveDsl.g:23246:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:23346:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23250:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:23251:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23350:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:23351:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:23251:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:23252:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:23351:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:23352:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
@@ -75595,23 +75936,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_1_2"
-    // InternalPerspectiveDsl.g:23261:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
+    // InternalPerspectiveDsl.g:23361:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
     public final void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23265:1: ( ( ( ruleIdOrSuper ) ) )
-            // InternalPerspectiveDsl.g:23266:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:23365:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalPerspectiveDsl.g:23366:2: ( ( ruleIdOrSuper ) )
             {
-            // InternalPerspectiveDsl.g:23266:2: ( ( ruleIdOrSuper ) )
-            // InternalPerspectiveDsl.g:23267:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:23366:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:23367:3: ( ruleIdOrSuper )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
             }
-            // InternalPerspectiveDsl.g:23268:3: ( ruleIdOrSuper )
-            // InternalPerspectiveDsl.g:23269:4: ruleIdOrSuper
+            // InternalPerspectiveDsl.g:23368:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:23369:4: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_1_2_0_1()); 
@@ -75652,28 +75993,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0"
-    // InternalPerspectiveDsl.g:23280:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
+    // InternalPerspectiveDsl.g:23380:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
     public final void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23284:1: ( ( ( '(' ) ) )
-            // InternalPerspectiveDsl.g:23285:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:23384:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:23385:2: ( ( '(' ) )
             {
-            // InternalPerspectiveDsl.g:23285:2: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:23286:3: ( '(' )
+            // InternalPerspectiveDsl.g:23385:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:23386:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:23287:3: ( '(' )
-            // InternalPerspectiveDsl.g:23288:4: '('
+            // InternalPerspectiveDsl.g:23387:3: ( '(' )
+            // InternalPerspectiveDsl.g:23388:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
@@ -75705,17 +76046,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0"
-    // InternalPerspectiveDsl.g:23299:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 : ( ruleXShortClosure ) ;
+    // InternalPerspectiveDsl.g:23399:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 : ( ruleXShortClosure ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23303:1: ( ( ruleXShortClosure ) )
-            // InternalPerspectiveDsl.g:23304:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:23403:1: ( ( ruleXShortClosure ) )
+            // InternalPerspectiveDsl.g:23404:2: ( ruleXShortClosure )
             {
-            // InternalPerspectiveDsl.g:23304:2: ( ruleXShortClosure )
-            // InternalPerspectiveDsl.g:23305:3: ruleXShortClosure
+            // InternalPerspectiveDsl.g:23404:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:23405:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
@@ -75750,17 +76091,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0"
-    // InternalPerspectiveDsl.g:23314:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23414:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 : ( ruleXExpression ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23318:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23319:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23418:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23419:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23319:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23320:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23419:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23420:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
@@ -75795,17 +76136,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1"
-    // InternalPerspectiveDsl.g:23329:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23429:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 : ( ruleXExpression ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23333:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23334:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23433:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23434:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23334:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23335:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23434:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23435:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
@@ -75840,17 +76181,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4"
-    // InternalPerspectiveDsl.g:23344:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
+    // InternalPerspectiveDsl.g:23444:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23348:1: ( ( ruleXClosure ) )
-            // InternalPerspectiveDsl.g:23349:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:23448:1: ( ( ruleXClosure ) )
+            // InternalPerspectiveDsl.g:23449:2: ( ruleXClosure )
             {
-            // InternalPerspectiveDsl.g:23349:2: ( ruleXClosure )
-            // InternalPerspectiveDsl.g:23350:3: ruleXClosure
+            // InternalPerspectiveDsl.g:23449:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:23450:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
@@ -75885,17 +76226,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_0"
-    // InternalPerspectiveDsl.g:23359:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23459:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
     public final void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23363:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23364:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23463:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23464:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23364:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23365:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23464:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23465:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
@@ -75930,17 +76271,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:23374:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23474:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
     public final void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23378:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23379:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23478:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23479:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23379:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23380:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23479:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23480:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
@@ -75975,17 +76316,17 @@
 
 
     // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_0"
-    // InternalPerspectiveDsl.g:23389:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23489:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
     public final void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23393:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23394:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23493:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23494:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23394:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23395:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23494:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23495:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
@@ -76020,17 +76361,17 @@
 
 
     // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:23404:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23504:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
     public final void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23408:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23409:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23508:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23509:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23409:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23410:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23509:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23510:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
@@ -76065,17 +76406,17 @@
 
 
     // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0"
-    // InternalPerspectiveDsl.g:23419:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:23519:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 : ( ruleJvmFormalParameter ) ;
     public final void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23423:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:23424:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23523:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23524:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:23424:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:23425:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:23524:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23525:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
@@ -76110,17 +76451,17 @@
 
 
     // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1"
-    // InternalPerspectiveDsl.g:23434:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:23534:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 : ( ruleJvmFormalParameter ) ;
     public final void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23438:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:23439:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23538:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23539:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:23439:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:23440:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:23539:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23540:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
@@ -76155,28 +76496,28 @@
 
 
     // $ANTLR start "rule__XClosure__ExplicitSyntaxAssignment_1_0_1"
-    // InternalPerspectiveDsl.g:23449:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
+    // InternalPerspectiveDsl.g:23549:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
     public final void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23453:1: ( ( ( '|' ) ) )
-            // InternalPerspectiveDsl.g:23454:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:23553:1: ( ( ( '|' ) ) )
+            // InternalPerspectiveDsl.g:23554:2: ( ( '|' ) )
             {
-            // InternalPerspectiveDsl.g:23454:2: ( ( '|' ) )
-            // InternalPerspectiveDsl.g:23455:3: ( '|' )
+            // InternalPerspectiveDsl.g:23554:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:23555:3: ( '|' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23456:3: ( '|' )
-            // InternalPerspectiveDsl.g:23457:4: '|'
+            // InternalPerspectiveDsl.g:23556:3: ( '|' )
+            // InternalPerspectiveDsl.g:23557:4: '|'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
-            match(input,129,FOLLOW_2); if (state.failed) return ;
+            match(input,131,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
@@ -76208,17 +76549,17 @@
 
 
     // $ANTLR start "rule__XClosure__ExpressionAssignment_2"
-    // InternalPerspectiveDsl.g:23468:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
+    // InternalPerspectiveDsl.g:23568:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
     public final void rule__XClosure__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23472:1: ( ( ruleXExpressionInClosure ) )
-            // InternalPerspectiveDsl.g:23473:2: ( ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:23572:1: ( ( ruleXExpressionInClosure ) )
+            // InternalPerspectiveDsl.g:23573:2: ( ruleXExpressionInClosure )
             {
-            // InternalPerspectiveDsl.g:23473:2: ( ruleXExpressionInClosure )
-            // InternalPerspectiveDsl.g:23474:3: ruleXExpressionInClosure
+            // InternalPerspectiveDsl.g:23573:2: ( ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:23574:3: ruleXExpressionInClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
@@ -76253,17 +76594,17 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__ExpressionsAssignment_1_0"
-    // InternalPerspectiveDsl.g:23483:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalPerspectiveDsl.g:23583:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23487:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalPerspectiveDsl.g:23488:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23587:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:23588:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalPerspectiveDsl.g:23488:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalPerspectiveDsl.g:23489:3: ruleXExpressionOrVarDeclaration
+            // InternalPerspectiveDsl.g:23588:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23589:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
@@ -76298,17 +76639,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0"
-    // InternalPerspectiveDsl.g:23498:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:23598:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 : ( ruleJvmFormalParameter ) ;
     public final void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23502:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:23503:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23602:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23603:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:23503:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:23504:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:23603:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23604:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
@@ -76343,17 +76684,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1"
-    // InternalPerspectiveDsl.g:23513:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:23613:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 : ( ruleJvmFormalParameter ) ;
     public final void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23517:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:23518:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23617:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23618:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:23518:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:23519:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:23618:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23619:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
@@ -76388,28 +76729,28 @@
 
 
     // $ANTLR start "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2"
-    // InternalPerspectiveDsl.g:23528:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
+    // InternalPerspectiveDsl.g:23628:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
     public final void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23532:1: ( ( ( '|' ) ) )
-            // InternalPerspectiveDsl.g:23533:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:23632:1: ( ( ( '|' ) ) )
+            // InternalPerspectiveDsl.g:23633:2: ( ( '|' ) )
             {
-            // InternalPerspectiveDsl.g:23533:2: ( ( '|' ) )
-            // InternalPerspectiveDsl.g:23534:3: ( '|' )
+            // InternalPerspectiveDsl.g:23633:2: ( ( '|' ) )
+            // InternalPerspectiveDsl.g:23634:3: ( '|' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
-            // InternalPerspectiveDsl.g:23535:3: ( '|' )
-            // InternalPerspectiveDsl.g:23536:4: '|'
+            // InternalPerspectiveDsl.g:23635:3: ( '|' )
+            // InternalPerspectiveDsl.g:23636:4: '|'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
-            match(input,129,FOLLOW_2); if (state.failed) return ;
+            match(input,131,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
@@ -76441,17 +76782,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__ExpressionAssignment_1"
-    // InternalPerspectiveDsl.g:23547:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23647:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23551:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23552:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23651:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23652:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23552:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23553:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23652:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23653:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
@@ -76486,17 +76827,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__IfAssignment_3"
-    // InternalPerspectiveDsl.g:23562:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23662:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__IfAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23566:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23567:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23666:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23667:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23567:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23568:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23667:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23668:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
@@ -76531,17 +76872,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__ThenAssignment_5"
-    // InternalPerspectiveDsl.g:23577:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23677:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__ThenAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23581:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23582:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23681:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23682:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23582:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23583:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23682:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23683:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
@@ -76576,17 +76917,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__ElseAssignment_6_1"
-    // InternalPerspectiveDsl.g:23592:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23692:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23596:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23597:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23696:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23697:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23597:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23598:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23697:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23698:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
@@ -76621,17 +76962,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1"
-    // InternalPerspectiveDsl.g:23607:1: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:23707:1: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 : ( ruleJvmFormalParameter ) ;
     public final void rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23611:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:23612:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23711:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23712:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:23612:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:23613:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:23712:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23713:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
@@ -76666,17 +77007,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_0_1"
-    // InternalPerspectiveDsl.g:23622:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23722:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23626:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23627:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23726:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23727:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23627:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23628:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23727:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23728:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
@@ -76711,17 +77052,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0"
-    // InternalPerspectiveDsl.g:23637:1: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:23737:1: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 : ( ruleJvmFormalParameter ) ;
     public final void rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23641:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:23642:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23741:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23742:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:23642:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:23643:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:23742:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23743:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
@@ -76756,17 +77097,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_1_1"
-    // InternalPerspectiveDsl.g:23652:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23752:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23656:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23657:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23756:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23757:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23657:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23658:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23757:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23758:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
@@ -76801,17 +77142,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__CasesAssignment_4"
-    // InternalPerspectiveDsl.g:23667:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
+    // InternalPerspectiveDsl.g:23767:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
     public final void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23671:1: ( ( ruleXCasePart ) )
-            // InternalPerspectiveDsl.g:23672:2: ( ruleXCasePart )
+            // InternalPerspectiveDsl.g:23771:1: ( ( ruleXCasePart ) )
+            // InternalPerspectiveDsl.g:23772:2: ( ruleXCasePart )
             {
-            // InternalPerspectiveDsl.g:23672:2: ( ruleXCasePart )
-            // InternalPerspectiveDsl.g:23673:3: ruleXCasePart
+            // InternalPerspectiveDsl.g:23772:2: ( ruleXCasePart )
+            // InternalPerspectiveDsl.g:23773:3: ruleXCasePart
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
@@ -76846,17 +77187,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DefaultAssignment_5_2"
-    // InternalPerspectiveDsl.g:23682:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23782:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23686:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23687:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23786:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23787:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23687:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23688:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23787:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23788:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
@@ -76891,17 +77232,17 @@
 
 
     // $ANTLR start "rule__XCasePart__TypeGuardAssignment_1"
-    // InternalPerspectiveDsl.g:23697:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:23797:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23701:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23702:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23801:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:23802:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23702:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23703:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:23802:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:23803:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
@@ -76936,17 +77277,17 @@
 
 
     // $ANTLR start "rule__XCasePart__CaseAssignment_2_1"
-    // InternalPerspectiveDsl.g:23712:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23812:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
     public final void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23716:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23717:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23816:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23817:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23717:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23718:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23817:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23818:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
@@ -76981,17 +77322,17 @@
 
 
     // $ANTLR start "rule__XCasePart__ThenAssignment_3_0_1"
-    // InternalPerspectiveDsl.g:23727:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23827:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
     public final void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23731:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23732:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23831:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23832:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23732:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23733:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23832:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23833:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
@@ -77026,28 +77367,28 @@
 
 
     // $ANTLR start "rule__XCasePart__FallThroughAssignment_3_1"
-    // InternalPerspectiveDsl.g:23742:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
+    // InternalPerspectiveDsl.g:23842:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
     public final void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23746:1: ( ( ( ',' ) ) )
-            // InternalPerspectiveDsl.g:23747:2: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:23846:1: ( ( ( ',' ) ) )
+            // InternalPerspectiveDsl.g:23847:2: ( ( ',' ) )
             {
-            // InternalPerspectiveDsl.g:23747:2: ( ( ',' ) )
-            // InternalPerspectiveDsl.g:23748:3: ( ',' )
+            // InternalPerspectiveDsl.g:23847:2: ( ( ',' ) )
+            // InternalPerspectiveDsl.g:23848:3: ( ',' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
-            // InternalPerspectiveDsl.g:23749:3: ( ',' )
-            // InternalPerspectiveDsl.g:23750:4: ','
+            // InternalPerspectiveDsl.g:23849:3: ( ',' )
+            // InternalPerspectiveDsl.g:23850:4: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
@@ -77079,17 +77420,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3"
-    // InternalPerspectiveDsl.g:23761:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:23861:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
     public final void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23765:1: ( ( ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:23766:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23865:1: ( ( ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:23866:2: ( ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:23766:2: ( ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:23767:3: ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:23866:2: ( ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:23867:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
@@ -77124,17 +77465,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__ForExpressionAssignment_1"
-    // InternalPerspectiveDsl.g:23776:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23876:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23780:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23781:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23880:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23881:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23781:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23782:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23881:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23882:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
@@ -77169,17 +77510,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__EachExpressionAssignment_3"
-    // InternalPerspectiveDsl.g:23791:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23891:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23795:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23796:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23895:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23896:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23796:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23797:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23896:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23897:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
@@ -77214,17 +77555,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0"
-    // InternalPerspectiveDsl.g:23806:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalPerspectiveDsl.g:23906:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23810:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalPerspectiveDsl.g:23811:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23910:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:23911:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalPerspectiveDsl.g:23811:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalPerspectiveDsl.g:23812:3: ruleXExpressionOrVarDeclaration
+            // InternalPerspectiveDsl.g:23911:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23912:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
@@ -77259,17 +77600,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:23821:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalPerspectiveDsl.g:23921:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23825:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalPerspectiveDsl.g:23826:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23925:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:23926:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalPerspectiveDsl.g:23826:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalPerspectiveDsl.g:23827:3: ruleXExpressionOrVarDeclaration
+            // InternalPerspectiveDsl.g:23926:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:23927:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
@@ -77304,17 +77645,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__ExpressionAssignment_5"
-    // InternalPerspectiveDsl.g:23836:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23936:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23840:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23841:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23940:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23941:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23841:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23842:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23941:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23942:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
@@ -77349,17 +77690,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0"
-    // InternalPerspectiveDsl.g:23851:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23951:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23855:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23856:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23955:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23956:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23856:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23857:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23956:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23957:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
@@ -77394,17 +77735,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1"
-    // InternalPerspectiveDsl.g:23866:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23966:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23870:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23871:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23970:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23971:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23871:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23872:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23971:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23972:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
@@ -77439,17 +77780,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__EachExpressionAssignment_9"
-    // InternalPerspectiveDsl.g:23881:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23981:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23885:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23886:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23985:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:23986:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23886:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23887:3: ruleXExpression
+            // InternalPerspectiveDsl.g:23986:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:23987:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
@@ -77484,17 +77825,17 @@
 
 
     // $ANTLR start "rule__XWhileExpression__PredicateAssignment_3"
-    // InternalPerspectiveDsl.g:23896:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:23996:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23900:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23901:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24000:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24001:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23901:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23902:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24001:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24002:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
@@ -77529,17 +77870,17 @@
 
 
     // $ANTLR start "rule__XWhileExpression__BodyAssignment_5"
-    // InternalPerspectiveDsl.g:23911:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24011:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23915:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23916:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24015:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24016:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23916:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23917:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24016:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24017:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
@@ -77574,17 +77915,17 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__BodyAssignment_2"
-    // InternalPerspectiveDsl.g:23926:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24026:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23930:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23931:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24030:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24031:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23931:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23932:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24031:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24032:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
@@ -77619,17 +77960,17 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__PredicateAssignment_5"
-    // InternalPerspectiveDsl.g:23941:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24041:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23945:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:23946:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24045:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24046:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:23946:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:23947:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24046:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24047:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
@@ -77664,17 +78005,17 @@
 
 
     // $ANTLR start "rule__XBlockExpression__ExpressionsAssignment_2_0"
-    // InternalPerspectiveDsl.g:23956:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalPerspectiveDsl.g:24056:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23960:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalPerspectiveDsl.g:23961:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:24060:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalPerspectiveDsl.g:24061:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalPerspectiveDsl.g:23961:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalPerspectiveDsl.g:23962:3: ruleXExpressionOrVarDeclaration
+            // InternalPerspectiveDsl.g:24061:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalPerspectiveDsl.g:24062:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
@@ -77709,28 +78050,28 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__WriteableAssignment_1_0"
-    // InternalPerspectiveDsl.g:23971:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
+    // InternalPerspectiveDsl.g:24071:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
     public final void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23975:1: ( ( ( 'var' ) ) )
-            // InternalPerspectiveDsl.g:23976:2: ( ( 'var' ) )
+            // InternalPerspectiveDsl.g:24075:1: ( ( ( 'var' ) ) )
+            // InternalPerspectiveDsl.g:24076:2: ( ( 'var' ) )
             {
-            // InternalPerspectiveDsl.g:23976:2: ( ( 'var' ) )
-            // InternalPerspectiveDsl.g:23977:3: ( 'var' )
+            // InternalPerspectiveDsl.g:24076:2: ( ( 'var' ) )
+            // InternalPerspectiveDsl.g:24077:3: ( 'var' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
-            // InternalPerspectiveDsl.g:23978:3: ( 'var' )
-            // InternalPerspectiveDsl.g:23979:4: 'var'
+            // InternalPerspectiveDsl.g:24078:3: ( 'var' )
+            // InternalPerspectiveDsl.g:24079:4: 'var'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
-            match(input,130,FOLLOW_2); if (state.failed) return ;
+            match(input,132,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
@@ -77762,17 +78103,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__TypeAssignment_2_0_0_0"
-    // InternalPerspectiveDsl.g:23990:1: rule__XVariableDeclaration__TypeAssignment_2_0_0_0 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24090:1: rule__XVariableDeclaration__TypeAssignment_2_0_0_0 : ( ruleJvmTypeReference ) ;
     public final void rule__XVariableDeclaration__TypeAssignment_2_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:23994:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:23995:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24094:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24095:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:23995:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:23996:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24095:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24096:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
@@ -77807,17 +78148,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_0_0_1"
-    // InternalPerspectiveDsl.g:24005:1: rule__XVariableDeclaration__NameAssignment_2_0_0_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:24105:1: rule__XVariableDeclaration__NameAssignment_2_0_0_1 : ( ruleValidID ) ;
     public final void rule__XVariableDeclaration__NameAssignment_2_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24009:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:24010:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24109:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:24110:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:24010:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:24011:3: ruleValidID
+            // InternalPerspectiveDsl.g:24110:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24111:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
@@ -77852,17 +78193,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_1"
-    // InternalPerspectiveDsl.g:24020:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:24120:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
     public final void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24024:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:24025:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24124:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:24125:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:24025:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:24026:3: ruleValidID
+            // InternalPerspectiveDsl.g:24125:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24126:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
@@ -77897,17 +78238,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__RightAssignment_3_1"
-    // InternalPerspectiveDsl.g:24035:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24135:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
     public final void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24039:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24040:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24139:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24140:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24040:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24041:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24140:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24141:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
@@ -77942,17 +78283,17 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__ParameterTypeAssignment_0"
-    // InternalPerspectiveDsl.g:24050:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24150:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24054:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:24055:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24154:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24155:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:24055:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:24056:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24155:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24156:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
@@ -77987,17 +78328,17 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__NameAssignment_1"
-    // InternalPerspectiveDsl.g:24065:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:24165:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
     public final void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24069:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:24070:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24169:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:24170:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:24070:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:24071:3: ruleValidID
+            // InternalPerspectiveDsl.g:24170:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24171:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
@@ -78032,17 +78373,17 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__ParameterTypeAssignment_0"
-    // InternalPerspectiveDsl.g:24080:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24180:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
     public final void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24084:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:24085:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24184:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24185:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:24085:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:24086:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24185:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24186:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
@@ -78077,17 +78418,17 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__NameAssignment_1"
-    // InternalPerspectiveDsl.g:24095:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    // InternalPerspectiveDsl.g:24195:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
     public final void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24099:1: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:24100:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24199:1: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:24200:2: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:24100:2: ( ruleValidID )
-            // InternalPerspectiveDsl.g:24101:3: ruleValidID
+            // InternalPerspectiveDsl.g:24200:2: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24201:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
@@ -78122,17 +78463,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_1"
-    // InternalPerspectiveDsl.g:24110:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24210:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24114:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:24115:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24214:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24215:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:24115:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:24116:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24215:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24216:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
@@ -78167,17 +78508,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1"
-    // InternalPerspectiveDsl.g:24125:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24225:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24129:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:24130:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24229:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24230:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:24130:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:24131:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24230:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24231:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
@@ -78212,23 +78553,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureAssignment_2"
-    // InternalPerspectiveDsl.g:24140:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
+    // InternalPerspectiveDsl.g:24240:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
     public final void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24144:1: ( ( ( ruleIdOrSuper ) ) )
-            // InternalPerspectiveDsl.g:24145:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:24244:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalPerspectiveDsl.g:24245:2: ( ( ruleIdOrSuper ) )
             {
-            // InternalPerspectiveDsl.g:24145:2: ( ( ruleIdOrSuper ) )
-            // InternalPerspectiveDsl.g:24146:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:24245:2: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:24246:3: ( ruleIdOrSuper )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:24147:3: ( ruleIdOrSuper )
-            // InternalPerspectiveDsl.g:24148:4: ruleIdOrSuper
+            // InternalPerspectiveDsl.g:24247:3: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:24248:4: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_2_0_1()); 
@@ -78269,28 +78610,28 @@
 
 
     // $ANTLR start "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0"
-    // InternalPerspectiveDsl.g:24159:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
+    // InternalPerspectiveDsl.g:24259:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
     public final void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24163:1: ( ( ( '(' ) ) )
-            // InternalPerspectiveDsl.g:24164:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:24263:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:24264:2: ( ( '(' ) )
             {
-            // InternalPerspectiveDsl.g:24164:2: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:24165:3: ( '(' )
+            // InternalPerspectiveDsl.g:24264:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:24265:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
-            // InternalPerspectiveDsl.g:24166:3: ( '(' )
-            // InternalPerspectiveDsl.g:24167:4: '('
+            // InternalPerspectiveDsl.g:24266:3: ( '(' )
+            // InternalPerspectiveDsl.g:24267:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
@@ -78322,17 +78663,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0"
-    // InternalPerspectiveDsl.g:24178:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
+    // InternalPerspectiveDsl.g:24278:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24182:1: ( ( ruleXShortClosure ) )
-            // InternalPerspectiveDsl.g:24183:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:24282:1: ( ( ruleXShortClosure ) )
+            // InternalPerspectiveDsl.g:24283:2: ( ruleXShortClosure )
             {
-            // InternalPerspectiveDsl.g:24183:2: ( ruleXShortClosure )
-            // InternalPerspectiveDsl.g:24184:3: ruleXShortClosure
+            // InternalPerspectiveDsl.g:24283:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:24284:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
@@ -78367,17 +78708,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0"
-    // InternalPerspectiveDsl.g:24193:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24293:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 : ( ruleXExpression ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24197:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24198:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24297:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24298:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24198:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24199:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24298:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24299:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
@@ -78412,17 +78753,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1"
-    // InternalPerspectiveDsl.g:24208:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24308:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 : ( ruleXExpression ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24212:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24213:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24312:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24313:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24213:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24214:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24313:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24314:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
@@ -78457,17 +78798,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_4"
-    // InternalPerspectiveDsl.g:24223:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
+    // InternalPerspectiveDsl.g:24323:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24227:1: ( ( ruleXClosure ) )
-            // InternalPerspectiveDsl.g:24228:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:24327:1: ( ( ruleXClosure ) )
+            // InternalPerspectiveDsl.g:24328:2: ( ruleXClosure )
             {
-            // InternalPerspectiveDsl.g:24228:2: ( ruleXClosure )
-            // InternalPerspectiveDsl.g:24229:3: ruleXClosure
+            // InternalPerspectiveDsl.g:24328:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:24329:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
@@ -78502,23 +78843,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ConstructorAssignment_2"
-    // InternalPerspectiveDsl.g:24238:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:24338:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24242:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:24243:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:24342:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:24343:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:24243:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:24244:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:24343:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:24344:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
             }
-            // InternalPerspectiveDsl.g:24245:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:24246:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:24345:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:24346:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1()); 
@@ -78559,17 +78900,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_1"
-    // InternalPerspectiveDsl.g:24257:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24357:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24261:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:24262:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24361:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24362:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:24262:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:24263:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24362:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24363:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
@@ -78604,17 +78945,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1"
-    // InternalPerspectiveDsl.g:24272:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24372:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24276:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:24277:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24376:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24377:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:24277:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:24278:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24377:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24378:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
@@ -78649,28 +78990,28 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0"
-    // InternalPerspectiveDsl.g:24287:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
+    // InternalPerspectiveDsl.g:24387:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
     public final void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24291:1: ( ( ( '(' ) ) )
-            // InternalPerspectiveDsl.g:24292:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:24391:1: ( ( ( '(' ) ) )
+            // InternalPerspectiveDsl.g:24392:2: ( ( '(' ) )
             {
-            // InternalPerspectiveDsl.g:24292:2: ( ( '(' ) )
-            // InternalPerspectiveDsl.g:24293:3: ( '(' )
+            // InternalPerspectiveDsl.g:24392:2: ( ( '(' ) )
+            // InternalPerspectiveDsl.g:24393:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
-            // InternalPerspectiveDsl.g:24294:3: ( '(' )
-            // InternalPerspectiveDsl.g:24295:4: '('
+            // InternalPerspectiveDsl.g:24394:3: ( '(' )
+            // InternalPerspectiveDsl.g:24395:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
@@ -78702,17 +79043,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_0"
-    // InternalPerspectiveDsl.g:24306:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
+    // InternalPerspectiveDsl.g:24406:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24310:1: ( ( ruleXShortClosure ) )
-            // InternalPerspectiveDsl.g:24311:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:24410:1: ( ( ruleXShortClosure ) )
+            // InternalPerspectiveDsl.g:24411:2: ( ruleXShortClosure )
             {
-            // InternalPerspectiveDsl.g:24311:2: ( ruleXShortClosure )
-            // InternalPerspectiveDsl.g:24312:3: ruleXShortClosure
+            // InternalPerspectiveDsl.g:24411:2: ( ruleXShortClosure )
+            // InternalPerspectiveDsl.g:24412:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
@@ -78747,17 +79088,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0"
-    // InternalPerspectiveDsl.g:24321:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24421:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 : ( ruleXExpression ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_4_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24325:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24326:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24425:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24426:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24326:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24327:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24426:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24427:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
@@ -78792,17 +79133,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1"
-    // InternalPerspectiveDsl.g:24336:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24436:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 : ( ruleXExpression ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24340:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24341:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24440:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24441:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24341:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24342:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24441:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24442:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
@@ -78837,17 +79178,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_5"
-    // InternalPerspectiveDsl.g:24351:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
+    // InternalPerspectiveDsl.g:24451:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24355:1: ( ( ruleXClosure ) )
-            // InternalPerspectiveDsl.g:24356:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:24455:1: ( ( ruleXClosure ) )
+            // InternalPerspectiveDsl.g:24456:2: ( ruleXClosure )
             {
-            // InternalPerspectiveDsl.g:24356:2: ( ruleXClosure )
-            // InternalPerspectiveDsl.g:24357:3: ruleXClosure
+            // InternalPerspectiveDsl.g:24456:2: ( ruleXClosure )
+            // InternalPerspectiveDsl.g:24457:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
@@ -78882,28 +79223,28 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__IsTrueAssignment_1_1"
-    // InternalPerspectiveDsl.g:24366:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
+    // InternalPerspectiveDsl.g:24466:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
     public final void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24370:1: ( ( ( 'true' ) ) )
-            // InternalPerspectiveDsl.g:24371:2: ( ( 'true' ) )
+            // InternalPerspectiveDsl.g:24470:1: ( ( ( 'true' ) ) )
+            // InternalPerspectiveDsl.g:24471:2: ( ( 'true' ) )
             {
-            // InternalPerspectiveDsl.g:24371:2: ( ( 'true' ) )
-            // InternalPerspectiveDsl.g:24372:3: ( 'true' )
+            // InternalPerspectiveDsl.g:24471:2: ( ( 'true' ) )
+            // InternalPerspectiveDsl.g:24472:3: ( 'true' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
-            // InternalPerspectiveDsl.g:24373:3: ( 'true' )
-            // InternalPerspectiveDsl.g:24374:4: 'true'
+            // InternalPerspectiveDsl.g:24473:3: ( 'true' )
+            // InternalPerspectiveDsl.g:24474:4: 'true'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
-            match(input,131,FOLLOW_2); if (state.failed) return ;
+            match(input,133,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
@@ -78935,17 +79276,17 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__ValueAssignment_1"
-    // InternalPerspectiveDsl.g:24385:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
+    // InternalPerspectiveDsl.g:24485:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
     public final void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24389:1: ( ( ruleNumber ) )
-            // InternalPerspectiveDsl.g:24390:2: ( ruleNumber )
+            // InternalPerspectiveDsl.g:24489:1: ( ( ruleNumber ) )
+            // InternalPerspectiveDsl.g:24490:2: ( ruleNumber )
             {
-            // InternalPerspectiveDsl.g:24390:2: ( ruleNumber )
-            // InternalPerspectiveDsl.g:24391:3: ruleNumber
+            // InternalPerspectiveDsl.g:24490:2: ( ruleNumber )
+            // InternalPerspectiveDsl.g:24491:3: ruleNumber
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
@@ -78980,17 +79321,17 @@
 
 
     // $ANTLR start "rule__XStringLiteral__ValueAssignment_1"
-    // InternalPerspectiveDsl.g:24400:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
+    // InternalPerspectiveDsl.g:24500:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
     public final void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24404:1: ( ( RULE_STRING ) )
-            // InternalPerspectiveDsl.g:24405:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:24504:1: ( ( RULE_STRING ) )
+            // InternalPerspectiveDsl.g:24505:2: ( RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:24405:2: ( RULE_STRING )
-            // InternalPerspectiveDsl.g:24406:3: RULE_STRING
+            // InternalPerspectiveDsl.g:24505:2: ( RULE_STRING )
+            // InternalPerspectiveDsl.g:24506:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
@@ -79021,23 +79362,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__TypeAssignment_3"
-    // InternalPerspectiveDsl.g:24415:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:24515:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24419:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:24420:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:24519:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:24520:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:24420:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:24421:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:24520:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:24521:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
             }
-            // InternalPerspectiveDsl.g:24422:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:24423:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:24522:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:24523:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeQualifiedNameParserRuleCall_3_0_1()); 
@@ -79078,17 +79419,17 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__ArrayDimensionsAssignment_4"
-    // InternalPerspectiveDsl.g:24434:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
+    // InternalPerspectiveDsl.g:24534:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
     public final void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24438:1: ( ( ruleArrayBrackets ) )
-            // InternalPerspectiveDsl.g:24439:2: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:24538:1: ( ( ruleArrayBrackets ) )
+            // InternalPerspectiveDsl.g:24539:2: ( ruleArrayBrackets )
             {
-            // InternalPerspectiveDsl.g:24439:2: ( ruleArrayBrackets )
-            // InternalPerspectiveDsl.g:24440:3: ruleArrayBrackets
+            // InternalPerspectiveDsl.g:24539:2: ( ruleArrayBrackets )
+            // InternalPerspectiveDsl.g:24540:3: ruleArrayBrackets
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
@@ -79123,17 +79464,17 @@
 
 
     // $ANTLR start "rule__XThrowExpression__ExpressionAssignment_2"
-    // InternalPerspectiveDsl.g:24449:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24549:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24453:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24454:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24553:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24554:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24454:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24455:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24554:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24555:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -79168,17 +79509,17 @@
 
 
     // $ANTLR start "rule__XReturnExpression__ExpressionAssignment_2"
-    // InternalPerspectiveDsl.g:24464:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24564:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24468:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24469:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24568:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24569:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24469:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24470:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24569:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24570:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -79213,17 +79554,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__ExpressionAssignment_2"
-    // InternalPerspectiveDsl.g:24479:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24579:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24483:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24484:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24583:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24584:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24484:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24485:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24584:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24585:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -79258,17 +79599,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0"
-    // InternalPerspectiveDsl.g:24494:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
+    // InternalPerspectiveDsl.g:24594:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
     public final void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24498:1: ( ( ruleXCatchClause ) )
-            // InternalPerspectiveDsl.g:24499:2: ( ruleXCatchClause )
+            // InternalPerspectiveDsl.g:24598:1: ( ( ruleXCatchClause ) )
+            // InternalPerspectiveDsl.g:24599:2: ( ruleXCatchClause )
             {
-            // InternalPerspectiveDsl.g:24499:2: ( ruleXCatchClause )
-            // InternalPerspectiveDsl.g:24500:3: ruleXCatchClause
+            // InternalPerspectiveDsl.g:24599:2: ( ruleXCatchClause )
+            // InternalPerspectiveDsl.g:24600:3: ruleXCatchClause
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
@@ -79303,17 +79644,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1"
-    // InternalPerspectiveDsl.g:24509:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24609:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24513:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24514:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24613:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24614:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24514:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24515:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24614:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24615:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
@@ -79348,17 +79689,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1"
-    // InternalPerspectiveDsl.g:24524:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24624:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24528:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24529:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24628:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24629:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24529:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24530:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24629:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24630:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
@@ -79393,17 +79734,17 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__ParamAssignment_1"
-    // InternalPerspectiveDsl.g:24539:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24639:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24543:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24544:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24643:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24644:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24544:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24545:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24644:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24645:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
@@ -79438,17 +79779,17 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__ExpressionAssignment_3"
-    // InternalPerspectiveDsl.g:24554:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24654:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24558:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24559:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24658:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24659:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24559:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24560:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24659:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24660:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
@@ -79483,17 +79824,17 @@
 
 
     // $ANTLR start "rule__XCatchClause__DeclaredParamAssignment_2"
-    // InternalPerspectiveDsl.g:24569:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
+    // InternalPerspectiveDsl.g:24669:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
     public final void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24573:1: ( ( ruleFullJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:24574:2: ( ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:24673:1: ( ( ruleFullJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:24674:2: ( ruleFullJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:24574:2: ( ruleFullJvmFormalParameter )
-            // InternalPerspectiveDsl.g:24575:3: ruleFullJvmFormalParameter
+            // InternalPerspectiveDsl.g:24674:2: ( ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:24675:3: ruleFullJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
@@ -79528,17 +79869,17 @@
 
 
     // $ANTLR start "rule__XCatchClause__ExpressionAssignment_4"
-    // InternalPerspectiveDsl.g:24584:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:24684:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
     public final void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24588:1: ( ( ruleXExpression ) )
-            // InternalPerspectiveDsl.g:24589:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24688:1: ( ( ruleXExpression ) )
+            // InternalPerspectiveDsl.g:24689:2: ( ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:24589:2: ( ruleXExpression )
-            // InternalPerspectiveDsl.g:24590:3: ruleXExpression
+            // InternalPerspectiveDsl.g:24689:2: ( ruleXExpression )
+            // InternalPerspectiveDsl.g:24690:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
@@ -79573,17 +79914,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0"
-    // InternalPerspectiveDsl.g:24599:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24699:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24603:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:24604:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24703:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24704:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:24604:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:24605:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24704:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24705:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
@@ -79618,17 +79959,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1"
-    // InternalPerspectiveDsl.g:24614:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24714:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24618:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:24619:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24718:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24719:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:24619:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:24620:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24719:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24720:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
@@ -79663,17 +80004,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ReturnTypeAssignment_2"
-    // InternalPerspectiveDsl.g:24629:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24729:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24633:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:24634:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24733:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24734:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:24634:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:24635:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24734:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24735:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
@@ -79708,23 +80049,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_0"
-    // InternalPerspectiveDsl.g:24644:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
+    // InternalPerspectiveDsl.g:24744:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
     public final void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24648:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalPerspectiveDsl.g:24649:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:24748:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalPerspectiveDsl.g:24749:2: ( ( ruleQualifiedName ) )
             {
-            // InternalPerspectiveDsl.g:24649:2: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:24650:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:24749:2: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:24750:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
             }
-            // InternalPerspectiveDsl.g:24651:3: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:24652:4: ruleQualifiedName
+            // InternalPerspectiveDsl.g:24751:3: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:24752:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeQualifiedNameParserRuleCall_0_0_1()); 
@@ -79765,17 +80106,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1"
-    // InternalPerspectiveDsl.g:24663:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24763:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24667:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:24668:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24767:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24768:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:24668:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:24669:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24768:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24769:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
@@ -79810,17 +80151,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1"
-    // InternalPerspectiveDsl.g:24678:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24778:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24682:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:24683:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24782:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24783:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:24683:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:24684:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24783:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24784:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
@@ -79855,23 +80196,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1"
-    // InternalPerspectiveDsl.g:24693:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
+    // InternalPerspectiveDsl.g:24793:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
     public final void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24697:1: ( ( ( ruleValidID ) ) )
-            // InternalPerspectiveDsl.g:24698:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:24797:1: ( ( ( ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:24798:2: ( ( ruleValidID ) )
             {
-            // InternalPerspectiveDsl.g:24698:2: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:24699:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24798:2: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:24799:3: ( ruleValidID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
             }
-            // InternalPerspectiveDsl.g:24700:3: ( ruleValidID )
-            // InternalPerspectiveDsl.g:24701:4: ruleValidID
+            // InternalPerspectiveDsl.g:24800:3: ( ruleValidID )
+            // InternalPerspectiveDsl.g:24801:4: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeValidIDParserRuleCall_1_4_1_0_1()); 
@@ -79912,17 +80253,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1"
-    // InternalPerspectiveDsl.g:24712:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24812:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24716:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:24717:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24816:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24817:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:24717:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:24718:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24817:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24818:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
@@ -79957,17 +80298,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1"
-    // InternalPerspectiveDsl.g:24727:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalPerspectiveDsl.g:24827:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24731:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalPerspectiveDsl.g:24732:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24831:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalPerspectiveDsl.g:24832:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalPerspectiveDsl.g:24732:2: ( ruleJvmArgumentTypeReference )
-            // InternalPerspectiveDsl.g:24733:3: ruleJvmArgumentTypeReference
+            // InternalPerspectiveDsl.g:24832:2: ( ruleJvmArgumentTypeReference )
+            // InternalPerspectiveDsl.g:24833:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
@@ -80002,17 +80343,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0"
-    // InternalPerspectiveDsl.g:24742:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
+    // InternalPerspectiveDsl.g:24842:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24746:1: ( ( ruleJvmUpperBound ) )
-            // InternalPerspectiveDsl.g:24747:2: ( ruleJvmUpperBound )
+            // InternalPerspectiveDsl.g:24846:1: ( ( ruleJvmUpperBound ) )
+            // InternalPerspectiveDsl.g:24847:2: ( ruleJvmUpperBound )
             {
-            // InternalPerspectiveDsl.g:24747:2: ( ruleJvmUpperBound )
-            // InternalPerspectiveDsl.g:24748:3: ruleJvmUpperBound
+            // InternalPerspectiveDsl.g:24847:2: ( ruleJvmUpperBound )
+            // InternalPerspectiveDsl.g:24848:3: ruleJvmUpperBound
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
@@ -80047,17 +80388,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1"
-    // InternalPerspectiveDsl.g:24757:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
+    // InternalPerspectiveDsl.g:24857:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24761:1: ( ( ruleJvmUpperBoundAnded ) )
-            // InternalPerspectiveDsl.g:24762:2: ( ruleJvmUpperBoundAnded )
+            // InternalPerspectiveDsl.g:24861:1: ( ( ruleJvmUpperBoundAnded ) )
+            // InternalPerspectiveDsl.g:24862:2: ( ruleJvmUpperBoundAnded )
             {
-            // InternalPerspectiveDsl.g:24762:2: ( ruleJvmUpperBoundAnded )
-            // InternalPerspectiveDsl.g:24763:3: ruleJvmUpperBoundAnded
+            // InternalPerspectiveDsl.g:24862:2: ( ruleJvmUpperBoundAnded )
+            // InternalPerspectiveDsl.g:24863:3: ruleJvmUpperBoundAnded
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
@@ -80092,17 +80433,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0"
-    // InternalPerspectiveDsl.g:24772:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
+    // InternalPerspectiveDsl.g:24872:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24776:1: ( ( ruleJvmLowerBound ) )
-            // InternalPerspectiveDsl.g:24777:2: ( ruleJvmLowerBound )
+            // InternalPerspectiveDsl.g:24876:1: ( ( ruleJvmLowerBound ) )
+            // InternalPerspectiveDsl.g:24877:2: ( ruleJvmLowerBound )
             {
-            // InternalPerspectiveDsl.g:24777:2: ( ruleJvmLowerBound )
-            // InternalPerspectiveDsl.g:24778:3: ruleJvmLowerBound
+            // InternalPerspectiveDsl.g:24877:2: ( ruleJvmLowerBound )
+            // InternalPerspectiveDsl.g:24878:3: ruleJvmLowerBound
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
@@ -80137,17 +80478,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1"
-    // InternalPerspectiveDsl.g:24787:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
+    // InternalPerspectiveDsl.g:24887:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24791:1: ( ( ruleJvmLowerBoundAnded ) )
-            // InternalPerspectiveDsl.g:24792:2: ( ruleJvmLowerBoundAnded )
+            // InternalPerspectiveDsl.g:24891:1: ( ( ruleJvmLowerBoundAnded ) )
+            // InternalPerspectiveDsl.g:24892:2: ( ruleJvmLowerBoundAnded )
             {
-            // InternalPerspectiveDsl.g:24792:2: ( ruleJvmLowerBoundAnded )
-            // InternalPerspectiveDsl.g:24793:3: ruleJvmLowerBoundAnded
+            // InternalPerspectiveDsl.g:24892:2: ( ruleJvmLowerBoundAnded )
+            // InternalPerspectiveDsl.g:24893:3: ruleJvmLowerBoundAnded
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
@@ -80182,17 +80523,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__TypeReferenceAssignment_1"
-    // InternalPerspectiveDsl.g:24802:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24902:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24806:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:24807:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24906:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24907:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:24807:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:24808:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24907:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24908:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -80227,17 +80568,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1"
-    // InternalPerspectiveDsl.g:24817:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24917:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24821:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:24822:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24921:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24922:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:24822:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:24823:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24922:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24923:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -80272,17 +80613,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__TypeReferenceAssignment_1"
-    // InternalPerspectiveDsl.g:24832:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24932:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24836:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:24837:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24936:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24937:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:24837:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:24838:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24937:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24938:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -80317,17 +80658,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1"
-    // InternalPerspectiveDsl.g:24847:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalPerspectiveDsl.g:24947:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24851:1: ( ( ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:24852:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24951:1: ( ( ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:24952:2: ( ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:24852:2: ( ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:24853:3: ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:24952:2: ( ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:24953:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -80362,17 +80703,17 @@
 
 
     // $ANTLR start "rule__XImportSection__ImportDeclarationsAssignment"
-    // InternalPerspectiveDsl.g:24862:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
+    // InternalPerspectiveDsl.g:24962:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
     public final void rule__XImportSection__ImportDeclarationsAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalPerspectiveDsl.g:24866:1: ( ( ruleXImportDeclaration ) )
-            // InternalPerspectiveDsl.g:24867:2: ( ruleXImportDeclaration )
+            // InternalPerspectiveDsl.g:24966:1: ( ( ruleXImportDeclaration ) )
+            // InternalPerspectiveDsl.g:24967:2: ( ruleXImportDeclaration )
             {
-            // InternalPerspectiveDsl.g:24867:2: ( ruleXImportDeclaration )
-            // InternalPerspectiveDsl.g:24868:3: ruleXImportDeclaration
+            // InternalPerspectiveDsl.g:24967:2: ( ruleXImportDeclaration )
+            // InternalPerspectiveDsl.g:24968:3: ruleXImportDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0()); 
@@ -80751,8 +81092,8 @@
 
     // $ANTLR start synpred131_InternalPerspectiveDsl
     public final void synpred131_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:9630:3: ( rule__XAssignment__Group_1_1__0 )
-        // InternalPerspectiveDsl.g:9630:3: rule__XAssignment__Group_1_1__0
+        // InternalPerspectiveDsl.g:9684:3: ( rule__XAssignment__Group_1_1__0 )
+        // InternalPerspectiveDsl.g:9684:3: rule__XAssignment__Group_1_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XAssignment__Group_1_1__0();
@@ -80766,8 +81107,8 @@
 
     // $ANTLR start synpred133_InternalPerspectiveDsl
     public final void synpred133_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:9981:3: ( rule__XOrExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:9981:3: rule__XOrExpression__Group_1__0
+        // InternalPerspectiveDsl.g:10035:3: ( rule__XOrExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:10035:3: rule__XOrExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XOrExpression__Group_1__0();
@@ -80781,8 +81122,8 @@
 
     // $ANTLR start synpred134_InternalPerspectiveDsl
     public final void synpred134_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:10170:3: ( rule__XAndExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:10170:3: rule__XAndExpression__Group_1__0
+        // InternalPerspectiveDsl.g:10224:3: ( rule__XAndExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:10224:3: rule__XAndExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XAndExpression__Group_1__0();
@@ -80796,8 +81137,8 @@
 
     // $ANTLR start synpred135_InternalPerspectiveDsl
     public final void synpred135_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:10359:3: ( rule__XEqualityExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:10359:3: rule__XEqualityExpression__Group_1__0
+        // InternalPerspectiveDsl.g:10413:3: ( rule__XEqualityExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:10413:3: rule__XEqualityExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XEqualityExpression__Group_1__0();
@@ -80811,8 +81152,8 @@
 
     // $ANTLR start synpred136_InternalPerspectiveDsl
     public final void synpred136_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:10548:3: ( rule__XRelationalExpression__Alternatives_1 )
-        // InternalPerspectiveDsl.g:10548:3: rule__XRelationalExpression__Alternatives_1
+        // InternalPerspectiveDsl.g:10602:3: ( rule__XRelationalExpression__Alternatives_1 )
+        // InternalPerspectiveDsl.g:10602:3: rule__XRelationalExpression__Alternatives_1
         {
         pushFollow(FOLLOW_2);
         rule__XRelationalExpression__Alternatives_1();
@@ -80826,8 +81167,8 @@
 
     // $ANTLR start synpred137_InternalPerspectiveDsl
     public final void synpred137_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:10926:3: ( rule__XOtherOperatorExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:10926:3: rule__XOtherOperatorExpression__Group_1__0
+        // InternalPerspectiveDsl.g:10980:3: ( rule__XOtherOperatorExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:10980:3: rule__XOtherOperatorExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XOtherOperatorExpression__Group_1__0();
@@ -80841,8 +81182,8 @@
 
     // $ANTLR start synpred138_InternalPerspectiveDsl
     public final void synpred138_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:11439:3: ( rule__XAdditiveExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:11439:3: rule__XAdditiveExpression__Group_1__0
+        // InternalPerspectiveDsl.g:11493:3: ( rule__XAdditiveExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:11493:3: rule__XAdditiveExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XAdditiveExpression__Group_1__0();
@@ -80856,8 +81197,8 @@
 
     // $ANTLR start synpred139_InternalPerspectiveDsl
     public final void synpred139_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:11628:3: ( rule__XMultiplicativeExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:11628:3: rule__XMultiplicativeExpression__Group_1__0
+        // InternalPerspectiveDsl.g:11682:3: ( rule__XMultiplicativeExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:11682:3: rule__XMultiplicativeExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XMultiplicativeExpression__Group_1__0();
@@ -80871,8 +81212,8 @@
 
     // $ANTLR start synpred140_InternalPerspectiveDsl
     public final void synpred140_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:11898:3: ( rule__XCastedExpression__Group_1__0 )
-        // InternalPerspectiveDsl.g:11898:3: rule__XCastedExpression__Group_1__0
+        // InternalPerspectiveDsl.g:11952:3: ( rule__XCastedExpression__Group_1__0 )
+        // InternalPerspectiveDsl.g:11952:3: rule__XCastedExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XCastedExpression__Group_1__0();
@@ -80886,8 +81227,8 @@
 
     // $ANTLR start synpred141_InternalPerspectiveDsl
     public final void synpred141_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:12087:3: ( rule__XPostfixOperation__Group_1__0 )
-        // InternalPerspectiveDsl.g:12087:3: rule__XPostfixOperation__Group_1__0
+        // InternalPerspectiveDsl.g:12141:3: ( rule__XPostfixOperation__Group_1__0 )
+        // InternalPerspectiveDsl.g:12141:3: rule__XPostfixOperation__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XPostfixOperation__Group_1__0();
@@ -80901,8 +81242,8 @@
 
     // $ANTLR start synpred142_InternalPerspectiveDsl
     public final void synpred142_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:12222:3: ( rule__XMemberFeatureCall__Alternatives_1 )
-        // InternalPerspectiveDsl.g:12222:3: rule__XMemberFeatureCall__Alternatives_1
+        // InternalPerspectiveDsl.g:12276:3: ( rule__XMemberFeatureCall__Alternatives_1 )
+        // InternalPerspectiveDsl.g:12276:3: rule__XMemberFeatureCall__Alternatives_1
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__Alternatives_1();
@@ -80916,8 +81257,8 @@
 
     // $ANTLR start synpred144_InternalPerspectiveDsl
     public final void synpred144_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:12520:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
-        // InternalPerspectiveDsl.g:12520:3: rule__XMemberFeatureCall__Group_1_1_3__0
+        // InternalPerspectiveDsl.g:12574:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
+        // InternalPerspectiveDsl.g:12574:3: rule__XMemberFeatureCall__Group_1_1_3__0
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__Group_1_1_3__0();
@@ -80931,8 +81272,8 @@
 
     // $ANTLR start synpred145_InternalPerspectiveDsl
     public final void synpred145_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:12546:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
-        // InternalPerspectiveDsl.g:12546:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+        // InternalPerspectiveDsl.g:12600:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
+        // InternalPerspectiveDsl.g:12600:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
@@ -80946,8 +81287,8 @@
 
     // $ANTLR start synpred153_InternalPerspectiveDsl
     public final void synpred153_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:13519:3: ( rule__XClosure__Group_1__0 )
-        // InternalPerspectiveDsl.g:13519:3: rule__XClosure__Group_1__0
+        // InternalPerspectiveDsl.g:13573:3: ( rule__XClosure__Group_1__0 )
+        // InternalPerspectiveDsl.g:13573:3: rule__XClosure__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XClosure__Group_1__0();
@@ -80961,8 +81302,8 @@
 
     // $ANTLR start synpred160_InternalPerspectiveDsl
     public final void synpred160_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:14490:3: ( rule__XIfExpression__Group_6__0 )
-        // InternalPerspectiveDsl.g:14490:3: rule__XIfExpression__Group_6__0
+        // InternalPerspectiveDsl.g:14544:3: ( rule__XIfExpression__Group_6__0 )
+        // InternalPerspectiveDsl.g:14544:3: rule__XIfExpression__Group_6__0
         {
         pushFollow(FOLLOW_2);
         rule__XIfExpression__Group_6__0();
@@ -80976,8 +81317,8 @@
 
     // $ANTLR start synpred163_InternalPerspectiveDsl
     public final void synpred163_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:14950:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
-        // InternalPerspectiveDsl.g:14950:3: rule__XSwitchExpression__Group_2_1_0__0
+        // InternalPerspectiveDsl.g:15004:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
+        // InternalPerspectiveDsl.g:15004:3: rule__XSwitchExpression__Group_2_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XSwitchExpression__Group_2_1_0__0();
@@ -80991,8 +81332,8 @@
 
     // $ANTLR start synpred176_InternalPerspectiveDsl
     public final void synpred176_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:17083:3: ( rule__XFeatureCall__Group_3__0 )
-        // InternalPerspectiveDsl.g:17083:3: rule__XFeatureCall__Group_3__0
+        // InternalPerspectiveDsl.g:17137:3: ( rule__XFeatureCall__Group_3__0 )
+        // InternalPerspectiveDsl.g:17137:3: rule__XFeatureCall__Group_3__0
         {
         pushFollow(FOLLOW_2);
         rule__XFeatureCall__Group_3__0();
@@ -81006,8 +81347,8 @@
 
     // $ANTLR start synpred177_InternalPerspectiveDsl
     public final void synpred177_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:17109:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
-        // InternalPerspectiveDsl.g:17109:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+        // InternalPerspectiveDsl.g:17163:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
+        // InternalPerspectiveDsl.g:17163:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
         {
         pushFollow(FOLLOW_2);
         rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
@@ -81021,8 +81362,8 @@
 
     // $ANTLR start synpred181_InternalPerspectiveDsl
     public final void synpred181_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:17569:3: ( rule__XConstructorCall__Group_3__0 )
-        // InternalPerspectiveDsl.g:17569:3: rule__XConstructorCall__Group_3__0
+        // InternalPerspectiveDsl.g:17623:3: ( rule__XConstructorCall__Group_3__0 )
+        // InternalPerspectiveDsl.g:17623:3: rule__XConstructorCall__Group_3__0
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__Group_3__0();
@@ -81036,8 +81377,8 @@
 
     // $ANTLR start synpred182_InternalPerspectiveDsl
     public final void synpred182_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:17596:3: ( rule__XConstructorCall__Group_4__0 )
-        // InternalPerspectiveDsl.g:17596:3: rule__XConstructorCall__Group_4__0
+        // InternalPerspectiveDsl.g:17650:3: ( rule__XConstructorCall__Group_4__0 )
+        // InternalPerspectiveDsl.g:17650:3: rule__XConstructorCall__Group_4__0
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__Group_4__0();
@@ -81051,8 +81392,8 @@
 
     // $ANTLR start synpred183_InternalPerspectiveDsl
     public final void synpred183_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:17622:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
-        // InternalPerspectiveDsl.g:17622:3: rule__XConstructorCall__ArgumentsAssignment_5
+        // InternalPerspectiveDsl.g:17676:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
+        // InternalPerspectiveDsl.g:17676:3: rule__XConstructorCall__ArgumentsAssignment_5
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__ArgumentsAssignment_5();
@@ -81066,8 +81407,8 @@
 
     // $ANTLR start synpred188_InternalPerspectiveDsl
     public final void synpred188_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:18513:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
-        // InternalPerspectiveDsl.g:18513:3: rule__XReturnExpression__ExpressionAssignment_2
+        // InternalPerspectiveDsl.g:18567:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
+        // InternalPerspectiveDsl.g:18567:3: rule__XReturnExpression__ExpressionAssignment_2
         {
         pushFollow(FOLLOW_2);
         rule__XReturnExpression__ExpressionAssignment_2();
@@ -81081,8 +81422,8 @@
 
     // $ANTLR start synpred189_InternalPerspectiveDsl
     public final void synpred189_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:18655:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
-        // InternalPerspectiveDsl.g:18655:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+        // InternalPerspectiveDsl.g:18709:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+        // InternalPerspectiveDsl.g:18709:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
         {
         pushFollow(FOLLOW_2);
         rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
@@ -81096,8 +81437,8 @@
 
     // $ANTLR start synpred190_InternalPerspectiveDsl
     public final void synpred190_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:18682:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
-        // InternalPerspectiveDsl.g:18682:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+        // InternalPerspectiveDsl.g:18736:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
+        // InternalPerspectiveDsl.g:18736:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XTryCatchFinallyExpression__Group_3_0_1__0();
@@ -81111,8 +81452,8 @@
 
     // $ANTLR start synpred191_InternalPerspectiveDsl
     public final void synpred191_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:19195:3: ( rule__QualifiedName__Group_1__0 )
-        // InternalPerspectiveDsl.g:19195:3: rule__QualifiedName__Group_1__0
+        // InternalPerspectiveDsl.g:19249:3: ( rule__QualifiedName__Group_1__0 )
+        // InternalPerspectiveDsl.g:19249:3: rule__QualifiedName__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__QualifiedName__Group_1__0();
@@ -81126,8 +81467,8 @@
 
     // $ANTLR start synpred193_InternalPerspectiveDsl
     public final void synpred193_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:19411:3: ( rule__JvmTypeReference__Group_0_1__0 )
-        // InternalPerspectiveDsl.g:19411:3: rule__JvmTypeReference__Group_0_1__0
+        // InternalPerspectiveDsl.g:19465:3: ( rule__JvmTypeReference__Group_0_1__0 )
+        // InternalPerspectiveDsl.g:19465:3: rule__JvmTypeReference__Group_0_1__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmTypeReference__Group_0_1__0();
@@ -81141,8 +81482,8 @@
 
     // $ANTLR start synpred197_InternalPerspectiveDsl
     public final void synpred197_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:19870:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
-        // InternalPerspectiveDsl.g:19870:3: rule__JvmParameterizedTypeReference__Group_1__0
+        // InternalPerspectiveDsl.g:19924:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
+        // InternalPerspectiveDsl.g:19924:3: rule__JvmParameterizedTypeReference__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1__0();
@@ -81156,8 +81497,8 @@
 
     // $ANTLR start synpred199_InternalPerspectiveDsl
     public final void synpred199_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20005:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
-        // InternalPerspectiveDsl.g:20005:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+        // InternalPerspectiveDsl.g:20059:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
+        // InternalPerspectiveDsl.g:20059:3: rule__JvmParameterizedTypeReference__Group_1_4__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1_4__0();
@@ -81171,8 +81512,8 @@
 
     // $ANTLR start synpred200_InternalPerspectiveDsl
     public final void synpred200_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20140:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
-        // InternalPerspectiveDsl.g:20140:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+        // InternalPerspectiveDsl.g:20194:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
+        // InternalPerspectiveDsl.g:20194:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1_4_2__0();
@@ -81186,8 +81527,8 @@
 
     // $ANTLR start synpred205_InternalPerspectiveDsl
     public final void synpred205_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20938:2: ( rule__Perspective__UnorderedGroup_5__0 )
-        // InternalPerspectiveDsl.g:20938:2: rule__Perspective__UnorderedGroup_5__0
+        // InternalPerspectiveDsl.g:20992:2: ( rule__Perspective__UnorderedGroup_5__0 )
+        // InternalPerspectiveDsl.g:20992:2: rule__Perspective__UnorderedGroup_5__0
         {
         pushFollow(FOLLOW_2);
         rule__Perspective__UnorderedGroup_5__0();
@@ -81201,28 +81542,28 @@
 
     // $ANTLR start synpred206_InternalPerspectiveDsl
     public final void synpred206_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20953:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20953:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21007:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21007:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:20953:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20954:4: {...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+        // InternalPerspectiveDsl.g:21007:3: ({...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21008:4: {...}? => ( ( ( rule__Perspective__Group_5_0__0 ) ) )
         {
         if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
             throw new FailedPredicateException(input, "synpred206_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)");
         }
-        // InternalPerspectiveDsl.g:20954:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
-        // InternalPerspectiveDsl.g:20955:5: ( ( rule__Perspective__Group_5_0__0 ) )
+        // InternalPerspectiveDsl.g:21008:107: ( ( ( rule__Perspective__Group_5_0__0 ) ) )
+        // InternalPerspectiveDsl.g:21009:5: ( ( rule__Perspective__Group_5_0__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
-        // InternalPerspectiveDsl.g:20961:5: ( ( rule__Perspective__Group_5_0__0 ) )
-        // InternalPerspectiveDsl.g:20962:6: ( rule__Perspective__Group_5_0__0 )
+        // InternalPerspectiveDsl.g:21015:5: ( ( rule__Perspective__Group_5_0__0 ) )
+        // InternalPerspectiveDsl.g:21016:6: ( rule__Perspective__Group_5_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectiveAccess().getGroup_5_0()); 
         }
-        // InternalPerspectiveDsl.g:20963:6: ( rule__Perspective__Group_5_0__0 )
-        // InternalPerspectiveDsl.g:20963:7: rule__Perspective__Group_5_0__0
+        // InternalPerspectiveDsl.g:21017:6: ( rule__Perspective__Group_5_0__0 )
+        // InternalPerspectiveDsl.g:21017:7: rule__Perspective__Group_5_0__0
         {
         pushFollow(FOLLOW_2);
         rule__Perspective__Group_5_0__0();
@@ -81248,28 +81589,28 @@
 
     // $ANTLR start synpred207_InternalPerspectiveDsl
     public final void synpred207_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:20968:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:20968:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21022:3: ( ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21022:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:20968:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
-        // InternalPerspectiveDsl.g:20969:4: {...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+        // InternalPerspectiveDsl.g:21022:3: ({...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21023:4: {...}? => ( ( ( rule__Perspective__Group_5_1__0 ) ) )
         {
         if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
             throw new FailedPredicateException(input, "synpred207_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1)");
         }
-        // InternalPerspectiveDsl.g:20969:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
-        // InternalPerspectiveDsl.g:20970:5: ( ( rule__Perspective__Group_5_1__0 ) )
+        // InternalPerspectiveDsl.g:21023:107: ( ( ( rule__Perspective__Group_5_1__0 ) ) )
+        // InternalPerspectiveDsl.g:21024:5: ( ( rule__Perspective__Group_5_1__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 1);
-        // InternalPerspectiveDsl.g:20976:5: ( ( rule__Perspective__Group_5_1__0 ) )
-        // InternalPerspectiveDsl.g:20977:6: ( rule__Perspective__Group_5_1__0 )
+        // InternalPerspectiveDsl.g:21030:5: ( ( rule__Perspective__Group_5_1__0 ) )
+        // InternalPerspectiveDsl.g:21031:6: ( rule__Perspective__Group_5_1__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectiveAccess().getGroup_5_1()); 
         }
-        // InternalPerspectiveDsl.g:20978:6: ( rule__Perspective__Group_5_1__0 )
-        // InternalPerspectiveDsl.g:20978:7: rule__Perspective__Group_5_1__0
+        // InternalPerspectiveDsl.g:21032:6: ( rule__Perspective__Group_5_1__0 )
+        // InternalPerspectiveDsl.g:21032:7: rule__Perspective__Group_5_1__0
         {
         pushFollow(FOLLOW_2);
         rule__Perspective__Group_5_1__0();
@@ -81295,8 +81636,8 @@
 
     // $ANTLR start synpred208_InternalPerspectiveDsl
     public final void synpred208_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21012:2: ( rule__Perspective__UnorderedGroup_5__1 )
-        // InternalPerspectiveDsl.g:21012:2: rule__Perspective__UnorderedGroup_5__1
+        // InternalPerspectiveDsl.g:21066:2: ( rule__Perspective__UnorderedGroup_5__1 )
+        // InternalPerspectiveDsl.g:21066:2: rule__Perspective__UnorderedGroup_5__1
         {
         pushFollow(FOLLOW_2);
         rule__Perspective__UnorderedGroup_5__1();
@@ -81310,8 +81651,8 @@
 
     // $ANTLR start synpred209_InternalPerspectiveDsl
     public final void synpred209_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21024:2: ( rule__Perspective__UnorderedGroup_5__2 )
-        // InternalPerspectiveDsl.g:21024:2: rule__Perspective__UnorderedGroup_5__2
+        // InternalPerspectiveDsl.g:21078:2: ( rule__Perspective__UnorderedGroup_5__2 )
+        // InternalPerspectiveDsl.g:21078:2: rule__Perspective__UnorderedGroup_5__2
         {
         pushFollow(FOLLOW_2);
         rule__Perspective__UnorderedGroup_5__2();
@@ -81325,8 +81666,8 @@
 
     // $ANTLR start synpred210_InternalPerspectiveDsl
     public final void synpred210_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21048:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )
-        // InternalPerspectiveDsl.g:21048:2: rule__PerspectiveSashContainer__UnorderedGroup_3__0
+        // InternalPerspectiveDsl.g:21102:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__0 )
+        // InternalPerspectiveDsl.g:21102:2: rule__PerspectiveSashContainer__UnorderedGroup_3__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSashContainer__UnorderedGroup_3__0();
@@ -81340,28 +81681,28 @@
 
     // $ANTLR start synpred211_InternalPerspectiveDsl
     public final void synpred211_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21063:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21063:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21117:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21117:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:21063:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21064:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:21117:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21118:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
         {
         if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
             throw new FailedPredicateException(input, "synpred211_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0)");
         }
-        // InternalPerspectiveDsl.g:21064:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
-        // InternalPerspectiveDsl.g:21065:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:21118:120: ( ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:21119:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 0);
-        // InternalPerspectiveDsl.g:21071:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
-        // InternalPerspectiveDsl.g:21072:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:21125:5: ( ( rule__PerspectiveSashContainer__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:21126:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_0()); 
         }
-        // InternalPerspectiveDsl.g:21073:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
-        // InternalPerspectiveDsl.g:21073:7: rule__PerspectiveSashContainer__Group_3_0__0
+        // InternalPerspectiveDsl.g:21127:6: ( rule__PerspectiveSashContainer__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:21127:7: rule__PerspectiveSashContainer__Group_3_0__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSashContainer__Group_3_0__0();
@@ -81387,28 +81728,28 @@
 
     // $ANTLR start synpred212_InternalPerspectiveDsl
     public final void synpred212_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21078:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21078:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21132:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21132:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:21078:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21079:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:21132:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21133:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
         {
         if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
             throw new FailedPredicateException(input, "synpred212_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1)");
         }
-        // InternalPerspectiveDsl.g:21079:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
-        // InternalPerspectiveDsl.g:21080:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:21133:120: ( ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:21134:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 1);
-        // InternalPerspectiveDsl.g:21086:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
-        // InternalPerspectiveDsl.g:21087:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:21140:5: ( ( rule__PerspectiveSashContainer__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:21141:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_1()); 
         }
-        // InternalPerspectiveDsl.g:21088:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
-        // InternalPerspectiveDsl.g:21088:7: rule__PerspectiveSashContainer__Group_3_1__0
+        // InternalPerspectiveDsl.g:21142:6: ( rule__PerspectiveSashContainer__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:21142:7: rule__PerspectiveSashContainer__Group_3_1__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSashContainer__Group_3_1__0();
@@ -81434,28 +81775,28 @@
 
     // $ANTLR start synpred213_InternalPerspectiveDsl
     public final void synpred213_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21093:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21093:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21147:3: ( ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21147:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:21093:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21094:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:21147:3: ({...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21148:4: {...}? => ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
         {
         if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
             throw new FailedPredicateException(input, "synpred213_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2)");
         }
-        // InternalPerspectiveDsl.g:21094:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
-        // InternalPerspectiveDsl.g:21095:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:21148:120: ( ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:21149:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSashContainerAccess().getUnorderedGroup_3(), 2);
-        // InternalPerspectiveDsl.g:21101:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
-        // InternalPerspectiveDsl.g:21102:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+        // InternalPerspectiveDsl.g:21155:5: ( ( rule__PerspectiveSashContainer__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:21156:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectiveSashContainerAccess().getGroup_3_2()); 
         }
-        // InternalPerspectiveDsl.g:21103:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
-        // InternalPerspectiveDsl.g:21103:7: rule__PerspectiveSashContainer__Group_3_2__0
+        // InternalPerspectiveDsl.g:21157:6: ( rule__PerspectiveSashContainer__Group_3_2__0 )
+        // InternalPerspectiveDsl.g:21157:7: rule__PerspectiveSashContainer__Group_3_2__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSashContainer__Group_3_2__0();
@@ -81481,8 +81822,8 @@
 
     // $ANTLR start synpred214_InternalPerspectiveDsl
     public final void synpred214_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21137:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )
-        // InternalPerspectiveDsl.g:21137:2: rule__PerspectiveSashContainer__UnorderedGroup_3__1
+        // InternalPerspectiveDsl.g:21191:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__1 )
+        // InternalPerspectiveDsl.g:21191:2: rule__PerspectiveSashContainer__UnorderedGroup_3__1
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSashContainer__UnorderedGroup_3__1();
@@ -81496,8 +81837,8 @@
 
     // $ANTLR start synpred215_InternalPerspectiveDsl
     public final void synpred215_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21149:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )
-        // InternalPerspectiveDsl.g:21149:2: rule__PerspectiveSashContainer__UnorderedGroup_3__2
+        // InternalPerspectiveDsl.g:21203:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__2 )
+        // InternalPerspectiveDsl.g:21203:2: rule__PerspectiveSashContainer__UnorderedGroup_3__2
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSashContainer__UnorderedGroup_3__2();
@@ -81511,8 +81852,8 @@
 
     // $ANTLR start synpred216_InternalPerspectiveDsl
     public final void synpred216_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21161:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )
-        // InternalPerspectiveDsl.g:21161:2: rule__PerspectiveSashContainer__UnorderedGroup_3__3
+        // InternalPerspectiveDsl.g:21215:2: ( rule__PerspectiveSashContainer__UnorderedGroup_3__3 )
+        // InternalPerspectiveDsl.g:21215:2: rule__PerspectiveSashContainer__UnorderedGroup_3__3
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSashContainer__UnorderedGroup_3__3();
@@ -81526,8 +81867,8 @@
 
     // $ANTLR start synpred217_InternalPerspectiveDsl
     public final void synpred217_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21185:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )
-        // InternalPerspectiveDsl.g:21185:2: rule__PerspectivePartStack__UnorderedGroup_3__0
+        // InternalPerspectiveDsl.g:21239:2: ( rule__PerspectivePartStack__UnorderedGroup_3__0 )
+        // InternalPerspectiveDsl.g:21239:2: rule__PerspectivePartStack__UnorderedGroup_3__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectivePartStack__UnorderedGroup_3__0();
@@ -81541,28 +81882,28 @@
 
     // $ANTLR start synpred218_InternalPerspectiveDsl
     public final void synpred218_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21200:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21200:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21254:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21254:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:21200:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21201:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:21254:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21255:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
         {
         if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
             throw new FailedPredicateException(input, "synpred218_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0)");
         }
-        // InternalPerspectiveDsl.g:21201:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
-        // InternalPerspectiveDsl.g:21202:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:21255:116: ( ( ( rule__PerspectivePartStack__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:21256:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0);
-        // InternalPerspectiveDsl.g:21208:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
-        // InternalPerspectiveDsl.g:21209:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:21262:5: ( ( rule__PerspectivePartStack__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:21263:6: ( rule__PerspectivePartStack__Group_3_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_0()); 
         }
-        // InternalPerspectiveDsl.g:21210:6: ( rule__PerspectivePartStack__Group_3_0__0 )
-        // InternalPerspectiveDsl.g:21210:7: rule__PerspectivePartStack__Group_3_0__0
+        // InternalPerspectiveDsl.g:21264:6: ( rule__PerspectivePartStack__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:21264:7: rule__PerspectivePartStack__Group_3_0__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectivePartStack__Group_3_0__0();
@@ -81588,28 +81929,28 @@
 
     // $ANTLR start synpred219_InternalPerspectiveDsl
     public final void synpred219_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21215:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21215:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21269:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21269:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:21215:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21216:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:21269:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21270:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
         {
         if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
             throw new FailedPredicateException(input, "synpred219_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)");
         }
-        // InternalPerspectiveDsl.g:21216:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
-        // InternalPerspectiveDsl.g:21217:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:21270:116: ( ( ( rule__PerspectivePartStack__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:21271:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
-        // InternalPerspectiveDsl.g:21223:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
-        // InternalPerspectiveDsl.g:21224:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:21277:5: ( ( rule__PerspectivePartStack__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:21278:6: ( rule__PerspectivePartStack__Group_3_1__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_1()); 
         }
-        // InternalPerspectiveDsl.g:21225:6: ( rule__PerspectivePartStack__Group_3_1__0 )
-        // InternalPerspectiveDsl.g:21225:7: rule__PerspectivePartStack__Group_3_1__0
+        // InternalPerspectiveDsl.g:21279:6: ( rule__PerspectivePartStack__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:21279:7: rule__PerspectivePartStack__Group_3_1__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectivePartStack__Group_3_1__0();
@@ -81635,26 +81976,58 @@
 
     // $ANTLR start synpred220_InternalPerspectiveDsl
     public final void synpred220_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21259:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )
-        // InternalPerspectiveDsl.g:21259:2: rule__PerspectivePartStack__UnorderedGroup_3__1
+        // InternalPerspectiveDsl.g:21284:3: ( ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21284:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:21284:3: ({...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21285:4: {...}? => ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred220_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2)");
+        }
+        // InternalPerspectiveDsl.g:21285:116: ( ( ( rule__PerspectivePartStack__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:21286:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
+        // InternalPerspectiveDsl.g:21292:5: ( ( rule__PerspectivePartStack__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:21293:6: ( rule__PerspectivePartStack__Group_3_2__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartStackAccess().getGroup_3_2()); 
+        }
+        // InternalPerspectiveDsl.g:21294:6: ( rule__PerspectivePartStack__Group_3_2__0 )
+        // InternalPerspectiveDsl.g:21294:7: rule__PerspectivePartStack__Group_3_2__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePartStack__UnorderedGroup_3__1();
+        rule__PerspectivePartStack__Group_3_2__0();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
     }
     // $ANTLR end synpred220_InternalPerspectiveDsl
 
     // $ANTLR start synpred221_InternalPerspectiveDsl
     public final void synpred221_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21271:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )
-        // InternalPerspectiveDsl.g:21271:2: rule__PerspectivePartStack__UnorderedGroup_3__2
+        // InternalPerspectiveDsl.g:21328:2: ( rule__PerspectivePartStack__UnorderedGroup_3__1 )
+        // InternalPerspectiveDsl.g:21328:2: rule__PerspectivePartStack__UnorderedGroup_3__1
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePartStack__UnorderedGroup_3__2();
+        rule__PerspectivePartStack__UnorderedGroup_3__1();
 
         state._fsp--;
         if (state.failed) return ;
@@ -81665,11 +82038,11 @@
 
     // $ANTLR start synpred222_InternalPerspectiveDsl
     public final void synpred222_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21295:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )
-        // InternalPerspectiveDsl.g:21295:2: rule__PerspectivePart__UnorderedGroup_3__0
+        // InternalPerspectiveDsl.g:21340:2: ( rule__PerspectivePartStack__UnorderedGroup_3__2 )
+        // InternalPerspectiveDsl.g:21340:2: rule__PerspectivePartStack__UnorderedGroup_3__2
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__UnorderedGroup_3__0();
+        rule__PerspectivePartStack__UnorderedGroup_3__2();
 
         state._fsp--;
         if (state.failed) return ;
@@ -81680,125 +82053,61 @@
 
     // $ANTLR start synpred223_InternalPerspectiveDsl
     public final void synpred223_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21310:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21310:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
-        {
-        // InternalPerspectiveDsl.g:21310:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21311:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
-        {
-        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
-            if (state.backtracking>0) {state.failed=true; return ;}
-            throw new FailedPredicateException(input, "synpred223_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)");
-        }
-        // InternalPerspectiveDsl.g:21311:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
-        // InternalPerspectiveDsl.g:21312:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
-        {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
-        // InternalPerspectiveDsl.g:21318:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
-        // InternalPerspectiveDsl.g:21319:6: ( rule__PerspectivePart__Group_3_0__0 )
-        {
-        if ( state.backtracking==0 ) {
-           before(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); 
-        }
-        // InternalPerspectiveDsl.g:21320:6: ( rule__PerspectivePart__Group_3_0__0 )
-        // InternalPerspectiveDsl.g:21320:7: rule__PerspectivePart__Group_3_0__0
+        // InternalPerspectiveDsl.g:21352:2: ( rule__PerspectivePartStack__UnorderedGroup_3__3 )
+        // InternalPerspectiveDsl.g:21352:2: rule__PerspectivePartStack__UnorderedGroup_3__3
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__Group_3_0__0();
+        rule__PerspectivePartStack__UnorderedGroup_3__3();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
-
-
-        }
-
-
-        }
-
-
-        }
-
-
-        }
     }
     // $ANTLR end synpred223_InternalPerspectiveDsl
 
     // $ANTLR start synpred224_InternalPerspectiveDsl
     public final void synpred224_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21325:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21325:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
-        {
-        // InternalPerspectiveDsl.g:21325:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21326:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
-        {
-        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
-            if (state.backtracking>0) {state.failed=true; return ;}
-            throw new FailedPredicateException(input, "synpred224_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)");
-        }
-        // InternalPerspectiveDsl.g:21326:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
-        // InternalPerspectiveDsl.g:21327:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
-        {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
-        // InternalPerspectiveDsl.g:21333:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
-        // InternalPerspectiveDsl.g:21334:6: ( rule__PerspectivePart__Group_3_1__0 )
-        {
-        if ( state.backtracking==0 ) {
-           before(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); 
-        }
-        // InternalPerspectiveDsl.g:21335:6: ( rule__PerspectivePart__Group_3_1__0 )
-        // InternalPerspectiveDsl.g:21335:7: rule__PerspectivePart__Group_3_1__0
+        // InternalPerspectiveDsl.g:21376:2: ( rule__PerspectivePart__UnorderedGroup_3__0 )
+        // InternalPerspectiveDsl.g:21376:2: rule__PerspectivePart__UnorderedGroup_3__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__Group_3_1__0();
+        rule__PerspectivePart__UnorderedGroup_3__0();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
-
-
-        }
-
-
-        }
-
-
-        }
-
-
-        }
     }
     // $ANTLR end synpred224_InternalPerspectiveDsl
 
     // $ANTLR start synpred225_InternalPerspectiveDsl
     public final void synpred225_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21340:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21340:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21391:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21391:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:21340:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21341:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:21391:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21392:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
         {
-        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
-            throw new FailedPredicateException(input, "synpred225_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)");
+            throw new FailedPredicateException(input, "synpred225_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)");
         }
-        // InternalPerspectiveDsl.g:21341:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
-        // InternalPerspectiveDsl.g:21342:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:21392:111: ( ( ( rule__PerspectivePart__Group_3_0__0 ) ) )
+        // InternalPerspectiveDsl.g:21393:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
         {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
-        // InternalPerspectiveDsl.g:21348:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
-        // InternalPerspectiveDsl.g:21349:6: ( rule__PerspectivePart__Group_3_2__0 )
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
+        // InternalPerspectiveDsl.g:21399:5: ( ( rule__PerspectivePart__Group_3_0__0 ) )
+        // InternalPerspectiveDsl.g:21400:6: ( rule__PerspectivePart__Group_3_0__0 )
         {
         if ( state.backtracking==0 ) {
-           before(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); 
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_0()); 
         }
-        // InternalPerspectiveDsl.g:21350:6: ( rule__PerspectivePart__Group_3_2__0 )
-        // InternalPerspectiveDsl.g:21350:7: rule__PerspectivePart__Group_3_2__0
+        // InternalPerspectiveDsl.g:21401:6: ( rule__PerspectivePart__Group_3_0__0 )
+        // InternalPerspectiveDsl.g:21401:7: rule__PerspectivePart__Group_3_0__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__Group_3_2__0();
+        rule__PerspectivePart__Group_3_0__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -81821,31 +82130,31 @@
 
     // $ANTLR start synpred226_InternalPerspectiveDsl
     public final void synpred226_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21355:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21355:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21406:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21406:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
         {
-        // InternalPerspectiveDsl.g:21355:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21356:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+        // InternalPerspectiveDsl.g:21406:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21407:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
         {
-        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
-            throw new FailedPredicateException(input, "synpred226_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)");
+            throw new FailedPredicateException(input, "synpred226_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)");
         }
-        // InternalPerspectiveDsl.g:21356:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
-        // InternalPerspectiveDsl.g:21357:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+        // InternalPerspectiveDsl.g:21407:111: ( ( ( rule__PerspectivePart__Group_3_1__0 ) ) )
+        // InternalPerspectiveDsl.g:21408:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
         {
-        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
-        // InternalPerspectiveDsl.g:21363:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
-        // InternalPerspectiveDsl.g:21364:6: ( rule__PerspectivePart__Group_3_3__0 )
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
+        // InternalPerspectiveDsl.g:21414:5: ( ( rule__PerspectivePart__Group_3_1__0 ) )
+        // InternalPerspectiveDsl.g:21415:6: ( rule__PerspectivePart__Group_3_1__0 )
         {
         if ( state.backtracking==0 ) {
-           before(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); 
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_1()); 
         }
-        // InternalPerspectiveDsl.g:21365:6: ( rule__PerspectivePart__Group_3_3__0 )
-        // InternalPerspectiveDsl.g:21365:7: rule__PerspectivePart__Group_3_3__0
+        // InternalPerspectiveDsl.g:21416:6: ( rule__PerspectivePart__Group_3_1__0 )
+        // InternalPerspectiveDsl.g:21416:7: rule__PerspectivePart__Group_3_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__Group_3_3__0();
+        rule__PerspectivePart__Group_3_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -81868,41 +82177,105 @@
 
     // $ANTLR start synpred227_InternalPerspectiveDsl
     public final void synpred227_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21399:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )
-        // InternalPerspectiveDsl.g:21399:2: rule__PerspectivePart__UnorderedGroup_3__1
+        // InternalPerspectiveDsl.g:21421:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21421:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:21421:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21422:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred227_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)");
+        }
+        // InternalPerspectiveDsl.g:21422:111: ( ( ( rule__PerspectivePart__Group_3_2__0 ) ) )
+        // InternalPerspectiveDsl.g:21423:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
+        // InternalPerspectiveDsl.g:21429:5: ( ( rule__PerspectivePart__Group_3_2__0 ) )
+        // InternalPerspectiveDsl.g:21430:6: ( rule__PerspectivePart__Group_3_2__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_2()); 
+        }
+        // InternalPerspectiveDsl.g:21431:6: ( rule__PerspectivePart__Group_3_2__0 )
+        // InternalPerspectiveDsl.g:21431:7: rule__PerspectivePart__Group_3_2__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__UnorderedGroup_3__1();
+        rule__PerspectivePart__Group_3_2__0();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
     }
     // $ANTLR end synpred227_InternalPerspectiveDsl
 
     // $ANTLR start synpred228_InternalPerspectiveDsl
     public final void synpred228_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21411:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )
-        // InternalPerspectiveDsl.g:21411:2: rule__PerspectivePart__UnorderedGroup_3__2
+        // InternalPerspectiveDsl.g:21436:3: ( ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21436:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:21436:3: ({...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21437:4: {...}? => ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred228_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)");
+        }
+        // InternalPerspectiveDsl.g:21437:111: ( ( ( rule__PerspectivePart__Group_3_3__0 ) ) )
+        // InternalPerspectiveDsl.g:21438:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
+        // InternalPerspectiveDsl.g:21444:5: ( ( rule__PerspectivePart__Group_3_3__0 ) )
+        // InternalPerspectiveDsl.g:21445:6: ( rule__PerspectivePart__Group_3_3__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getPerspectivePartAccess().getGroup_3_3()); 
+        }
+        // InternalPerspectiveDsl.g:21446:6: ( rule__PerspectivePart__Group_3_3__0 )
+        // InternalPerspectiveDsl.g:21446:7: rule__PerspectivePart__Group_3_3__0
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__UnorderedGroup_3__2();
+        rule__PerspectivePart__Group_3_3__0();
 
         state._fsp--;
         if (state.failed) return ;
 
         }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
     }
     // $ANTLR end synpred228_InternalPerspectiveDsl
 
     // $ANTLR start synpred229_InternalPerspectiveDsl
     public final void synpred229_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21423:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )
-        // InternalPerspectiveDsl.g:21423:2: rule__PerspectivePart__UnorderedGroup_3__3
+        // InternalPerspectiveDsl.g:21480:2: ( rule__PerspectivePart__UnorderedGroup_3__1 )
+        // InternalPerspectiveDsl.g:21480:2: rule__PerspectivePart__UnorderedGroup_3__1
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__UnorderedGroup_3__3();
+        rule__PerspectivePart__UnorderedGroup_3__1();
 
         state._fsp--;
         if (state.failed) return ;
@@ -81913,11 +82286,11 @@
 
     // $ANTLR start synpred230_InternalPerspectiveDsl
     public final void synpred230_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21435:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )
-        // InternalPerspectiveDsl.g:21435:2: rule__PerspectivePart__UnorderedGroup_3__4
+        // InternalPerspectiveDsl.g:21492:2: ( rule__PerspectivePart__UnorderedGroup_3__2 )
+        // InternalPerspectiveDsl.g:21492:2: rule__PerspectivePart__UnorderedGroup_3__2
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectivePart__UnorderedGroup_3__4();
+        rule__PerspectivePart__UnorderedGroup_3__2();
 
         state._fsp--;
         if (state.failed) return ;
@@ -81928,11 +82301,11 @@
 
     // $ANTLR start synpred231_InternalPerspectiveDsl
     public final void synpred231_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21459:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )
-        // InternalPerspectiveDsl.g:21459:2: rule__PerspectiveSearch__UnorderedGroup_4__0
+        // InternalPerspectiveDsl.g:21504:2: ( rule__PerspectivePart__UnorderedGroup_3__3 )
+        // InternalPerspectiveDsl.g:21504:2: rule__PerspectivePart__UnorderedGroup_3__3
         {
         pushFollow(FOLLOW_2);
-        rule__PerspectiveSearch__UnorderedGroup_4__0();
+        rule__PerspectivePart__UnorderedGroup_3__3();
 
         state._fsp--;
         if (state.failed) return ;
@@ -81943,28 +82316,58 @@
 
     // $ANTLR start synpred232_InternalPerspectiveDsl
     public final void synpred232_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21474:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) )
-        // InternalPerspectiveDsl.g:21474:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21516:2: ( rule__PerspectivePart__UnorderedGroup_3__4 )
+        // InternalPerspectiveDsl.g:21516:2: rule__PerspectivePart__UnorderedGroup_3__4
         {
-        // InternalPerspectiveDsl.g:21474:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
-        // InternalPerspectiveDsl.g:21475:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+        pushFollow(FOLLOW_2);
+        rule__PerspectivePart__UnorderedGroup_3__4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred232_InternalPerspectiveDsl
+
+    // $ANTLR start synpred233_InternalPerspectiveDsl
+    public final void synpred233_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:21540:2: ( rule__PerspectiveSearch__UnorderedGroup_4__0 )
+        // InternalPerspectiveDsl.g:21540:2: rule__PerspectiveSearch__UnorderedGroup_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__PerspectiveSearch__UnorderedGroup_4__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred233_InternalPerspectiveDsl
+
+    // $ANTLR start synpred234_InternalPerspectiveDsl
+    public final void synpred234_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:21555:3: ( ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) ) )
+        // InternalPerspectiveDsl.g:21555:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+        {
+        // InternalPerspectiveDsl.g:21555:3: ({...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) ) )
+        // InternalPerspectiveDsl.g:21556:4: {...}? => ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
         {
         if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
             if (state.backtracking>0) {state.failed=true; return ;}
-            throw new FailedPredicateException(input, "synpred232_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)");
+            throw new FailedPredicateException(input, "synpred234_InternalPerspectiveDsl", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)");
         }
-        // InternalPerspectiveDsl.g:21475:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
-        // InternalPerspectiveDsl.g:21476:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+        // InternalPerspectiveDsl.g:21556:113: ( ( ( rule__PerspectiveSearch__Group_4_0__0 ) ) )
+        // InternalPerspectiveDsl.g:21557:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
         {
         getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
-        // InternalPerspectiveDsl.g:21482:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
-        // InternalPerspectiveDsl.g:21483:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+        // InternalPerspectiveDsl.g:21563:5: ( ( rule__PerspectiveSearch__Group_4_0__0 ) )
+        // InternalPerspectiveDsl.g:21564:6: ( rule__PerspectiveSearch__Group_4_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getPerspectiveSearchAccess().getGroup_4_0()); 
         }
-        // InternalPerspectiveDsl.g:21484:6: ( rule__PerspectiveSearch__Group_4_0__0 )
-        // InternalPerspectiveDsl.g:21484:7: rule__PerspectiveSearch__Group_4_0__0
+        // InternalPerspectiveDsl.g:21565:6: ( rule__PerspectiveSearch__Group_4_0__0 )
+        // InternalPerspectiveDsl.g:21565:7: rule__PerspectiveSearch__Group_4_0__0
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSearch__Group_4_0__0();
@@ -81986,12 +82389,12 @@
 
         }
     }
-    // $ANTLR end synpred232_InternalPerspectiveDsl
+    // $ANTLR end synpred234_InternalPerspectiveDsl
 
-    // $ANTLR start synpred233_InternalPerspectiveDsl
-    public final void synpred233_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:21518:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )
-        // InternalPerspectiveDsl.g:21518:2: rule__PerspectiveSearch__UnorderedGroup_4__1
+    // $ANTLR start synpred235_InternalPerspectiveDsl
+    public final void synpred235_InternalPerspectiveDsl_fragment() throws RecognitionException {   
+        // InternalPerspectiveDsl.g:21599:2: ( rule__PerspectiveSearch__UnorderedGroup_4__1 )
+        // InternalPerspectiveDsl.g:21599:2: rule__PerspectiveSearch__UnorderedGroup_4__1
         {
         pushFollow(FOLLOW_2);
         rule__PerspectiveSearch__UnorderedGroup_4__1();
@@ -82001,7 +82404,7 @@
 
         }
     }
-    // $ANTLR end synpred233_InternalPerspectiveDsl
+    // $ANTLR end synpred235_InternalPerspectiveDsl
 
     // Delegated rules
 
@@ -82621,6 +83024,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred234_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred234_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred73_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -82845,6 +83262,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred235_InternalPerspectiveDsl() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred235_InternalPerspectiveDsl_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred189_InternalPerspectiveDsl() {
         state.backtracking++;
         int start = input.mark();
@@ -83015,17 +83446,17 @@
     static final String dfa_1s = "\10\uffff";
     static final String dfa_2s = "\2\uffff\1\5\3\uffff\1\5\1\uffff";
     static final String dfa_3s = "\1\4\1\uffff\1\53\1\uffff\1\4\1\uffff\1\53\1\uffff";
-    static final String dfa_4s = "\1\176\1\uffff\1\136\1\uffff\1\44\1\uffff\1\136\1\uffff";
+    static final String dfa_4s = "\1\u0080\1\uffff\1\140\1\uffff\1\44\1\uffff\1\140\1\uffff";
     static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\uffff\1\3";
     static final String dfa_6s = "\10\uffff}>";
     static final String[] dfa_7s = {
-            "\1\2\51\uffff\1\1\117\uffff\1\3",
+            "\1\2\51\uffff\1\1\121\uffff\1\3",
             "",
-            "\1\4\3\uffff\1\5\5\uffff\1\5\50\uffff\1\5",
+            "\1\4\3\uffff\1\5\5\uffff\1\5\52\uffff\1\5",
             "",
             "\1\6\37\uffff\1\7",
             "",
-            "\1\4\3\uffff\1\5\5\uffff\1\5\50\uffff\1\5",
+            "\1\4\3\uffff\1\5\5\uffff\1\5\52\uffff\1\5",
             ""
     };
 
@@ -83056,11 +83487,11 @@
     }
     static final String dfa_8s = "\43\uffff";
     static final String dfa_9s = "\1\4\1\0\41\uffff";
-    static final String dfa_10s = "\1\u0083\1\0\41\uffff";
+    static final String dfa_10s = "\1\u0085\1\0\41\uffff";
     static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\1";
     static final String dfa_12s = "\1\uffff\1\0\41\uffff}>";
     static final String[] dfa_13s = {
-            "\1\1\4\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\3\uffff\1\2\50\uffff\2\2\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\1\4\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\3\uffff\1\2\52\uffff\2\2\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -83148,7 +83579,7 @@
         }
     }
     static final String[] dfa_14s = {
-            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\3\uffff\1\2\50\uffff\2\2\3\uffff\1\1\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\3\uffff\1\2\52\uffff\2\2\3\uffff\1\1\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -83319,19 +83750,19 @@
     static final String dfa_21s = "\12\uffff";
     static final String dfa_22s = "\4\uffff\5\3\1\uffff";
     static final String dfa_23s = "\1\53\2\4\1\uffff\5\4\1\uffff";
-    static final String dfa_24s = "\1\u0080\2\61\1\uffff\5\u0083\1\uffff";
+    static final String dfa_24s = "\1\u0082\2\61\1\uffff\5\u0085\1\uffff";
     static final String dfa_25s = "\3\uffff\1\2\5\uffff\1\1";
     static final String dfa_26s = "\12\uffff}>";
     static final String[] dfa_27s = {
-            "\1\1\123\uffff\1\2\1\3",
+            "\1\1\125\uffff\1\2\1\3",
             "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
             "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
             "",
-            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\46\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\46\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\46\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\46\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\46\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\50\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\50\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\50\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\50\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\3\uffff\2\3\50\uffff\1\3\1\uffff\32\3\5\uffff\2\3\1\uffff\2\3",
             ""
     };
 
@@ -83361,11 +83792,11 @@
         }
     }
     static final String dfa_28s = "\1\4\2\0\40\uffff";
-    static final String dfa_29s = "\1\u0083\2\0\40\uffff";
+    static final String dfa_29s = "\1\u0085\2\0\40\uffff";
     static final String dfa_30s = "\3\uffff\1\1\1\uffff\1\2\35\uffff";
     static final String dfa_31s = "\1\uffff\1\0\1\1\40\uffff}>";
     static final String[] dfa_32s = {
-            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\3\uffff\1\5\51\uffff\1\2\3\uffff\2\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\uffff\1\3\1\uffff\1\5",
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\3\uffff\1\5\53\uffff\1\2\3\uffff\2\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\uffff\1\3\1\uffff\1\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -83467,11 +83898,11 @@
     }
     static final String dfa_33s = "\40\uffff";
     static final String dfa_34s = "\1\4\26\uffff\1\0\10\uffff";
-    static final String dfa_35s = "\1\u0083\26\uffff\1\0\10\uffff";
+    static final String dfa_35s = "\1\u0085\26\uffff\1\0\10\uffff";
     static final String dfa_36s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
     static final String dfa_37s = "\27\uffff\1\0\10\uffff}>";
     static final String[] dfa_38s = {
-            "\1\5\4\14\22\uffff\1\5\21\uffff\5\5\1\14\3\uffff\1\2\51\uffff\1\35\3\uffff\2\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\12\uffff\1\14",
+            "\1\5\4\14\22\uffff\1\5\21\uffff\5\5\1\14\3\uffff\1\2\53\uffff\1\35\3\uffff\2\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\12\uffff\1\14",
             "",
             "",
             "",
@@ -83556,7 +83987,7 @@
         }
     }
     static final String[] dfa_39s = {
-            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\3\uffff\1\2\51\uffff\1\1\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\3\uffff\1\2\53\uffff\1\1\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -83757,11 +84188,11 @@
     }
     static final String dfa_40s = "\1\10\11\uffff";
     static final String dfa_41s = "\1\4\7\0\2\uffff";
-    static final String dfa_42s = "\1\u0083\7\0\2\uffff";
+    static final String dfa_42s = "\1\u0085\7\0\2\uffff";
     static final String dfa_43s = "\10\uffff\1\2\1\1";
-    static final String dfa_44s = "\1\uffff\1\4\1\6\1\0\1\2\1\5\1\3\1\1\2\uffff}>";
+    static final String dfa_44s = "\1\uffff\1\5\1\0\1\1\1\3\1\6\1\2\1\4\2\uffff}>";
     static final String[] dfa_45s = {
-            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\3\uffff\2\10\46\uffff\1\10\1\uffff\32\10\5\uffff\2\10\1\uffff\2\10",
+            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\3\uffff\2\10\50\uffff\1\10\1\uffff\32\10\5\uffff\2\10\1\uffff\2\10",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -83793,103 +84224,13 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "9630:2: ( rule__XAssignment__Group_1_1__0 )?";
+            return "9684:2: ( rule__XAssignment__Group_1_1__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA72_3 = input.LA(1);
-
-                         
-                        int index72_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index72_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA72_7 = input.LA(1);
-
-                         
-                        int index72_7 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index72_7);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA72_4 = input.LA(1);
-
-                         
-                        int index72_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index72_4);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 3 : 
-                        int LA72_6 = input.LA(1);
-
-                         
-                        int index72_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index72_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA72_1 = input.LA(1);
-
-                         
-                        int index72_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index72_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA72_5 = input.LA(1);
-
-                         
-                        int index72_5 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index72_5);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
                         int LA72_2 = input.LA(1);
 
                          
@@ -83904,6 +84245,96 @@
                         input.seek(index72_2);
                         if ( s>=0 ) return s;
                         break;
+                    case 1 : 
+                        int LA72_3 = input.LA(1);
+
+                         
+                        int index72_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index72_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA72_6 = input.LA(1);
+
+                         
+                        int index72_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index72_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA72_4 = input.LA(1);
+
+                         
+                        int index72_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index72_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA72_7 = input.LA(1);
+
+                         
+                        int index72_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index72_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA72_1 = input.LA(1);
+
+                         
+                        int index72_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index72_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA72_5 = input.LA(1);
+
+                         
+                        int index72_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred131_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index72_5);
+                        if ( s>=0 ) return s;
+                        break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
@@ -83914,11 +84345,11 @@
     }
     static final String dfa_46s = "\1\1\12\uffff";
     static final String dfa_47s = "\1\4\1\uffff\10\0\1\uffff";
-    static final String dfa_48s = "\1\u0083\1\uffff\10\0\1\uffff";
+    static final String dfa_48s = "\1\u0085\1\uffff\10\0\1\uffff";
     static final String dfa_49s = "\1\uffff\1\2\10\uffff\1\1";
-    static final String dfa_50s = "\2\uffff\1\0\1\2\1\1\1\4\1\6\1\3\1\7\1\5\1\uffff}>";
+    static final String dfa_50s = "\2\uffff\1\6\1\2\1\7\1\0\1\3\1\5\1\4\1\1\1\uffff}>";
     static final String[] dfa_51s = {
-            "\5\1\5\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\21\1\3\uffff\2\1\46\uffff\1\1\1\uffff\32\1\5\uffff\2\1\1\uffff\2\1",
+            "\5\1\5\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\21\1\3\uffff\2\1\50\uffff\1\1\1\uffff\32\1\5\uffff\2\1\1\uffff\2\1",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -83951,17 +84382,17 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "()* loopback of 10926:2: ( rule__XOtherOperatorExpression__Group_1__0 )*";
+            return "()* loopback of 10980:2: ( rule__XOtherOperatorExpression__Group_1__0 )*";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA78_2 = input.LA(1);
+                        int LA78_5 = input.LA(1);
 
                          
-                        int index78_2 = input.index();
+                        int index78_5 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred137_InternalPerspectiveDsl()) ) {s = 10;}
@@ -83969,14 +84400,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index78_2);
+                        input.seek(index78_5);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA78_4 = input.LA(1);
+                        int LA78_9 = input.LA(1);
 
                          
-                        int index78_4 = input.index();
+                        int index78_9 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred137_InternalPerspectiveDsl()) ) {s = 10;}
@@ -83984,7 +84415,7 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index78_4);
+                        input.seek(index78_9);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
@@ -84003,51 +84434,6 @@
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA78_7 = input.LA(1);
-
-                         
-                        int index78_7 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred137_InternalPerspectiveDsl()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index78_7);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 4 : 
-                        int LA78_5 = input.LA(1);
-
-                         
-                        int index78_5 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred137_InternalPerspectiveDsl()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index78_5);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 5 : 
-                        int LA78_9 = input.LA(1);
-
-                         
-                        int index78_9 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred137_InternalPerspectiveDsl()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index78_9);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 6 : 
                         int LA78_6 = input.LA(1);
 
                          
@@ -84062,7 +84448,7 @@
                         input.seek(index78_6);
                         if ( s>=0 ) return s;
                         break;
-                    case 7 : 
+                    case 4 : 
                         int LA78_8 = input.LA(1);
 
                          
@@ -84077,6 +84463,51 @@
                         input.seek(index78_8);
                         if ( s>=0 ) return s;
                         break;
+                    case 5 : 
+                        int LA78_7 = input.LA(1);
+
+                         
+                        int index78_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred137_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index78_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA78_2 = input.LA(1);
+
+                         
+                        int index78_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred137_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index78_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA78_4 = input.LA(1);
+
+                         
+                        int index78_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred137_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index78_4);
+                        if ( s>=0 ) return s;
+                        break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
@@ -84088,11 +84519,11 @@
     static final String dfa_52s = "\116\uffff";
     static final String dfa_53s = "\1\2\115\uffff";
     static final String dfa_54s = "\1\4\1\0\114\uffff";
-    static final String dfa_55s = "\1\u0083\1\0\114\uffff";
+    static final String dfa_55s = "\1\u0085\1\0\114\uffff";
     static final String dfa_56s = "\2\uffff\1\2\112\uffff\1\1";
     static final String dfa_57s = "\1\uffff\1\0\114\uffff}>";
     static final String[] dfa_58s = {
-            "\5\2\5\uffff\45\2\3\uffff\2\2\46\uffff\1\2\1\uffff\1\1\31\2\5\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\45\2\3\uffff\2\2\50\uffff\1\2\1\uffff\1\1\31\2\5\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -84194,7 +84625,7 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "12520:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
+            return "12574:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -84224,7 +84655,7 @@
         }
     }
     static final String[] dfa_59s = {
-            "\5\2\5\uffff\45\2\3\uffff\2\2\46\uffff\1\2\1\uffff\5\2\1\1\24\2\5\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\45\2\3\uffff\2\2\50\uffff\1\2\1\uffff\5\2\1\1\24\2\5\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -84319,7 +84750,7 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "12546:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
+            return "12600:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -84350,11 +84781,11 @@
     }
     static final String dfa_60s = "\46\uffff";
     static final String dfa_61s = "\1\4\2\0\43\uffff";
-    static final String dfa_62s = "\1\u0083\2\0\43\uffff";
+    static final String dfa_62s = "\1\u0085\2\0\43\uffff";
     static final String dfa_63s = "\3\uffff\1\1\1\uffff\1\2\40\uffff";
     static final String dfa_64s = "\1\uffff\1\0\1\1\43\uffff}>";
     static final String[] dfa_65s = {
-            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\3\uffff\1\5\51\uffff\1\2\2\uffff\3\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\uffff\1\3\2\5",
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\3\uffff\1\5\53\uffff\1\2\2\uffff\3\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\10\uffff\1\3\2\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -84415,7 +84846,7 @@
             this.transition = dfa_65;
         }
         public String getDescription() {
-            return "13519:2: ( rule__XClosure__Group_1__0 )?";
+            return "13573:2: ( rule__XClosure__Group_1__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -84461,11 +84892,11 @@
     }
     static final String dfa_66s = "\42\uffff";
     static final String dfa_67s = "\1\4\2\0\37\uffff";
-    static final String dfa_68s = "\1\u0083\2\0\37\uffff";
+    static final String dfa_68s = "\1\u0085\2\0\37\uffff";
     static final String dfa_69s = "\3\uffff\1\1\1\2\35\uffff";
     static final String dfa_70s = "\1\uffff\1\0\1\1\37\uffff}>";
     static final String[] dfa_71s = {
-            "\1\1\4\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\3\uffff\1\4\51\uffff\1\2\3\uffff\2\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\12\uffff\1\4",
+            "\1\1\4\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\3\uffff\1\4\53\uffff\1\2\3\uffff\2\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\12\uffff\1\4",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -84522,7 +84953,7 @@
             this.transition = dfa_71;
         }
         public String getDescription() {
-            return "14950:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
+            return "15004:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -84581,7 +85012,7 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "17083:2: ( rule__XFeatureCall__Group_3__0 )?";
+            return "17137:2: ( rule__XFeatureCall__Group_3__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -84625,7 +85056,7 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "17109:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
+            return "17163:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -84655,7 +85086,7 @@
         }
     }
     static final String[] dfa_72s = {
-            "\5\2\5\uffff\15\2\1\1\27\2\3\uffff\2\2\46\uffff\1\2\1\uffff\32\2\5\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\15\2\1\1\27\2\3\uffff\2\2\50\uffff\1\2\1\uffff\32\2\5\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -84750,7 +85181,7 @@
             this.transition = dfa_72;
         }
         public String getDescription() {
-            return "17569:2: ( rule__XConstructorCall__Group_3__0 )?";
+            return "17623:2: ( rule__XConstructorCall__Group_3__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -84794,7 +85225,7 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "17596:2: ( rule__XConstructorCall__Group_4__0 )?";
+            return "17650:2: ( rule__XConstructorCall__Group_4__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -84838,7 +85269,7 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "17622:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
+            return "17676:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -84869,11 +85300,11 @@
     }
     static final String dfa_73s = "\1\41\115\uffff";
     static final String dfa_74s = "\1\4\40\0\55\uffff";
-    static final String dfa_75s = "\1\u0083\40\0\55\uffff";
+    static final String dfa_75s = "\1\u0085\40\0\55\uffff";
     static final String dfa_76s = "\41\uffff\1\2\53\uffff\1\1";
     static final String dfa_77s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
     static final String[] dfa_78s = {
-            "\1\1\1\27\1\23\1\24\1\25\5\uffff\15\41\1\15\6\41\1\10\1\7\4\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\3\uffff\1\12\1\41\46\uffff\1\41\1\uffff\1\40\3\41\1\17\1\20\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\5\uffff\2\41\1\uffff\1\41\1\22",
+            "\1\1\1\27\1\23\1\24\1\25\5\uffff\15\41\1\15\6\41\1\10\1\7\4\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\3\uffff\1\12\1\41\50\uffff\1\41\1\uffff\1\40\3\41\1\17\1\20\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\5\uffff\2\41\1\uffff\1\41\1\22",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -84973,7 +85404,7 @@
             this.transition = dfa_78;
         }
         public String getDescription() {
-            return "18513:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
+            return "18567:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -85470,11 +85901,11 @@
     static final String dfa_79s = "\117\uffff";
     static final String dfa_80s = "\1\2\116\uffff";
     static final String dfa_81s = "\1\4\1\0\115\uffff";
-    static final String dfa_82s = "\1\u0083\1\0\115\uffff";
+    static final String dfa_82s = "\1\u0085\1\0\115\uffff";
     static final String dfa_83s = "\2\uffff\1\2\113\uffff\1\1";
     static final String dfa_84s = "\1\uffff\1\0\115\uffff}>";
     static final String[] dfa_85s = {
-            "\5\2\5\uffff\15\2\1\1\27\2\3\uffff\2\2\46\uffff\1\2\1\uffff\32\2\1\uffff\1\2\3\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\15\2\1\1\27\2\3\uffff\2\2\50\uffff\1\2\1\uffff\32\2\1\uffff\1\2\3\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -85577,7 +86008,7 @@
             this.transition = dfa_85;
         }
         public String getDescription() {
-            return "19870:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
+            return "19924:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -85621,7 +86052,7 @@
             this.transition = dfa_85;
         }
         public String getDescription() {
-            return "20140:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
+            return "20194:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -85663,61 +86094,61 @@
     public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0180000000000000L});
     public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0100000000000002L});
     public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0100000000000000L});
-    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x3A00000000000000L,0x1000000000000000L});
-    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0xC080000000000000L,0x0000000000000018L});
-    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x8000000000000002L,0x0000000000000018L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x3A00000000000000L,0x4000000000000000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0xC080000000000000L,0x0000000000000028L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x8000000000000002L,0x0000000000000028L});
     public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000020L});
     public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0400000000000000L});
     public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x8000000000000000L});
     public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x1000000000000000L,0x0000000000000007L});
-    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x8080000000000000L,0x0000000000000018L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x8080000000000000L,0x0000000000000028L});
     public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0018000000000000L});
     public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x1000000000000000L,0x0000000000000006L});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000018L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x1800000000000000L,0x2000000000000024L});
-    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000000L,0x000000001E33FF00L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0080000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x1000000000000000L,0x0000000000000016L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000028L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x1000000000000000L,0x80000000000000C4L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000000L,0x0000000078CFFC00L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0080000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
     public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0080000000000010L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000006000000L});
     public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
     public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000800000000000L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000400000000010L,0x4000000000000000L});
-    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000400000000010L,0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
     public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0001000000000010L});
     public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000001000000010L});
-    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
-    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
-    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0047E10C080001F0L,0x017FC53380000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
-    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0047E10C080001F0L,0x017FC53180000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0047E10C080001F0L,0x05FF14CE00000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0047E10C080001F0L,0x05FF14C600000000L,0x0000000000000020L});
     public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000002000L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0047E10C080001F0L,0x017FC53980000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
-    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0047E10C080001F0L,0x05FF14E600000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
     public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0001E00000000010L});
     public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x000000000C1F0000L});
     public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000008000000L});
@@ -85728,10 +86159,10 @@
     public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000000000008002L});
     public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000001E00000L});
     public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000000001E00002L});
-    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x000000000E000000L,0x0000004000000000L});
-    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x000000000E000002L,0x0000004000000000L});
-    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000080000010L,0x0000000100000000L});
-    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x000000000E000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x000000000E000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000080000010L,0x0000000400000000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
     public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x00000003FC000000L});
     public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x00000003FC000002L});
     public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000040000000L});
@@ -85742,66 +86173,66 @@
     public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x000000F000000000L});
     public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x000000F000000002L});
     public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000010C00000000L});
-    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
-    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
     public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000060000000000L});
-    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000080000000000L,0x8000000000000000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000080000000002L,0x8000000000000000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000080000000000L,0x8000000000000000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000080000000000L,0x0000000000000000L,0x0000000000000006L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000080000000002L,0x0000000000000000L,0x0000000000000006L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000080000000000L,0x0000000000000000L,0x0000000000000002L});
     public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0003E00008000010L});
-    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000000000000L,0x0000002100000000L});
-    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000080000010L,0x0400000100000000L});
-    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000004000000L,0x0000000400000000L});
-    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0047E10C880001F0L,0x017FC53380000000L,0x000000000000000AL});
-    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x00C7E10C080001F0L,0x017FC53180000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0047F10C880001F0L,0x017FC53180000000L,0x000000000000000EL});
-    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
-    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000080000010L,0x0000000100000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0047F10C080001F2L,0x017FC53180000000L,0x000000000000000CL});
-    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
-    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
-    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
-    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0047E10C880001F0L,0x017FC53180000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0080000080000010L,0x0000380500000000L});
-    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000000080000012L,0x0000280500000000L});
-    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000000080000010L,0x0000280500000000L});
-    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
-    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0047F10C080001F0L,0x017FC531C0000000L,0x000000000000000CL});
-    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0047E10C080001F0L,0x017FC531C0000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0047F10C080001F0L,0x017FC53180000000L,0x000000000000000CL});
-    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
-    public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x00C7F10C080001F0L,0x017FC53180000000L,0x000000000000000CL});
-    public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_124 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0000000008000000L,0x0000002100000000L});
-    public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0004000000000000L,0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000000000000L,0x0000008400000000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000080000010L,0x1000000400000000L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000004000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0047E10C880001F0L,0x05FF14CE00000000L,0x0000000000000028L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x00C7E10C080001F0L,0x05FF14C600000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0047F10C880001F0L,0x05FF14C600000000L,0x0000000000000038L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000080000010L,0x0000000400000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0047F10C080001F2L,0x05FF14C600000000L,0x0000000000000030L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0047E10C880001F0L,0x05FF14C600000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0080000080000010L,0x0000E01400000000L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000000080000012L,0x0000A01400000000L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000000080000010L,0x0000A01400000000L});
+    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0047F10C080001F0L,0x05FF14C700000000L,0x0000000000000030L});
+    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0047E10C080001F0L,0x05FF14C700000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0047F10C080001F0L,0x05FF14C600000000L,0x0000000000000030L});
+    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x00C7F10C080001F0L,0x05FF14C600000000L,0x0000000000000030L});
+    public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_124 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0000000008000000L,0x0000008400000000L});
+    public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0004000000000000L,0x0000000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
     public static final BitSet FOLLOW_128 = new BitSet(new long[]{0x00000000000001C0L});
-    public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x00040000000001E0L,0x000C003000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000000000000000L,0x0000002200000000L});
-    public static final BitSet FOLLOW_131 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_132 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-    public static final BitSet FOLLOW_133 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
-    public static final BitSet FOLLOW_134 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
-    public static final BitSet FOLLOW_135 = new BitSet(new long[]{0x0000000000000000L,0x0280000000000000L});
-    public static final BitSet FOLLOW_136 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-    public static final BitSet FOLLOW_137 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
-    public static final BitSet FOLLOW_138 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x00040000000001E0L,0x003000C000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000000000000000L,0x0000008800000000L});
+    public static final BitSet FOLLOW_131 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
+    public static final BitSet FOLLOW_132 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+    public static final BitSet FOLLOW_133 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_134 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    public static final BitSet FOLLOW_135 = new BitSet(new long[]{0x0000000000000000L,0x0A00000000000000L});
+    public static final BitSet FOLLOW_136 = new BitSet(new long[]{0x0000000000000000L,0x0200000000000000L});
+    public static final BitSet FOLLOW_137 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000000L});
+    public static final BitSet FOLLOW_138 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
     public static final BitSet FOLLOW_139 = new BitSet(new long[]{0x0000080000000000L});
     public static final BitSet FOLLOW_140 = new BitSet(new long[]{0x0000080000000002L});
     public static final BitSet FOLLOW_141 = new BitSet(new long[]{0x0000000000000180L});
-    public static final BitSet FOLLOW_142 = new BitSet(new long[]{0x0000000080000010L,0x0000000300000000L});
+    public static final BitSet FOLLOW_142 = new BitSet(new long[]{0x0000000080000010L,0x0000000C00000000L});
     public static final BitSet FOLLOW_143 = new BitSet(new long[]{0x0002200000000000L});
-    public static final BitSet FOLLOW_144 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
-    public static final BitSet FOLLOW_145 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000000L});
+    public static final BitSet FOLLOW_144 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+    public static final BitSet FOLLOW_145 = new BitSet(new long[]{0x0000000000000002L,0x2000000000000000L});
     public static final BitSet FOLLOW_146 = new BitSet(new long[]{0x0000001000000000L});
     public static final BitSet FOLLOW_147 = new BitSet(new long[]{0x3800000000000002L});
     public static final BitSet FOLLOW_148 = new BitSet(new long[]{0x1000000000000002L,0x0000000000000007L});
-    public static final BitSet FOLLOW_149 = new BitSet(new long[]{0x1000000000000002L,0x0000000000000006L});
-    public static final BitSet FOLLOW_150 = new BitSet(new long[]{0x1800000000000002L,0x2000000000000024L});
-    public static final BitSet FOLLOW_151 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
+    public static final BitSet FOLLOW_149 = new BitSet(new long[]{0x1000000000000002L,0x0000000000000016L});
+    public static final BitSet FOLLOW_150 = new BitSet(new long[]{0x1000000000000002L,0x80000000000000C4L});
+    public static final BitSet FOLLOW_151 = new BitSet(new long[]{0x0000000000000002L,0x0000000006000000L});
 
 }
diff --git a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/AbstractPerspectiveDslProposalProvider.java b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/AbstractPerspectiveDslProposalProvider.java
index 6363660..cb61326 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/AbstractPerspectiveDslProposalProvider.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/src-gen/org/eclipse/osbp/xtext/perspective/ui/contentassist/AbstractPerspectiveDslProposalProvider.java
@@ -99,6 +99,9 @@
 	public void completePerspectivePartStack_SelectedElement(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
+	public void completePerspectivePartStack_Synchronize(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
 	public void completePerspectivePartStack_ContainerData(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
diff --git a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.java b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.java
index 9a819b5..0e23210 100644
--- a/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.java
+++ b/org.eclipse.osbp.xtext.perspective.ui/xtend-gen/org/eclipse/osbp/xtext/perspective/ui/converter/E4PerspectiveToDSLConverter.java
@@ -32,11 +32,15 @@
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.osbp.xtext.chart.Chart;
 import org.eclipse.osbp.xtext.chart.ChartDSLPackage;
+import org.eclipse.osbp.xtext.dialogdsl.Dialog;
 import org.eclipse.osbp.xtext.dialogdsl.DialogDSLPackage;
 import org.eclipse.osbp.xtext.oxtype.oxtype.OXImportDeclaration;
 import org.eclipse.osbp.xtext.oxtype.oxtype.OXtypeFactory;
 import org.eclipse.osbp.xtext.perspective.Perspective;
+import org.eclipse.osbp.xtext.perspective.PerspectiveChart;
+import org.eclipse.osbp.xtext.perspective.PerspectiveDialog;
 import org.eclipse.osbp.xtext.perspective.PerspectiveDslFactory;
 import org.eclipse.osbp.xtext.perspective.PerspectiveElement;
 import org.eclipse.osbp.xtext.perspective.PerspectiveGrid;
@@ -44,9 +48,11 @@
 import org.eclipse.osbp.xtext.perspective.PerspectivePackage;
 import org.eclipse.osbp.xtext.perspective.PerspectivePart;
 import org.eclipse.osbp.xtext.perspective.PerspectivePartStack;
+import org.eclipse.osbp.xtext.perspective.PerspectiveReport;
 import org.eclipse.osbp.xtext.perspective.PerspectiveSashContainer;
 import org.eclipse.osbp.xtext.perspective.PerspectiveTable;
 import org.eclipse.osbp.xtext.perspective.SashOrientation;
+import org.eclipse.osbp.xtext.reportdsl.Report;
 import org.eclipse.osbp.xtext.reportdsl.ReportDSLPackage;
 import org.eclipse.osbp.xtext.table.Table;
 import org.eclipse.osbp.xtext.table.TableDSLPackage;
@@ -246,18 +252,66 @@
   }
   
   protected void _convertView(final ChartDSLPackage ePackage, final MPart mPart, final PerspectivePart oPart) {
-    throw new Error("Unresolved compilation problems:"
-      + "\nType mismatch: cannot convert from Chart to Chart");
+    final PerspectiveChart oChart = this.pFactory.createPerspectiveChart();
+    oPart.setView(oChart);
+    final String fqn = mPart.getPersistedState().get(E4PerspectiveToDSLConverter.OSBP_FQN);
+    boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(fqn);
+    if (_isNullOrEmpty) {
+      return;
+    }
+    String _substring = fqn.substring(0, fqn.lastIndexOf("."));
+    this.imports.add(_substring);
+    final String[] tokens = fqn.split("\\.");
+    int _length = tokens.length;
+    int _minus = (_length - 1);
+    final Iterable<IEObjectDescription> result = this.descriptions.getExportedObjects(ChartDSLPackage.Literals.CHART, 
+      QualifiedName.create(tokens[_minus]), false);
+    boolean _hasNext = result.iterator().hasNext();
+    if (_hasNext) {
+      final IEObjectDescription eObjectDesc = result.iterator().next();
+      EObject _eObjectOrProxy = eObjectDesc.getEObjectOrProxy();
+      oChart.setRef(((Chart) _eObjectOrProxy));
+    }
   }
   
   protected void _convertView(final ReportDSLPackage ePackage, final MPart mPart, final PerspectivePart oPart) {
-    throw new Error("Unresolved compilation problems:"
-      + "\nType mismatch: cannot convert from Report to Report");
+    final PerspectiveReport oReport = this.pFactory.createPerspectiveReport();
+    oPart.setView(oReport);
+    final String fqn = mPart.getPersistedState().get(E4PerspectiveToDSLConverter.OSBP_FQN);
+    boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(fqn);
+    if (_isNullOrEmpty) {
+      return;
+    }
+    String _substring = fqn.substring(0, fqn.lastIndexOf("."));
+    this.imports.add(_substring);
+    final Iterable<IEObjectDescription> result = this.descriptions.getExportedObjects(ReportDSLPackage.Literals.REPORT, 
+      QualifiedName.create(fqn.split("\\.")), false);
+    boolean _hasNext = result.iterator().hasNext();
+    if (_hasNext) {
+      final IEObjectDescription eObjectDesc = result.iterator().next();
+      EObject _eObjectOrProxy = eObjectDesc.getEObjectOrProxy();
+      oReport.setRef(((Report) _eObjectOrProxy));
+    }
   }
   
   protected void _convertView(final DialogDSLPackage ePackage, final MPart mPart, final PerspectivePart oPart) {
-    throw new Error("Unresolved compilation problems:"
-      + "\nType mismatch: cannot convert from Dialog to Dialog");
+    final PerspectiveDialog oDialog = this.pFactory.createPerspectiveDialog();
+    oPart.setView(oDialog);
+    final String fqn = mPart.getPersistedState().get(E4PerspectiveToDSLConverter.OSBP_FQN);
+    boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(fqn);
+    if (_isNullOrEmpty) {
+      return;
+    }
+    String _substring = fqn.substring(0, fqn.lastIndexOf("."));
+    this.imports.add(_substring);
+    final Iterable<IEObjectDescription> result = this.descriptions.getExportedObjects(DialogDSLPackage.Literals.DIALOG, 
+      QualifiedName.create(fqn.split("\\.")), false);
+    boolean _hasNext = result.iterator().hasNext();
+    if (_hasNext) {
+      final IEObjectDescription eObjectDesc = result.iterator().next();
+      EObject _eObjectOrProxy = eObjectDesc.getEObjectOrProxy();
+      oDialog.setRef(((Dialog) _eObjectOrProxy));
+    }
   }
   
   public SashOrientation toOrientation(final boolean isHorizontal) {
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.java
index ba848ca..47b032b 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDslPackage.java
@@ -203,7 +203,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PERSPECTIVE_PACKAGE___ERESOLVE_PROXY__OBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int PERSPECTIVE_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Perspective Package</em>' class.
@@ -817,13 +817,22 @@
 	int PERSPECTIVE_PART_STACK__SELECTED_ELEMENT = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 0;
 
 	/**
+	 * The feature id for the '<em><b>Synchronize</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERSPECTIVE_PART_STACK__SYNCHRONIZE = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
 	 * The number of structural features of the '<em>Perspective Part Stack</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PERSPECTIVE_PART_STACK_FEATURE_COUNT = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 1;
+	int PERSPECTIVE_PART_STACK_FEATURE_COUNT = PERSPECTIVE_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -2073,6 +2082,17 @@
 	EReference getPerspectivePartStack_SelectedElement();
 
 	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.perspective.PerspectivePartStack#getSynchronize <em>Synchronize</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Synchronize</em>'.
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectivePartStack#getSynchronize()
+	 * @see #getPerspectivePartStack()
+	 * @generated
+	 */
+	EReference getPerspectivePartStack_Synchronize();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.perspective.PerspectiveView <em>Perspective View</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2819,6 +2839,14 @@
 		EReference PERSPECTIVE_PART_STACK__SELECTED_ELEMENT = eINSTANCE.getPerspectivePartStack_SelectedElement();
 
 		/**
+		 * The meta object literal for the '<em><b>Synchronize</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PERSPECTIVE_PART_STACK__SYNCHRONIZE = eINSTANCE.getPerspectivePartStack_Synchronize();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.perspective.PerspectiveView <em>Perspective View</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePartStack.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePartStack.java
index 70f12b8..692e498 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePartStack.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/PerspectivePartStack.java
@@ -26,6 +26,7 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectivePartStack#getSelectedElement <em>Selected Element</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.PerspectivePartStack#getSynchronize <em>Synchronize</em>}</li>
  * </ul>
  *
  * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectivePartStack()
@@ -59,4 +60,30 @@
 	 */
 	void setSelectedElement(PerspectivePart value);
 
+	/**
+	 * Returns the value of the '<em><b>Synchronize</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Synchronize</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Synchronize</em>' reference.
+	 * @see #setSynchronize(PerspectivePartStack)
+	 * @see org.eclipse.osbp.xtext.perspective.PerspectiveDslPackage#getPerspectivePartStack_Synchronize()
+	 * @model
+	 * @generated
+	 */
+	PerspectivePartStack getSynchronize();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.perspective.PerspectivePartStack#getSynchronize <em>Synchronize</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Synchronize</em>' reference.
+	 * @see #getSynchronize()
+	 * @generated
+	 */
+	void setSynchronize(PerspectivePartStack value);
+
 } // PerspectivePartStack
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.java
index 88689fe..7688701 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectiveDslPackageImpl.java
@@ -727,6 +727,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getPerspectivePartStack_Synchronize() {
+		return (EReference)perspectivePartStackEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getPerspectiveView() {
 		return perspectiveViewEClass;
 	}
@@ -1132,6 +1141,7 @@
 
 		perspectivePartStackEClass = createEClass(PERSPECTIVE_PART_STACK);
 		createEReference(perspectivePartStackEClass, PERSPECTIVE_PART_STACK__SELECTED_ELEMENT);
+		createEReference(perspectivePartStackEClass, PERSPECTIVE_PART_STACK__SYNCHRONIZE);
 
 		perspectiveViewEClass = createEClass(PERSPECTIVE_VIEW);
 
@@ -1314,6 +1324,7 @@
 
 		initEClass(perspectivePartStackEClass, PerspectivePartStack.class, "PerspectivePartStack", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getPerspectivePartStack_SelectedElement(), this.getPerspectivePart(), null, "selectedElement", null, 0, 1, PerspectivePartStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPerspectivePartStack_Synchronize(), this.getPerspectivePartStack(), null, "synchronize", null, 0, 1, PerspectivePartStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(perspectiveViewEClass, PerspectiveView.class, "PerspectiveView", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
diff --git a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartStackImpl.java b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartStackImpl.java
index c912f65..c8fbffd 100644
--- a/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartStackImpl.java
+++ b/org.eclipse.osbp.xtext.perspective/emf-gen/org/eclipse/osbp/xtext/perspective/impl/PerspectivePartStackImpl.java
@@ -35,6 +35,7 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectivePartStackImpl#getSelectedElement <em>Selected Element</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.perspective.impl.PerspectivePartStackImpl#getSynchronize <em>Synchronize</em>}</li>
  * </ul>
  *
  * @generated
@@ -51,6 +52,16 @@
 	protected PerspectivePart selectedElement;
 
 	/**
+	 * The cached value of the '{@link #getSynchronize() <em>Synchronize</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSynchronize()
+	 * @generated
+	 * @ordered
+	 */
+	protected PerspectivePartStack synchronize;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -112,12 +123,53 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public PerspectivePartStack getSynchronize() {
+		if (synchronize != null && synchronize.eIsProxy()) {
+			InternalEObject oldSynchronize = (InternalEObject)synchronize;
+			synchronize = (PerspectivePartStack)eResolveProxy(oldSynchronize);
+			if (synchronize != oldSynchronize) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SYNCHRONIZE, oldSynchronize, synchronize));
+			}
+		}
+		return synchronize;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PerspectivePartStack basicGetSynchronize() {
+		return synchronize;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSynchronize(PerspectivePartStack newSynchronize) {
+		PerspectivePartStack oldSynchronize = synchronize;
+		synchronize = newSynchronize;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SYNCHRONIZE, oldSynchronize, synchronize));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SELECTED_ELEMENT:
 				if (resolve) return getSelectedElement();
 				return basicGetSelectedElement();
+			case PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SYNCHRONIZE:
+				if (resolve) return getSynchronize();
+				return basicGetSynchronize();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -133,6 +185,9 @@
 			case PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SELECTED_ELEMENT:
 				setSelectedElement((PerspectivePart)newValue);
 				return;
+			case PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SYNCHRONIZE:
+				setSynchronize((PerspectivePartStack)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -148,6 +203,9 @@
 			case PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SELECTED_ELEMENT:
 				setSelectedElement((PerspectivePart)null);
 				return;
+			case PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SYNCHRONIZE:
+				setSynchronize((PerspectivePartStack)null);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -162,6 +220,8 @@
 		switch (featureID) {
 			case PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SELECTED_ELEMENT:
 				return selectedElement != null;
+			case PerspectiveDslPackage.PERSPECTIVE_PART_STACK__SYNCHRONIZE:
+				return synchronize != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore b/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore
index 223fb44..5007302 100644
--- a/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore
+++ b/org.eclipse.osbp.xtext.perspective/model/PerspectiveDsl.xcore
@@ -104,6 +104,7 @@
 
 class PerspectivePartStack extends PerspectiveElement {
 	refers PerspectivePart selectedElement
+	refers PerspectivePartStack synchronize
 }
 
 interface PerspectiveView extends PerspectiveLazyResolver{
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtextbin b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtextbin
index 33b1f7d..20c3431 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtextbin
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtextbin
Binary files differ
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g
index 6409853..fe8a2a7 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.g
@@ -340,9 +340,9 @@
 					{
 						getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
 					}
-								({true}?=>(otherlv_10='iconURI'
+								({true}?=>(otherlv_10='icon'
 								{
-									newLeafNode(otherlv_10, grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0());
+									newLeafNode(otherlv_10, grammarAccess.getPerspectiveAccess().getIconKeyword_5_0_0());
 								}
 								(
 									(
@@ -838,25 +838,20 @@
 					{
 						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
 					}
-								({true}?=>(otherlv_6='spaceVolume'
+								({true}?=>(otherlv_6='synchronize'
 								{
-									newLeafNode(otherlv_6, grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0());
+									newLeafNode(otherlv_6, grammarAccess.getPerspectivePartStackAccess().getSynchronizeKeyword_3_1_0());
 								}
 								(
 									(
-										lv_containerData_7_0=RULE_STRING
-										{
-											newLeafNode(lv_containerData_7_0, grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0());
-										}
 										{
 											if ($current==null) {
 												$current = createModelElement(grammarAccess.getPerspectivePartStackRule());
 											}
-											setWithLastConsumed(
-												$current,
-												"containerData",
-												lv_containerData_7_0,
-												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+										otherlv_7=RULE_ID
+										{
+											newLeafNode(otherlv_7, grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackCrossReference_3_1_1_0());
 										}
 									)
 								)
@@ -871,15 +866,48 @@
 					{
 						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
 					}
-								({true}?=>(otherlv_8='accessibility'
+								({true}?=>(otherlv_8='spaceVolume'
 								{
-									newLeafNode(otherlv_8, grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0());
+									newLeafNode(otherlv_8, grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_2_0());
 								}
 								(
 									(
-										lv_accessibilityPhrase_9_0=RULE_STRING
+										lv_containerData_9_0=RULE_STRING
 										{
-											newLeafNode(lv_accessibilityPhrase_9_0, grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0());
+											newLeafNode(lv_containerData_9_0, grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"containerData",
+												lv_containerData_9_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
+					{ 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+					}
+				)
+			)|
+			(
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3);
+					}
+								({true}?=>(otherlv_10='accessibility'
+								{
+									newLeafNode(otherlv_10, grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_3_0());
+								}
+								(
+									(
+										lv_accessibilityPhrase_11_0=RULE_STRING
+										{
+											newLeafNode(lv_accessibilityPhrase_11_0, grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0());
 										}
 										{
 											if ($current==null) {
@@ -888,7 +916,7 @@
 											setWithLastConsumed(
 												$current,
 												"accessibilityPhrase",
-												lv_accessibilityPhrase_9_0,
+												lv_accessibilityPhrase_11_0,
 												"org.eclipse.xtext.xbase.Xtype.STRING");
 										}
 									)
@@ -906,16 +934,16 @@
 				  getUnorderedGroupHelper().leave(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
 				}
 		)
-		otherlv_10='{'
+		otherlv_12='{'
 		{
-			newLeafNode(otherlv_10, grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4());
+			newLeafNode(otherlv_12, grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4());
 		}
 		(
 			(
 				{
 					newCompositeNode(grammarAccess.getPerspectivePartStackAccess().getElementsPerspectiveElementParserRuleCall_5_0());
 				}
-				lv_elements_11_0=rulePerspectiveElement
+				lv_elements_13_0=rulePerspectiveElement
 				{
 					if ($current==null) {
 						$current = createModelElementForParent(grammarAccess.getPerspectivePartStackRule());
@@ -923,15 +951,15 @@
 					add(
 						$current,
 						"elements",
-						lv_elements_11_0,
+						lv_elements_13_0,
 						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveElement");
 					afterParserOrEnumRuleCall();
 				}
 			)
 		)*
-		otherlv_12='}'
+		otherlv_14='}'
 		{
-			newLeafNode(otherlv_12, grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6());
+			newLeafNode(otherlv_14, grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6());
 		}
 	)
 ;
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens
index bb08a05..c014121 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDsl.tokens
@@ -1,121 +1,123 @@
-'!'=96
-'!='=81
-'!=='=83
-'#'=67
-'%'=95
-'%='=74
-'&&'=79
-'&'=129
-'('=63
-')'=65
-'*'=59
-'**'=93
-'*='=72
-'+'=91
-'++'=98
-'+='=70
-','=64
-'-'=92
-'--'=99
-'-='=71
-'->'=85
-'.'=100
-'..'=87
-'..<'=86
-'/'=94
-'/='=73
-':'=107
-'::'=101
-';'=61
-'<'=75
-'<>'=89
-'='=66
-'=='=80
-'==='=82
-'=>'=88
-'>'=76
-'>='=77
-'?'=128
-'?.'=102
-'?:'=90
-'@'=62
-'['=68
-']'=69
+'!'=98
+'!='=83
+'!=='=85
+'#'=69
+'%'=97
+'%='=76
+'&&'=81
+'&'=131
+'('=65
+')'=67
+'*'=61
+'**'=95
+'*='=74
+'+'=93
+'++'=100
+'+='=72
+','=66
+'-'=94
+'--'=101
+'-='=73
+'->'=87
+'.'=102
+'..'=89
+'..<'=88
+'/'=96
+'/='=75
+':'=109
+'::'=103
+';'=63
+'<'=77
+'<>'=91
+'='=68
+'=='=82
+'==='=84
+'=>'=90
+'>'=78
+'>='=79
+'?'=130
+'?.'=104
+'?:'=92
+'@'=64
+'['=70
+']'=71
 'accessibility'=21
-'allowedSources'=33
-'as'=97
-'bpmn'=42
-'browser'=54
-'card'=45
-'case'=109
-'catch'=127
-'chart'=37
-'dataInterchange'=51
-'default'=108
-'depth'=49
+'allowedSources'=35
+'as'=99
+'bpmn'=44
+'browser'=56
+'card'=47
+'case'=111
+'catch'=129
+'chart'=39
+'dataInterchange'=53
+'default'=110
+'depth'=51
 'describedBy'=17
-'dialog'=41
-'do'=112
-'editableTable'=36
-'else'=105
+'dialog'=43
+'do'=114
+'editableTable'=38
+'else'=107
 'eventManager'=23
-'extends'=115
-'extension'=58
-'false'=118
-'filterColumns'=50
-'finally'=125
-'for'=110
-'horizontal'=130
-'iconURI'=20
-'if'=104
-'import'=56
-'in'=48
-'instanceof'=84
-'isClosable'=31
-'kanban'=43
-'name'=53
-'new'=117
-'ns'=60
-'null'=120
-'of'=44
-'organigram'=39
+'extends'=117
+'extension'=60
+'false'=120
+'filterColumns'=52
+'finally'=127
+'for'=112
+'horizontal'=132
+'icon'=20
+'iconURI'=31
+'if'=106
+'import'=58
+'in'=50
+'instanceof'=86
+'isClosable'=33
+'kanban'=45
+'name'=55
+'new'=119
+'ns'=62
+'null'=122
+'of'=46
+'organigram'=41
 'orientation'=25
 'package'=13
-'part'=29
+'part'=30
 'partStack'=28
 'perspective'=16
 'process'=18
-'readOnlyTable'=35
-'report'=38
-'return'=123
+'readOnlyTable'=37
+'report'=40
+'return'=125
 'sashContainer'=24
-'search'=47
-'select'=34
+'search'=49
+'select'=36
 'selectedElement'=26
 'spaceVolume'=27
-'static'=57
-'super'=116
-'switch'=106
-'synchronized'=126
-'targetPart'=32
-'throw'=122
-'title'=52
+'static'=59
+'super'=118
+'switch'=108
+'synchronize'=29
+'synchronized'=128
+'targetPart'=34
+'throw'=124
+'title'=54
 'toolbar'=22
-'topology'=40
-'true'=119
-'try'=124
-'typeof'=121
-'url'=55
+'topology'=42
+'true'=121
+'try'=126
+'typeof'=123
+'url'=57
 'usertask'=19
-'val'=114
-'var'=113
-'vertical'=131
-'view'=30
-'welcome'=46
-'while'=111
+'val'=116
+'var'=115
+'vertical'=133
+'view'=32
+'welcome'=48
+'while'=113
 '{'=14
-'|'=103
-'||'=78
+'|'=105
+'||'=80
 '}'=15
 RULE_ANY_OTHER=12
 RULE_DECIMAL=8
@@ -158,6 +160,8 @@
 T__129=129
 T__130=130
 T__131=131
+T__132=132
+T__133=133
 T__13=13
 T__14=14
 T__15=15
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslLexer.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslLexer.java
index 62cf629..3bb62fc 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslLexer.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslLexer.java
@@ -23,6 +23,8 @@
     public static final int T__52=52;
     public static final int T__53=53;
     public static final int T__54=54;
+    public static final int T__133=133;
+    public static final int T__132=132;
     public static final int T__60=60;
     public static final int T__61=61;
     public static final int RULE_ID=4;
@@ -305,10 +307,10 @@
         try {
             int _type = T__20;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:18:7: ( 'iconURI' )
-            // InternalPerspectiveDsl.g:18:9: 'iconURI'
+            // InternalPerspectiveDsl.g:18:7: ( 'icon' )
+            // InternalPerspectiveDsl.g:18:9: 'icon'
             {
-            match("iconURI"); 
+            match("icon"); 
 
 
             }
@@ -494,10 +496,10 @@
         try {
             int _type = T__29;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:27:7: ( 'part' )
-            // InternalPerspectiveDsl.g:27:9: 'part'
+            // InternalPerspectiveDsl.g:27:7: ( 'synchronize' )
+            // InternalPerspectiveDsl.g:27:9: 'synchronize'
             {
-            match("part"); 
+            match("synchronize"); 
 
 
             }
@@ -515,10 +517,10 @@
         try {
             int _type = T__30;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:28:7: ( 'view' )
-            // InternalPerspectiveDsl.g:28:9: 'view'
+            // InternalPerspectiveDsl.g:28:7: ( 'part' )
+            // InternalPerspectiveDsl.g:28:9: 'part'
             {
-            match("view"); 
+            match("part"); 
 
 
             }
@@ -536,10 +538,10 @@
         try {
             int _type = T__31;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:29:7: ( 'isClosable' )
-            // InternalPerspectiveDsl.g:29:9: 'isClosable'
+            // InternalPerspectiveDsl.g:29:7: ( 'iconURI' )
+            // InternalPerspectiveDsl.g:29:9: 'iconURI'
             {
-            match("isClosable"); 
+            match("iconURI"); 
 
 
             }
@@ -557,10 +559,10 @@
         try {
             int _type = T__32;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:30:7: ( 'targetPart' )
-            // InternalPerspectiveDsl.g:30:9: 'targetPart'
+            // InternalPerspectiveDsl.g:30:7: ( 'view' )
+            // InternalPerspectiveDsl.g:30:9: 'view'
             {
-            match("targetPart"); 
+            match("view"); 
 
 
             }
@@ -578,10 +580,10 @@
         try {
             int _type = T__33;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:31:7: ( 'allowedSources' )
-            // InternalPerspectiveDsl.g:31:9: 'allowedSources'
+            // InternalPerspectiveDsl.g:31:7: ( 'isClosable' )
+            // InternalPerspectiveDsl.g:31:9: 'isClosable'
             {
-            match("allowedSources"); 
+            match("isClosable"); 
 
 
             }
@@ -599,10 +601,10 @@
         try {
             int _type = T__34;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:32:7: ( 'select' )
-            // InternalPerspectiveDsl.g:32:9: 'select'
+            // InternalPerspectiveDsl.g:32:7: ( 'targetPart' )
+            // InternalPerspectiveDsl.g:32:9: 'targetPart'
             {
-            match("select"); 
+            match("targetPart"); 
 
 
             }
@@ -620,10 +622,10 @@
         try {
             int _type = T__35;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:33:7: ( 'readOnlyTable' )
-            // InternalPerspectiveDsl.g:33:9: 'readOnlyTable'
+            // InternalPerspectiveDsl.g:33:7: ( 'allowedSources' )
+            // InternalPerspectiveDsl.g:33:9: 'allowedSources'
             {
-            match("readOnlyTable"); 
+            match("allowedSources"); 
 
 
             }
@@ -641,10 +643,10 @@
         try {
             int _type = T__36;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:34:7: ( 'editableTable' )
-            // InternalPerspectiveDsl.g:34:9: 'editableTable'
+            // InternalPerspectiveDsl.g:34:7: ( 'select' )
+            // InternalPerspectiveDsl.g:34:9: 'select'
             {
-            match("editableTable"); 
+            match("select"); 
 
 
             }
@@ -662,10 +664,10 @@
         try {
             int _type = T__37;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:35:7: ( 'chart' )
-            // InternalPerspectiveDsl.g:35:9: 'chart'
+            // InternalPerspectiveDsl.g:35:7: ( 'readOnlyTable' )
+            // InternalPerspectiveDsl.g:35:9: 'readOnlyTable'
             {
-            match("chart"); 
+            match("readOnlyTable"); 
 
 
             }
@@ -683,10 +685,10 @@
         try {
             int _type = T__38;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:36:7: ( 'report' )
-            // InternalPerspectiveDsl.g:36:9: 'report'
+            // InternalPerspectiveDsl.g:36:7: ( 'editableTable' )
+            // InternalPerspectiveDsl.g:36:9: 'editableTable'
             {
-            match("report"); 
+            match("editableTable"); 
 
 
             }
@@ -704,10 +706,10 @@
         try {
             int _type = T__39;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:37:7: ( 'organigram' )
-            // InternalPerspectiveDsl.g:37:9: 'organigram'
+            // InternalPerspectiveDsl.g:37:7: ( 'chart' )
+            // InternalPerspectiveDsl.g:37:9: 'chart'
             {
-            match("organigram"); 
+            match("chart"); 
 
 
             }
@@ -725,10 +727,10 @@
         try {
             int _type = T__40;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:38:7: ( 'topology' )
-            // InternalPerspectiveDsl.g:38:9: 'topology'
+            // InternalPerspectiveDsl.g:38:7: ( 'report' )
+            // InternalPerspectiveDsl.g:38:9: 'report'
             {
-            match("topology"); 
+            match("report"); 
 
 
             }
@@ -746,10 +748,10 @@
         try {
             int _type = T__41;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:39:7: ( 'dialog' )
-            // InternalPerspectiveDsl.g:39:9: 'dialog'
+            // InternalPerspectiveDsl.g:39:7: ( 'organigram' )
+            // InternalPerspectiveDsl.g:39:9: 'organigram'
             {
-            match("dialog"); 
+            match("organigram"); 
 
 
             }
@@ -767,10 +769,10 @@
         try {
             int _type = T__42;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:40:7: ( 'bpmn' )
-            // InternalPerspectiveDsl.g:40:9: 'bpmn'
+            // InternalPerspectiveDsl.g:40:7: ( 'topology' )
+            // InternalPerspectiveDsl.g:40:9: 'topology'
             {
-            match("bpmn"); 
+            match("topology"); 
 
 
             }
@@ -788,10 +790,10 @@
         try {
             int _type = T__43;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:41:7: ( 'kanban' )
-            // InternalPerspectiveDsl.g:41:9: 'kanban'
+            // InternalPerspectiveDsl.g:41:7: ( 'dialog' )
+            // InternalPerspectiveDsl.g:41:9: 'dialog'
             {
-            match("kanban"); 
+            match("dialog"); 
 
 
             }
@@ -809,10 +811,10 @@
         try {
             int _type = T__44;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:42:7: ( 'of' )
-            // InternalPerspectiveDsl.g:42:9: 'of'
+            // InternalPerspectiveDsl.g:42:7: ( 'bpmn' )
+            // InternalPerspectiveDsl.g:42:9: 'bpmn'
             {
-            match("of"); 
+            match("bpmn"); 
 
 
             }
@@ -830,10 +832,10 @@
         try {
             int _type = T__45;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:43:7: ( 'card' )
-            // InternalPerspectiveDsl.g:43:9: 'card'
+            // InternalPerspectiveDsl.g:43:7: ( 'kanban' )
+            // InternalPerspectiveDsl.g:43:9: 'kanban'
             {
-            match("card"); 
+            match("kanban"); 
 
 
             }
@@ -851,10 +853,10 @@
         try {
             int _type = T__46;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:44:7: ( 'welcome' )
-            // InternalPerspectiveDsl.g:44:9: 'welcome'
+            // InternalPerspectiveDsl.g:44:7: ( 'of' )
+            // InternalPerspectiveDsl.g:44:9: 'of'
             {
-            match("welcome"); 
+            match("of"); 
 
 
             }
@@ -872,10 +874,10 @@
         try {
             int _type = T__47;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:45:7: ( 'search' )
-            // InternalPerspectiveDsl.g:45:9: 'search'
+            // InternalPerspectiveDsl.g:45:7: ( 'card' )
+            // InternalPerspectiveDsl.g:45:9: 'card'
             {
-            match("search"); 
+            match("card"); 
 
 
             }
@@ -893,10 +895,10 @@
         try {
             int _type = T__48;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:46:7: ( 'in' )
-            // InternalPerspectiveDsl.g:46:9: 'in'
+            // InternalPerspectiveDsl.g:46:7: ( 'welcome' )
+            // InternalPerspectiveDsl.g:46:9: 'welcome'
             {
-            match("in"); 
+            match("welcome"); 
 
 
             }
@@ -914,10 +916,10 @@
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:47:7: ( 'depth' )
-            // InternalPerspectiveDsl.g:47:9: 'depth'
+            // InternalPerspectiveDsl.g:47:7: ( 'search' )
+            // InternalPerspectiveDsl.g:47:9: 'search'
             {
-            match("depth"); 
+            match("search"); 
 
 
             }
@@ -935,10 +937,10 @@
         try {
             int _type = T__50;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:48:7: ( 'filterColumns' )
-            // InternalPerspectiveDsl.g:48:9: 'filterColumns'
+            // InternalPerspectiveDsl.g:48:7: ( 'in' )
+            // InternalPerspectiveDsl.g:48:9: 'in'
             {
-            match("filterColumns"); 
+            match("in"); 
 
 
             }
@@ -956,10 +958,10 @@
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:49:7: ( 'dataInterchange' )
-            // InternalPerspectiveDsl.g:49:9: 'dataInterchange'
+            // InternalPerspectiveDsl.g:49:7: ( 'depth' )
+            // InternalPerspectiveDsl.g:49:9: 'depth'
             {
-            match("dataInterchange"); 
+            match("depth"); 
 
 
             }
@@ -977,10 +979,10 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:50:7: ( 'title' )
-            // InternalPerspectiveDsl.g:50:9: 'title'
+            // InternalPerspectiveDsl.g:50:7: ( 'filterColumns' )
+            // InternalPerspectiveDsl.g:50:9: 'filterColumns'
             {
-            match("title"); 
+            match("filterColumns"); 
 
 
             }
@@ -998,10 +1000,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:51:7: ( 'name' )
-            // InternalPerspectiveDsl.g:51:9: 'name'
+            // InternalPerspectiveDsl.g:51:7: ( 'dataInterchange' )
+            // InternalPerspectiveDsl.g:51:9: 'dataInterchange'
             {
-            match("name"); 
+            match("dataInterchange"); 
 
 
             }
@@ -1019,10 +1021,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:52:7: ( 'browser' )
-            // InternalPerspectiveDsl.g:52:9: 'browser'
+            // InternalPerspectiveDsl.g:52:7: ( 'title' )
+            // InternalPerspectiveDsl.g:52:9: 'title'
             {
-            match("browser"); 
+            match("title"); 
 
 
             }
@@ -1040,10 +1042,10 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:53:7: ( 'url' )
-            // InternalPerspectiveDsl.g:53:9: 'url'
+            // InternalPerspectiveDsl.g:53:7: ( 'name' )
+            // InternalPerspectiveDsl.g:53:9: 'name'
             {
-            match("url"); 
+            match("name"); 
 
 
             }
@@ -1061,10 +1063,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:54:7: ( 'import' )
-            // InternalPerspectiveDsl.g:54:9: 'import'
+            // InternalPerspectiveDsl.g:54:7: ( 'browser' )
+            // InternalPerspectiveDsl.g:54:9: 'browser'
             {
-            match("import"); 
+            match("browser"); 
 
 
             }
@@ -1082,10 +1084,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:55:7: ( 'static' )
-            // InternalPerspectiveDsl.g:55:9: 'static'
+            // InternalPerspectiveDsl.g:55:7: ( 'url' )
+            // InternalPerspectiveDsl.g:55:9: 'url'
             {
-            match("static"); 
+            match("url"); 
 
 
             }
@@ -1103,10 +1105,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:56:7: ( 'extension' )
-            // InternalPerspectiveDsl.g:56:9: 'extension'
+            // InternalPerspectiveDsl.g:56:7: ( 'import' )
+            // InternalPerspectiveDsl.g:56:9: 'import'
             {
-            match("extension"); 
+            match("import"); 
 
 
             }
@@ -1124,10 +1126,11 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:57:7: ( '*' )
-            // InternalPerspectiveDsl.g:57:9: '*'
+            // InternalPerspectiveDsl.g:57:7: ( 'static' )
+            // InternalPerspectiveDsl.g:57:9: 'static'
             {
-            match('*'); 
+            match("static"); 
+
 
             }
 
@@ -1144,10 +1147,10 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:58:7: ( 'ns' )
-            // InternalPerspectiveDsl.g:58:9: 'ns'
+            // InternalPerspectiveDsl.g:58:7: ( 'extension' )
+            // InternalPerspectiveDsl.g:58:9: 'extension'
             {
-            match("ns"); 
+            match("extension"); 
 
 
             }
@@ -1165,10 +1168,10 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:59:7: ( ';' )
-            // InternalPerspectiveDsl.g:59:9: ';'
+            // InternalPerspectiveDsl.g:59:7: ( '*' )
+            // InternalPerspectiveDsl.g:59:9: '*'
             {
-            match(';'); 
+            match('*'); 
 
             }
 
@@ -1185,10 +1188,11 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:60:7: ( '@' )
-            // InternalPerspectiveDsl.g:60:9: '@'
+            // InternalPerspectiveDsl.g:60:7: ( 'ns' )
+            // InternalPerspectiveDsl.g:60:9: 'ns'
             {
-            match('@'); 
+            match("ns"); 
+
 
             }
 
@@ -1205,10 +1209,10 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:61:7: ( '(' )
-            // InternalPerspectiveDsl.g:61:9: '('
+            // InternalPerspectiveDsl.g:61:7: ( ';' )
+            // InternalPerspectiveDsl.g:61:9: ';'
             {
-            match('('); 
+            match(';'); 
 
             }
 
@@ -1225,10 +1229,10 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:62:7: ( ',' )
-            // InternalPerspectiveDsl.g:62:9: ','
+            // InternalPerspectiveDsl.g:62:7: ( '@' )
+            // InternalPerspectiveDsl.g:62:9: '@'
             {
-            match(','); 
+            match('@'); 
 
             }
 
@@ -1245,10 +1249,10 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:63:7: ( ')' )
-            // InternalPerspectiveDsl.g:63:9: ')'
+            // InternalPerspectiveDsl.g:63:7: ( '(' )
+            // InternalPerspectiveDsl.g:63:9: '('
             {
-            match(')'); 
+            match('('); 
 
             }
 
@@ -1265,10 +1269,10 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:64:7: ( '=' )
-            // InternalPerspectiveDsl.g:64:9: '='
+            // InternalPerspectiveDsl.g:64:7: ( ',' )
+            // InternalPerspectiveDsl.g:64:9: ','
             {
-            match('='); 
+            match(','); 
 
             }
 
@@ -1285,10 +1289,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:65:7: ( '#' )
-            // InternalPerspectiveDsl.g:65:9: '#'
+            // InternalPerspectiveDsl.g:65:7: ( ')' )
+            // InternalPerspectiveDsl.g:65:9: ')'
             {
-            match('#'); 
+            match(')'); 
 
             }
 
@@ -1305,10 +1309,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:66:7: ( '[' )
-            // InternalPerspectiveDsl.g:66:9: '['
+            // InternalPerspectiveDsl.g:66:7: ( '=' )
+            // InternalPerspectiveDsl.g:66:9: '='
             {
-            match('['); 
+            match('='); 
 
             }
 
@@ -1325,10 +1329,10 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:67:7: ( ']' )
-            // InternalPerspectiveDsl.g:67:9: ']'
+            // InternalPerspectiveDsl.g:67:7: ( '#' )
+            // InternalPerspectiveDsl.g:67:9: '#'
             {
-            match(']'); 
+            match('#'); 
 
             }
 
@@ -1345,11 +1349,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:68:7: ( '+=' )
-            // InternalPerspectiveDsl.g:68:9: '+='
+            // InternalPerspectiveDsl.g:68:7: ( '[' )
+            // InternalPerspectiveDsl.g:68:9: '['
             {
-            match("+="); 
-
+            match('['); 
 
             }
 
@@ -1366,11 +1369,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:69:7: ( '-=' )
-            // InternalPerspectiveDsl.g:69:9: '-='
+            // InternalPerspectiveDsl.g:69:7: ( ']' )
+            // InternalPerspectiveDsl.g:69:9: ']'
             {
-            match("-="); 
-
+            match(']'); 
 
             }
 
@@ -1387,10 +1389,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:70:7: ( '*=' )
-            // InternalPerspectiveDsl.g:70:9: '*='
+            // InternalPerspectiveDsl.g:70:7: ( '+=' )
+            // InternalPerspectiveDsl.g:70:9: '+='
             {
-            match("*="); 
+            match("+="); 
 
 
             }
@@ -1408,10 +1410,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:71:7: ( '/=' )
-            // InternalPerspectiveDsl.g:71:9: '/='
+            // InternalPerspectiveDsl.g:71:7: ( '-=' )
+            // InternalPerspectiveDsl.g:71:9: '-='
             {
-            match("/="); 
+            match("-="); 
 
 
             }
@@ -1429,10 +1431,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:72:7: ( '%=' )
-            // InternalPerspectiveDsl.g:72:9: '%='
+            // InternalPerspectiveDsl.g:72:7: ( '*=' )
+            // InternalPerspectiveDsl.g:72:9: '*='
             {
-            match("%="); 
+            match("*="); 
 
 
             }
@@ -1450,10 +1452,11 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:73:7: ( '<' )
-            // InternalPerspectiveDsl.g:73:9: '<'
+            // InternalPerspectiveDsl.g:73:7: ( '/=' )
+            // InternalPerspectiveDsl.g:73:9: '/='
             {
-            match('<'); 
+            match("/="); 
+
 
             }
 
@@ -1470,10 +1473,11 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:74:7: ( '>' )
-            // InternalPerspectiveDsl.g:74:9: '>'
+            // InternalPerspectiveDsl.g:74:7: ( '%=' )
+            // InternalPerspectiveDsl.g:74:9: '%='
             {
-            match('>'); 
+            match("%="); 
+
 
             }
 
@@ -1490,11 +1494,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:75:7: ( '>=' )
-            // InternalPerspectiveDsl.g:75:9: '>='
+            // InternalPerspectiveDsl.g:75:7: ( '<' )
+            // InternalPerspectiveDsl.g:75:9: '<'
             {
-            match(">="); 
-
+            match('<'); 
 
             }
 
@@ -1511,11 +1514,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:76:7: ( '||' )
-            // InternalPerspectiveDsl.g:76:9: '||'
+            // InternalPerspectiveDsl.g:76:7: ( '>' )
+            // InternalPerspectiveDsl.g:76:9: '>'
             {
-            match("||"); 
-
+            match('>'); 
 
             }
 
@@ -1532,10 +1534,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:77:7: ( '&&' )
-            // InternalPerspectiveDsl.g:77:9: '&&'
+            // InternalPerspectiveDsl.g:77:7: ( '>=' )
+            // InternalPerspectiveDsl.g:77:9: '>='
             {
-            match("&&"); 
+            match(">="); 
 
 
             }
@@ -1553,10 +1555,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:78:7: ( '==' )
-            // InternalPerspectiveDsl.g:78:9: '=='
+            // InternalPerspectiveDsl.g:78:7: ( '||' )
+            // InternalPerspectiveDsl.g:78:9: '||'
             {
-            match("=="); 
+            match("||"); 
 
 
             }
@@ -1574,10 +1576,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:79:7: ( '!=' )
-            // InternalPerspectiveDsl.g:79:9: '!='
+            // InternalPerspectiveDsl.g:79:7: ( '&&' )
+            // InternalPerspectiveDsl.g:79:9: '&&'
             {
-            match("!="); 
+            match("&&"); 
 
 
             }
@@ -1595,10 +1597,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:80:7: ( '===' )
-            // InternalPerspectiveDsl.g:80:9: '==='
+            // InternalPerspectiveDsl.g:80:7: ( '==' )
+            // InternalPerspectiveDsl.g:80:9: '=='
             {
-            match("==="); 
+            match("=="); 
 
 
             }
@@ -1616,10 +1618,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:81:7: ( '!==' )
-            // InternalPerspectiveDsl.g:81:9: '!=='
+            // InternalPerspectiveDsl.g:81:7: ( '!=' )
+            // InternalPerspectiveDsl.g:81:9: '!='
             {
-            match("!=="); 
+            match("!="); 
 
 
             }
@@ -1637,10 +1639,10 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:82:7: ( 'instanceof' )
-            // InternalPerspectiveDsl.g:82:9: 'instanceof'
+            // InternalPerspectiveDsl.g:82:7: ( '===' )
+            // InternalPerspectiveDsl.g:82:9: '==='
             {
-            match("instanceof"); 
+            match("==="); 
 
 
             }
@@ -1658,10 +1660,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:83:7: ( '->' )
-            // InternalPerspectiveDsl.g:83:9: '->'
+            // InternalPerspectiveDsl.g:83:7: ( '!==' )
+            // InternalPerspectiveDsl.g:83:9: '!=='
             {
-            match("->"); 
+            match("!=="); 
 
 
             }
@@ -1679,10 +1681,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:84:7: ( '..<' )
-            // InternalPerspectiveDsl.g:84:9: '..<'
+            // InternalPerspectiveDsl.g:84:7: ( 'instanceof' )
+            // InternalPerspectiveDsl.g:84:9: 'instanceof'
             {
-            match("..<"); 
+            match("instanceof"); 
 
 
             }
@@ -1700,10 +1702,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:85:7: ( '..' )
-            // InternalPerspectiveDsl.g:85:9: '..'
+            // InternalPerspectiveDsl.g:85:7: ( '->' )
+            // InternalPerspectiveDsl.g:85:9: '->'
             {
-            match(".."); 
+            match("->"); 
 
 
             }
@@ -1721,10 +1723,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:86:7: ( '=>' )
-            // InternalPerspectiveDsl.g:86:9: '=>'
+            // InternalPerspectiveDsl.g:86:7: ( '..<' )
+            // InternalPerspectiveDsl.g:86:9: '..<'
             {
-            match("=>"); 
+            match("..<"); 
 
 
             }
@@ -1742,10 +1744,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:87:7: ( '<>' )
-            // InternalPerspectiveDsl.g:87:9: '<>'
+            // InternalPerspectiveDsl.g:87:7: ( '..' )
+            // InternalPerspectiveDsl.g:87:9: '..'
             {
-            match("<>"); 
+            match(".."); 
 
 
             }
@@ -1763,10 +1765,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:88:7: ( '?:' )
-            // InternalPerspectiveDsl.g:88:9: '?:'
+            // InternalPerspectiveDsl.g:88:7: ( '=>' )
+            // InternalPerspectiveDsl.g:88:9: '=>'
             {
-            match("?:"); 
+            match("=>"); 
 
 
             }
@@ -1784,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: ( '<>' )
+            // InternalPerspectiveDsl.g:89:9: '<>'
             {
-            match('+'); 
+            match("<>"); 
+
 
             }
 
@@ -1804,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: ( '?:' )
+            // InternalPerspectiveDsl.g:90:9: '?:'
             {
-            match('-'); 
+            match("?:"); 
+
 
             }
 
@@ -1824,11 +1828,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:91:7: ( '**' )
-            // InternalPerspectiveDsl.g:91:9: '**'
+            // InternalPerspectiveDsl.g:91:7: ( '+' )
+            // InternalPerspectiveDsl.g:91:9: '+'
             {
-            match("**"); 
-
+            match('+'); 
 
             }
 
@@ -1845,10 +1848,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('-'); 
 
             }
 
@@ -1865,10 +1868,11 @@
         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("**"); 
+
 
             }
 
@@ -1885,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('/'); 
 
             }
 
@@ -1905,11 +1909,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:95:7: ( 'as' )
-            // InternalPerspectiveDsl.g:95:9: 'as'
+            // InternalPerspectiveDsl.g:95:7: ( '%' )
+            // InternalPerspectiveDsl.g:95:9: '%'
             {
-            match("as"); 
-
+            match('%'); 
 
             }
 
@@ -1926,11 +1929,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:96:7: ( '++' )
-            // InternalPerspectiveDsl.g:96:9: '++'
+            // InternalPerspectiveDsl.g:96:7: ( '!' )
+            // InternalPerspectiveDsl.g:96:9: '!'
             {
-            match("++"); 
-
+            match('!'); 
 
             }
 
@@ -1947,10 +1949,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:97:7: ( '--' )
-            // InternalPerspectiveDsl.g:97:9: '--'
+            // InternalPerspectiveDsl.g:97:7: ( 'as' )
+            // InternalPerspectiveDsl.g:97:9: 'as'
             {
-            match("--"); 
+            match("as"); 
 
 
             }
@@ -1968,10 +1970,11 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:98:8: ( '.' )
-            // InternalPerspectiveDsl.g:98:10: '.'
+            // InternalPerspectiveDsl.g:98:8: ( '++' )
+            // InternalPerspectiveDsl.g:98:10: '++'
             {
-            match('.'); 
+            match("++"); 
+
 
             }
 
@@ -1988,10 +1991,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:99:8: ( '::' )
-            // InternalPerspectiveDsl.g:99:10: '::'
+            // InternalPerspectiveDsl.g:99:8: ( '--' )
+            // InternalPerspectiveDsl.g:99:10: '--'
             {
-            match("::"); 
+            match("--"); 
 
 
             }
@@ -2009,11 +2012,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:100:8: ( '?.' )
-            // InternalPerspectiveDsl.g:100:10: '?.'
+            // InternalPerspectiveDsl.g:100:8: ( '.' )
+            // InternalPerspectiveDsl.g:100:10: '.'
             {
-            match("?."); 
-
+            match('.'); 
 
             }
 
@@ -2030,10 +2032,11 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:101:8: ( '|' )
-            // InternalPerspectiveDsl.g:101:10: '|'
+            // InternalPerspectiveDsl.g:101:8: ( '::' )
+            // InternalPerspectiveDsl.g:101:10: '::'
             {
-            match('|'); 
+            match("::"); 
+
 
             }
 
@@ -2050,10 +2053,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:102:8: ( 'if' )
-            // InternalPerspectiveDsl.g:102:10: 'if'
+            // InternalPerspectiveDsl.g:102:8: ( '?.' )
+            // InternalPerspectiveDsl.g:102:10: '?.'
             {
-            match("if"); 
+            match("?."); 
 
 
             }
@@ -2071,11 +2074,10 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:103:8: ( 'else' )
-            // InternalPerspectiveDsl.g:103:10: 'else'
+            // InternalPerspectiveDsl.g:103:8: ( '|' )
+            // InternalPerspectiveDsl.g:103:10: '|'
             {
-            match("else"); 
-
+            match('|'); 
 
             }
 
@@ -2092,10 +2094,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:104:8: ( 'switch' )
-            // InternalPerspectiveDsl.g:104:10: 'switch'
+            // InternalPerspectiveDsl.g:104:8: ( 'if' )
+            // InternalPerspectiveDsl.g:104:10: 'if'
             {
-            match("switch"); 
+            match("if"); 
 
 
             }
@@ -2113,10 +2115,11 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:105:8: ( ':' )
-            // InternalPerspectiveDsl.g:105:10: ':'
+            // InternalPerspectiveDsl.g:105:8: ( 'else' )
+            // InternalPerspectiveDsl.g:105:10: 'else'
             {
-            match(':'); 
+            match("else"); 
+
 
             }
 
@@ -2133,10 +2136,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:106:8: ( 'default' )
-            // InternalPerspectiveDsl.g:106:10: 'default'
+            // InternalPerspectiveDsl.g:106:8: ( 'switch' )
+            // InternalPerspectiveDsl.g:106:10: 'switch'
             {
-            match("default"); 
+            match("switch"); 
 
 
             }
@@ -2154,11 +2157,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:107:8: ( 'case' )
-            // InternalPerspectiveDsl.g:107:10: 'case'
+            // InternalPerspectiveDsl.g:107:8: ( ':' )
+            // InternalPerspectiveDsl.g:107:10: ':'
             {
-            match("case"); 
-
+            match(':'); 
 
             }
 
@@ -2175,10 +2177,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:108:8: ( 'for' )
-            // InternalPerspectiveDsl.g:108:10: 'for'
+            // InternalPerspectiveDsl.g:108:8: ( 'default' )
+            // InternalPerspectiveDsl.g:108:10: 'default'
             {
-            match("for"); 
+            match("default"); 
 
 
             }
@@ -2196,10 +2198,10 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:109:8: ( 'while' )
-            // InternalPerspectiveDsl.g:109:10: 'while'
+            // InternalPerspectiveDsl.g:109:8: ( 'case' )
+            // InternalPerspectiveDsl.g:109:10: 'case'
             {
-            match("while"); 
+            match("case"); 
 
 
             }
@@ -2217,10 +2219,10 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:110:8: ( 'do' )
-            // InternalPerspectiveDsl.g:110:10: 'do'
+            // InternalPerspectiveDsl.g:110:8: ( 'for' )
+            // InternalPerspectiveDsl.g:110:10: 'for'
             {
-            match("do"); 
+            match("for"); 
 
 
             }
@@ -2238,10 +2240,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:111:8: ( 'var' )
-            // InternalPerspectiveDsl.g:111:10: 'var'
+            // InternalPerspectiveDsl.g:111:8: ( 'while' )
+            // InternalPerspectiveDsl.g:111:10: 'while'
             {
-            match("var"); 
+            match("while"); 
 
 
             }
@@ -2259,10 +2261,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:112:8: ( 'val' )
-            // InternalPerspectiveDsl.g:112:10: 'val'
+            // InternalPerspectiveDsl.g:112:8: ( 'do' )
+            // InternalPerspectiveDsl.g:112:10: 'do'
             {
-            match("val"); 
+            match("do"); 
 
 
             }
@@ -2280,10 +2282,10 @@
         try {
             int _type = T__115;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:113:8: ( 'extends' )
-            // InternalPerspectiveDsl.g:113:10: 'extends'
+            // InternalPerspectiveDsl.g:113:8: ( 'var' )
+            // InternalPerspectiveDsl.g:113:10: 'var'
             {
-            match("extends"); 
+            match("var"); 
 
 
             }
@@ -2301,10 +2303,10 @@
         try {
             int _type = T__116;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:114:8: ( 'super' )
-            // InternalPerspectiveDsl.g:114:10: 'super'
+            // InternalPerspectiveDsl.g:114:8: ( 'val' )
+            // InternalPerspectiveDsl.g:114:10: 'val'
             {
-            match("super"); 
+            match("val"); 
 
 
             }
@@ -2322,10 +2324,10 @@
         try {
             int _type = T__117;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:115:8: ( 'new' )
-            // InternalPerspectiveDsl.g:115:10: 'new'
+            // InternalPerspectiveDsl.g:115:8: ( 'extends' )
+            // InternalPerspectiveDsl.g:115:10: 'extends'
             {
-            match("new"); 
+            match("extends"); 
 
 
             }
@@ -2343,10 +2345,10 @@
         try {
             int _type = T__118;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:116:8: ( 'false' )
-            // InternalPerspectiveDsl.g:116:10: 'false'
+            // InternalPerspectiveDsl.g:116:8: ( 'super' )
+            // InternalPerspectiveDsl.g:116:10: 'super'
             {
-            match("false"); 
+            match("super"); 
 
 
             }
@@ -2364,10 +2366,10 @@
         try {
             int _type = T__119;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:117:8: ( 'true' )
-            // InternalPerspectiveDsl.g:117:10: 'true'
+            // InternalPerspectiveDsl.g:117:8: ( 'new' )
+            // InternalPerspectiveDsl.g:117:10: 'new'
             {
-            match("true"); 
+            match("new"); 
 
 
             }
@@ -2385,10 +2387,10 @@
         try {
             int _type = T__120;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:118:8: ( 'null' )
-            // InternalPerspectiveDsl.g:118:10: 'null'
+            // InternalPerspectiveDsl.g:118:8: ( 'false' )
+            // InternalPerspectiveDsl.g:118:10: 'false'
             {
-            match("null"); 
+            match("false"); 
 
 
             }
@@ -2406,10 +2408,10 @@
         try {
             int _type = T__121;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:119:8: ( 'typeof' )
-            // InternalPerspectiveDsl.g:119:10: 'typeof'
+            // InternalPerspectiveDsl.g:119:8: ( 'true' )
+            // InternalPerspectiveDsl.g:119:10: 'true'
             {
-            match("typeof"); 
+            match("true"); 
 
 
             }
@@ -2427,10 +2429,10 @@
         try {
             int _type = T__122;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:120:8: ( 'throw' )
-            // InternalPerspectiveDsl.g:120:10: 'throw'
+            // InternalPerspectiveDsl.g:120:8: ( 'null' )
+            // InternalPerspectiveDsl.g:120:10: 'null'
             {
-            match("throw"); 
+            match("null"); 
 
 
             }
@@ -2448,10 +2450,10 @@
         try {
             int _type = T__123;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:121:8: ( 'return' )
-            // InternalPerspectiveDsl.g:121:10: 'return'
+            // InternalPerspectiveDsl.g:121:8: ( 'typeof' )
+            // InternalPerspectiveDsl.g:121:10: 'typeof'
             {
-            match("return"); 
+            match("typeof"); 
 
 
             }
@@ -2469,10 +2471,10 @@
         try {
             int _type = T__124;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:122:8: ( 'try' )
-            // InternalPerspectiveDsl.g:122:10: 'try'
+            // InternalPerspectiveDsl.g:122:8: ( 'throw' )
+            // InternalPerspectiveDsl.g:122:10: 'throw'
             {
-            match("try"); 
+            match("throw"); 
 
 
             }
@@ -2490,10 +2492,10 @@
         try {
             int _type = T__125;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:123:8: ( 'finally' )
-            // InternalPerspectiveDsl.g:123:10: 'finally'
+            // InternalPerspectiveDsl.g:123:8: ( 'return' )
+            // InternalPerspectiveDsl.g:123:10: 'return'
             {
-            match("finally"); 
+            match("return"); 
 
 
             }
@@ -2511,10 +2513,10 @@
         try {
             int _type = T__126;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:124:8: ( 'synchronized' )
-            // InternalPerspectiveDsl.g:124:10: 'synchronized'
+            // InternalPerspectiveDsl.g:124:8: ( 'try' )
+            // InternalPerspectiveDsl.g:124:10: 'try'
             {
-            match("synchronized"); 
+            match("try"); 
 
 
             }
@@ -2532,10 +2534,10 @@
         try {
             int _type = T__127;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:125:8: ( 'catch' )
-            // InternalPerspectiveDsl.g:125:10: 'catch'
+            // InternalPerspectiveDsl.g:125:8: ( 'finally' )
+            // InternalPerspectiveDsl.g:125:10: 'finally'
             {
-            match("catch"); 
+            match("finally"); 
 
 
             }
@@ -2553,10 +2555,11 @@
         try {
             int _type = T__128;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:126:8: ( '?' )
-            // InternalPerspectiveDsl.g:126:10: '?'
+            // InternalPerspectiveDsl.g:126:8: ( 'synchronized' )
+            // InternalPerspectiveDsl.g:126:10: 'synchronized'
             {
-            match('?'); 
+            match("synchronized"); 
+
 
             }
 
@@ -2573,10 +2576,11 @@
         try {
             int _type = T__129;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:127:8: ( '&' )
-            // InternalPerspectiveDsl.g:127:10: '&'
+            // InternalPerspectiveDsl.g:127:8: ( 'catch' )
+            // InternalPerspectiveDsl.g:127:10: 'catch'
             {
-            match('&'); 
+            match("catch"); 
+
 
             }
 
@@ -2593,11 +2597,10 @@
         try {
             int _type = T__130;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:128:8: ( 'horizontal' )
-            // InternalPerspectiveDsl.g:128:10: 'horizontal'
+            // InternalPerspectiveDsl.g:128:8: ( '?' )
+            // InternalPerspectiveDsl.g:128:10: '?'
             {
-            match("horizontal"); 
-
+            match('?'); 
 
             }
 
@@ -2614,8 +2617,49 @@
         try {
             int _type = T__131;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:129:8: ( 'vertical' )
-            // InternalPerspectiveDsl.g:129:10: 'vertical'
+            // InternalPerspectiveDsl.g:129:8: ( '&' )
+            // InternalPerspectiveDsl.g:129:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:130:8: ( 'horizontal' )
+            // InternalPerspectiveDsl.g:130:10: 'horizontal'
+            {
+            match("horizontal"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalPerspectiveDsl.g:131:8: ( 'vertical' )
+            // InternalPerspectiveDsl.g:131:10: 'vertical'
             {
             match("vertical"); 
 
@@ -2628,17 +2672,17 @@
         finally {
         }
     }
-    // $ANTLR end "T__131"
+    // $ANTLR end "T__133"
 
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:9198:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalPerspectiveDsl.g:9198:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:9226:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalPerspectiveDsl.g:9226:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalPerspectiveDsl.g:9198:12: ( '0x' | '0X' )
+            // InternalPerspectiveDsl.g:9226:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2666,7 +2710,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9198:13: '0x'
+                    // InternalPerspectiveDsl.g:9226:13: '0x'
                     {
                     match("0x"); 
 
@@ -2674,7 +2718,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:9198:18: '0X'
+                    // InternalPerspectiveDsl.g:9226:18: '0X'
                     {
                     match("0X"); 
 
@@ -2684,7 +2728,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:9198:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalPerspectiveDsl.g:9226:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2722,7 +2766,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalPerspectiveDsl.g:9198:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalPerspectiveDsl.g:9226:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2731,10 +2775,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9198:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:9226:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalPerspectiveDsl.g:9198:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalPerspectiveDsl.g:9226:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2752,7 +2796,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:9198:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalPerspectiveDsl.g:9226:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2776,7 +2820,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:9198:84: ( 'l' | 'L' )
+                            // InternalPerspectiveDsl.g:9226:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2815,11 +2859,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:9200:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalPerspectiveDsl.g:9200:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:9228:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalPerspectiveDsl.g:9228:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalPerspectiveDsl.g:9200:21: ( '0' .. '9' | '_' )*
+            // InternalPerspectiveDsl.g:9228:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2868,11 +2912,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:9202:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalPerspectiveDsl.g:9202:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:9230:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalPerspectiveDsl.g:9230:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalPerspectiveDsl.g:9202:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalPerspectiveDsl.g:9230:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2881,7 +2925,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9202:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalPerspectiveDsl.g:9230:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2892,7 +2936,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalPerspectiveDsl.g:9202:36: ( '+' | '-' )?
+                    // InternalPerspectiveDsl.g:9230:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2925,7 +2969,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:9202:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalPerspectiveDsl.g:9230:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2937,7 +2981,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9202:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalPerspectiveDsl.g:9230:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2961,7 +3005,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:9202:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalPerspectiveDsl.g:9230: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();
@@ -2994,10 +3038,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:9204:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalPerspectiveDsl.g:9204:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:9232:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalPerspectiveDsl.g:9232:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalPerspectiveDsl.g:9204:11: ( '^' )?
+            // InternalPerspectiveDsl.g:9232:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -3006,7 +3050,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9204:11: '^'
+                    // InternalPerspectiveDsl.g:9232:11: '^'
                     {
                     match('^'); 
 
@@ -3024,7 +3068,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalPerspectiveDsl.g:9204:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalPerspectiveDsl.g:9232:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -3073,10 +3117,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:9206:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalPerspectiveDsl.g:9206:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:9234:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalPerspectiveDsl.g:9234:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalPerspectiveDsl.g:9206:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalPerspectiveDsl.g:9234:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -3094,10 +3138,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9206:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalPerspectiveDsl.g:9234:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalPerspectiveDsl.g:9206:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalPerspectiveDsl.g:9234:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -3113,7 +3157,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:9206:21: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:9234:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3121,7 +3165,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:9206:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalPerspectiveDsl.g:9234:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3141,7 +3185,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:9206:44: ( '\"' )?
+                    // InternalPerspectiveDsl.g:9234:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -3150,7 +3194,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:9206:44: '\"'
+                            // InternalPerspectiveDsl.g:9234:44: '\"'
                             {
                             match('\"'); 
 
@@ -3163,10 +3207,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:9206:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalPerspectiveDsl.g:9234:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalPerspectiveDsl.g:9206:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalPerspectiveDsl.g:9234:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -3182,7 +3226,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:9206:55: '\\\\' .
+                    	    // InternalPerspectiveDsl.g:9234:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3190,7 +3234,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalPerspectiveDsl.g:9206:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalPerspectiveDsl.g:9234:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3210,7 +3254,7 @@
                         }
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:9206:79: ( '\\'' )?
+                    // InternalPerspectiveDsl.g:9234:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -3219,7 +3263,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:9206:79: '\\''
+                            // InternalPerspectiveDsl.g:9234:79: '\\''
                             {
                             match('\''); 
 
@@ -3250,12 +3294,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:9208:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalPerspectiveDsl.g:9208:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalPerspectiveDsl.g:9236:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalPerspectiveDsl.g:9236:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalPerspectiveDsl.g:9208:24: ( options {greedy=false; } : . )*
+            // InternalPerspectiveDsl.g:9236:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -3280,7 +3324,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9208:52: .
+            	    // InternalPerspectiveDsl.g:9236:52: .
             	    {
             	    matchAny(); 
 
@@ -3310,12 +3354,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:9210:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalPerspectiveDsl.g:9210:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:9238:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalPerspectiveDsl.g:9238:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalPerspectiveDsl.g:9210:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalPerspectiveDsl.g:9238:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -3328,7 +3372,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9210:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalPerspectiveDsl.g:9238: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();
@@ -3348,7 +3392,7 @@
                 }
             } while (true);
 
-            // InternalPerspectiveDsl.g:9210:40: ( ( '\\r' )? '\\n' )?
+            // InternalPerspectiveDsl.g:9238:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -3357,9 +3401,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9210:41: ( '\\r' )? '\\n'
+                    // InternalPerspectiveDsl.g:9238:41: ( '\\r' )? '\\n'
                     {
-                    // InternalPerspectiveDsl.g:9210:41: ( '\\r' )?
+                    // InternalPerspectiveDsl.g:9238:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3368,7 +3412,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:9210:41: '\\r'
+                            // InternalPerspectiveDsl.g:9238:41: '\\r'
                             {
                             match('\r'); 
 
@@ -3400,10 +3444,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:9212:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalPerspectiveDsl.g:9212:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:9240:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalPerspectiveDsl.g:9240:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalPerspectiveDsl.g:9212:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalPerspectiveDsl.g:9240:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3457,8 +3501,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalPerspectiveDsl.g:9214:16: ( . )
-            // InternalPerspectiveDsl.g:9214:18: .
+            // InternalPerspectiveDsl.g:9242:16: ( . )
+            // InternalPerspectiveDsl.g:9242:18: .
             {
             matchAny(); 
 
@@ -3473,8 +3517,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 | 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;
+        // 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 | T__132 | T__133 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=130;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -4311,63 +4355,77 @@
                 }
                 break;
             case 120 :
-                // InternalPerspectiveDsl.g:1:756: RULE_HEX
+                // InternalPerspectiveDsl.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // InternalPerspectiveDsl.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // InternalPerspectiveDsl.g:1:770: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 121 :
-                // InternalPerspectiveDsl.g:1:765: RULE_INT
+            case 123 :
+                // InternalPerspectiveDsl.g:1:779: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 122 :
-                // InternalPerspectiveDsl.g:1:774: RULE_DECIMAL
+            case 124 :
+                // InternalPerspectiveDsl.g:1:788: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 123 :
-                // InternalPerspectiveDsl.g:1:787: RULE_ID
+            case 125 :
+                // InternalPerspectiveDsl.g:1:801: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 124 :
-                // InternalPerspectiveDsl.g:1:795: RULE_STRING
+            case 126 :
+                // InternalPerspectiveDsl.g:1:809: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 125 :
-                // InternalPerspectiveDsl.g:1:807: RULE_ML_COMMENT
+            case 127 :
+                // InternalPerspectiveDsl.g:1:821: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 126 :
-                // InternalPerspectiveDsl.g:1:823: RULE_SL_COMMENT
+            case 128 :
+                // InternalPerspectiveDsl.g:1:837: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 127 :
-                // InternalPerspectiveDsl.g:1:839: RULE_WS
+            case 129 :
+                // InternalPerspectiveDsl.g:1:853: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 128 :
-                // InternalPerspectiveDsl.g:1:847: RULE_ANY_OTHER
+            case 130 :
+                // InternalPerspectiveDsl.g:1:861: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -4381,17 +4439,17 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\66\2\uffff\20\66\1\156\5\uffff\1\166\3\uffff\1\174\1\u0080\1\u0084\1\u0086\1\u0088\1\u008a\1\u008c\1\u008e\1\u0090\1\u0092\1\u0095\1\u0097\1\66\2\u009b\1\62\5\uffff\3\66\3\uffff\3\66\1\u00a8\4\66\1\u00ae\1\66\1\u00b0\2\66\1\u00b3\22\66\1\u00ca\17\66\1\u00e0\2\66\10\uffff\1\u00e4\32\uffff\1\u00e6\1\uffff\1\u00e8\6\uffff\1\66\1\uffff\1\u009b\4\uffff\11\66\1\uffff\1\66\1\u00f4\3\66\1\uffff\1\66\1\uffff\2\66\1\uffff\5\66\1\u0100\20\66\1\uffff\1\66\1\u0112\1\u0113\17\66\1\u0123\2\66\1\uffff\1\u0126\1\66\6\uffff\2\66\1\u012b\10\66\1\uffff\12\66\1\u013e\1\uffff\5\66\1\u0144\12\66\1\u014f\2\uffff\5\66\1\u0155\1\u0156\1\66\1\u0158\6\66\1\uffff\1\66\1\u0160\1\uffff\1\u0161\3\66\1\uffff\3\66\1\u0168\15\66\1\u0176\1\uffff\1\66\1\u0178\3\66\1\uffff\6\66\1\u0183\3\66\1\uffff\4\66\1\u018b\2\uffff\1\u018c\1\uffff\3\66\1\u0190\2\66\1\u0193\2\uffff\6\66\1\uffff\1\66\1\u019b\5\66\1\u01a1\5\66\1\uffff\1\u01a7\1\uffff\5\66\1\u01ae\1\u01af\1\66\1\u01b1\1\u01b2\1\uffff\5\66\1\u01b8\1\u01b9\2\uffff\1\66\1\u01bb\1\66\1\uffff\2\66\1\uffff\1\66\1\u01c0\2\66\1\u01c3\1\66\1\u01c5\1\uffff\2\66\1\u01c8\2\66\1\uffff\2\66\1\u01cd\2\66\1\uffff\3\66\1\u01d3\2\66\2\uffff\1\66\2\uffff\5\66\2\uffff\1\u01dc\1\uffff\1\u01dd\1\66\1\u01df\1\66\1\uffff\2\66\1\uffff\1\66\1\uffff\1\66\1\u01e5\1\uffff\4\66\1\uffff\1\u01ea\4\66\1\uffff\6\66\1\u01f5\1\66\2\uffff\1\66\1\uffff\1\66\1\u01f9\3\66\1\uffff\4\66\1\uffff\3\66\1\u0204\6\66\1\uffff\3\66\1\uffff\3\66\1\u0211\1\u0212\2\66\1\u0215\2\66\1\uffff\5\66\1\u021d\2\66\1\u0220\1\u0221\1\u0222\1\66\2\uffff\2\66\1\uffff\4\66\1\u022a\1\66\1\u022c\1\uffff\2\66\3\uffff\3\66\1\u0232\3\66\1\uffff\1\u0236\1\uffff\3\66\1\u023a\1\66\1\uffff\1\u023c\1\u023d\1\66\1\uffff\1\u023f\1\u0240\1\66\1\uffff\1\u0242\2\uffff\1\66\2\uffff\1\u0244\1\uffff\1\u0245\2\uffff";
+        "\1\uffff\1\66\2\uffff\20\66\1\156\5\uffff\1\166\3\uffff\1\174\1\u0080\1\u0084\1\u0086\1\u0088\1\u008a\1\u008c\1\u008e\1\u0090\1\u0092\1\u0095\1\u0097\1\66\2\u009a\1\62\5\uffff\3\66\3\uffff\3\66\1\u00a8\4\66\1\u00ae\1\66\1\u00b0\2\66\1\u00b3\22\66\1\u00ca\17\66\1\u00e0\2\66\10\uffff\1\u00e4\32\uffff\1\u00e6\1\uffff\1\u00e8\6\uffff\1\66\2\uffff\1\u009a\3\uffff\11\66\1\uffff\1\66\1\u00f4\3\66\1\uffff\1\66\1\uffff\2\66\1\uffff\5\66\1\u0100\20\66\1\uffff\1\66\1\u0112\1\u0113\17\66\1\u0123\2\66\1\uffff\1\u0126\1\66\6\uffff\2\66\1\u012b\10\66\1\uffff\1\u0135\11\66\1\u013f\1\uffff\5\66\1\u0145\12\66\1\u0150\2\uffff\5\66\1\u0156\1\u0157\1\66\1\u0159\6\66\1\uffff\1\66\1\u0161\1\uffff\1\u0162\3\66\1\uffff\3\66\1\u0169\5\66\1\uffff\10\66\1\u0177\1\uffff\1\66\1\u0179\3\66\1\uffff\7\66\1\u0185\2\66\1\uffff\4\66\1\u018c\2\uffff\1\u018d\1\uffff\3\66\1\u0191\2\66\1\u0194\2\uffff\6\66\1\uffff\1\66\1\u019c\5\66\1\u01a2\5\66\1\uffff\1\u01a8\1\uffff\5\66\1\u01af\1\u01b0\2\66\1\u01b3\1\u01b4\1\uffff\4\66\1\u01b9\1\u01ba\2\uffff\1\66\1\u01bc\1\66\1\uffff\2\66\1\uffff\1\66\1\u01c1\2\66\1\u01c4\1\66\1\u01c6\1\uffff\2\66\1\u01c9\2\66\1\uffff\2\66\1\u01ce\2\66\1\uffff\3\66\1\u01d4\2\66\2\uffff\2\66\2\uffff\4\66\2\uffff\1\u01dd\1\uffff\1\u01de\1\66\1\u01e0\1\66\1\uffff\2\66\1\uffff\1\66\1\uffff\1\66\1\u01e6\1\uffff\4\66\1\uffff\1\u01eb\4\66\1\uffff\6\66\1\u01f6\1\66\2\uffff\1\66\1\uffff\1\66\1\u01fa\3\66\1\uffff\4\66\1\uffff\3\66\1\u0205\6\66\1\uffff\3\66\1\uffff\3\66\1\u0212\1\u0213\2\66\1\u0216\2\66\1\uffff\5\66\1\u021e\2\66\1\u0221\1\u0222\1\u0223\1\66\2\uffff\2\66\1\uffff\4\66\1\u022b\1\u022d\1\u022e\1\uffff\2\66\3\uffff\3\66\1\u0234\3\66\1\uffff\1\u0238\2\uffff\3\66\1\u023c\1\66\1\uffff\1\u023e\1\u023f\1\66\1\uffff\1\u0241\1\u0242\1\66\1\uffff\1\u0244\2\uffff\1\66\2\uffff\1\u0246\1\uffff\1\u0247\2\uffff";
     static final String DFA21_eofS =
-        "\u0246\uffff";
+        "\u0248\uffff";
     static final String DFA21_minS =
-        "\1\0\1\141\2\uffff\1\141\1\162\2\143\1\141\1\144\1\141\1\146\1\141\1\145\1\141\1\160\1\141\1\145\2\141\1\52\5\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\72\1\157\2\60\1\44\5\uffff\1\143\1\162\1\157\3\uffff\1\146\1\141\1\164\1\44\1\145\1\154\1\157\1\103\1\44\1\160\1\44\1\143\1\154\1\44\1\157\1\162\1\164\1\165\1\160\1\162\1\145\1\151\1\164\2\163\3\141\1\151\1\160\1\156\1\147\1\44\1\145\1\154\1\162\2\141\1\162\1\155\1\157\1\156\1\154\1\151\1\154\1\162\1\154\1\155\1\44\1\167\1\154\10\uffff\1\75\32\uffff\1\75\1\uffff\1\74\6\uffff\1\162\1\uffff\1\60\4\uffff\1\153\1\164\1\163\2\143\1\164\1\141\1\154\1\141\1\uffff\1\162\1\44\1\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\157\1\uffff\1\154\1\157\1\147\1\154\1\145\1\44\1\145\1\157\1\156\1\164\2\145\1\150\1\145\1\162\1\143\2\164\1\145\1\143\1\145\1\141\1\uffff\1\167\2\44\1\164\1\144\1\157\1\165\1\162\1\144\1\145\1\143\1\156\1\167\1\142\1\143\1\154\1\164\1\141\1\44\1\163\1\145\1\uffff\1\44\1\154\6\uffff\1\151\1\141\1\44\1\160\1\145\1\162\1\150\1\165\1\157\1\111\1\164\1\uffff\1\125\1\157\1\141\1\162\1\163\1\167\1\142\1\154\2\145\1\44\1\uffff\1\157\1\167\1\164\1\141\1\156\1\44\1\103\2\143\1\145\1\151\1\143\1\162\1\150\2\156\1\44\2\uffff\1\151\1\117\2\162\1\164\2\44\1\150\1\44\1\163\1\141\1\157\2\145\1\154\1\uffff\1\145\1\44\1\uffff\1\44\1\172\1\147\1\164\1\uffff\1\145\1\163\1\151\1\44\1\154\1\147\1\156\1\141\1\122\1\163\1\156\1\164\1\163\1\145\1\141\1\157\1\164\1\44\1\uffff\1\146\1\44\1\115\1\142\1\144\1\uffff\1\157\1\164\1\150\1\126\1\143\1\150\1\44\1\162\1\164\1\151\1\uffff\1\143\1\156\1\164\1\156\1\44\2\uffff\1\44\1\uffff\1\145\1\156\1\155\1\44\1\162\1\154\1\44\2\uffff\1\157\1\145\1\141\1\143\1\163\1\142\1\uffff\1\164\1\44\1\164\1\163\1\111\1\141\1\143\1\44\1\151\1\144\1\162\1\147\1\120\1\uffff\1\44\1\uffff\1\141\1\154\1\151\1\163\1\156\2\44\1\157\2\44\1\uffff\1\157\1\141\1\147\1\141\1\154\2\44\2\uffff\1\162\1\44\1\145\1\uffff\1\103\1\171\1\uffff\1\156\1\44\1\143\1\164\1\44\1\145\1\44\1\uffff\1\145\1\153\1\44\1\142\1\145\1\uffff\1\142\1\123\1\44\1\171\1\141\1\uffff\1\156\1\145\1\157\1\44\1\164\1\144\2\uffff\1\154\2\uffff\1\156\1\164\1\162\1\154\1\171\2\uffff\1\44\1\uffff\1\44\1\157\1\44\1\164\1\uffff\1\153\1\151\1\uffff\1\144\1\uffff\1\162\1\44\1\uffff\1\154\1\157\1\151\1\157\1\uffff\1\44\1\162\1\141\1\124\1\156\1\uffff\1\141\1\105\1\165\2\151\1\141\1\44\1\124\2\uffff\1\154\1\uffff\1\141\1\44\1\166\1\102\1\143\1\uffff\1\145\1\146\1\154\1\165\1\uffff\1\164\1\147\1\141\1\44\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\141\1\165\1\154\1\uffff\1\145\1\171\1\150\2\44\1\151\1\162\1\44\1\145\1\142\1\uffff\1\156\3\145\1\156\1\44\1\142\1\155\3\44\1\141\2\uffff\1\164\1\143\1\uffff\1\162\1\154\1\145\1\155\1\44\1\144\1\44\1\uffff\1\154\1\156\3\uffff\1\156\1\171\1\145\1\44\1\145\1\162\1\145\1\uffff\1\44\1\uffff\1\145\1\163\1\147\1\44\1\163\1\uffff\2\44\1\156\1\uffff\2\44\1\145\1\uffff\1\44\2\uffff\1\164\2\uffff\1\44\1\uffff\1\44\2\uffff";
+        "\1\0\1\141\2\uffff\1\141\1\162\2\143\1\141\1\144\1\141\1\146\1\141\1\145\1\141\1\160\1\141\1\145\2\141\1\52\5\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\72\1\157\2\60\1\44\5\uffff\1\143\1\162\1\157\3\uffff\1\146\1\141\1\164\1\44\1\145\1\154\1\157\1\103\1\44\1\160\1\44\1\143\1\154\1\44\1\157\1\162\1\164\1\165\1\160\1\162\1\145\1\151\1\164\2\163\2\141\1\156\1\141\1\151\1\160\1\147\1\44\1\145\1\154\1\162\2\141\1\162\1\155\1\157\1\156\1\154\1\151\1\154\1\162\1\154\1\155\1\44\1\167\1\154\10\uffff\1\75\32\uffff\1\75\1\uffff\1\74\6\uffff\1\162\2\uffff\1\60\3\uffff\1\153\1\164\1\163\2\143\1\164\1\141\1\154\1\141\1\uffff\1\162\1\44\1\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\157\1\uffff\1\154\1\157\1\147\1\154\1\145\1\44\1\145\1\157\1\156\1\164\2\145\1\150\1\145\1\162\2\143\2\164\2\145\1\141\1\uffff\1\167\2\44\1\164\1\144\1\157\1\165\1\162\1\144\1\145\1\143\1\156\1\167\1\142\1\143\1\154\1\164\1\141\1\44\1\163\1\145\1\uffff\1\44\1\154\6\uffff\1\151\1\141\1\44\1\160\1\145\1\162\1\150\1\165\1\157\1\111\1\164\1\uffff\1\44\1\157\1\141\1\162\1\163\1\167\1\142\1\154\2\145\1\44\1\uffff\1\157\1\167\1\164\1\141\1\156\1\44\1\103\2\143\1\145\1\150\1\151\1\143\1\162\2\156\1\44\2\uffff\1\151\1\117\2\162\1\164\2\44\1\150\1\44\1\163\1\141\1\157\2\145\1\154\1\uffff\1\145\1\44\1\uffff\1\44\1\172\1\147\1\164\1\uffff\1\145\1\163\1\151\1\44\1\154\1\147\1\156\1\141\1\122\1\uffff\1\163\1\156\1\164\1\163\1\145\1\141\1\157\1\164\1\44\1\uffff\1\146\1\44\1\115\1\142\1\144\1\uffff\1\157\1\164\1\150\1\126\1\162\1\143\1\150\1\44\1\164\1\151\1\uffff\1\143\1\156\1\164\1\156\1\44\2\uffff\1\44\1\uffff\1\145\1\156\1\155\1\44\1\162\1\154\1\44\2\uffff\1\157\1\145\1\141\1\143\1\163\1\142\1\uffff\1\164\1\44\1\164\1\163\1\111\1\141\1\143\1\44\1\151\1\144\1\162\1\147\1\120\1\uffff\1\44\1\uffff\1\141\1\154\1\151\1\163\1\156\2\44\2\157\2\44\1\uffff\1\141\1\147\1\141\1\154\2\44\2\uffff\1\162\1\44\1\145\1\uffff\1\103\1\171\1\uffff\1\156\1\44\1\143\1\164\1\44\1\145\1\44\1\uffff\1\145\1\153\1\44\1\142\1\145\1\uffff\1\142\1\123\1\44\1\171\1\141\1\uffff\1\156\1\145\1\157\1\44\1\164\1\144\2\uffff\1\154\1\156\2\uffff\1\164\1\162\1\154\1\171\2\uffff\1\44\1\uffff\1\44\1\157\1\44\1\164\1\uffff\1\153\1\151\1\uffff\1\144\1\uffff\1\162\1\44\1\uffff\1\154\1\157\1\151\1\157\1\uffff\1\44\1\162\1\141\1\124\1\156\1\uffff\1\141\1\105\1\165\2\151\1\141\1\44\1\124\2\uffff\1\154\1\uffff\1\141\1\44\1\166\1\102\1\143\1\uffff\1\145\1\146\1\154\1\165\1\uffff\1\164\1\147\1\141\1\44\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\141\1\165\1\154\1\uffff\1\145\1\171\1\150\2\44\1\151\1\162\1\44\1\145\1\142\1\uffff\1\156\3\145\1\156\1\44\1\142\1\155\3\44\1\141\2\uffff\1\164\1\143\1\uffff\1\162\1\154\1\145\1\155\3\44\1\uffff\1\154\1\156\3\uffff\1\156\1\171\1\145\1\44\1\145\1\162\1\145\1\uffff\1\44\2\uffff\1\145\1\163\1\147\1\44\1\163\1\uffff\2\44\1\156\1\uffff\2\44\1\145\1\uffff\1\44\2\uffff\1\164\2\uffff\1\44\1\uffff\1\44\2\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\162\2\uffff\1\157\3\163\1\171\1\170\1\171\1\162\1\151\1\145\1\150\1\162\1\141\1\150\1\157\1\165\1\75\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\1\56\2\72\1\157\1\170\1\154\1\172\5\uffff\2\162\1\157\3\uffff\1\163\1\141\1\164\1\172\1\145\1\154\1\157\1\103\1\172\1\160\1\172\1\143\1\154\1\172\1\160\1\162\1\164\1\171\1\160\1\162\1\145\1\151\1\164\2\163\1\154\2\141\1\151\1\160\1\156\1\151\1\172\1\145\2\162\1\164\1\141\1\164\1\155\1\157\1\156\1\154\1\151\1\156\1\162\1\154\1\155\1\172\1\167\1\154\10\uffff\1\75\32\uffff\1\75\1\uffff\1\74\6\uffff\1\162\1\uffff\1\154\4\uffff\1\153\1\164\1\163\2\143\1\164\1\141\1\154\1\141\1\uffff\1\162\1\172\1\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\157\1\uffff\1\154\1\157\1\147\1\154\1\145\1\172\1\145\1\157\1\156\1\164\2\145\1\150\1\145\1\162\1\143\2\164\1\145\1\143\1\145\1\141\1\uffff\1\167\2\172\1\164\1\144\1\157\1\165\1\162\1\144\1\145\1\143\1\156\1\167\1\142\1\143\1\154\1\164\1\141\1\172\1\163\1\145\1\uffff\1\172\1\154\6\uffff\1\151\1\141\1\172\1\160\1\145\1\162\1\150\1\165\1\157\1\111\1\164\1\uffff\1\125\1\157\1\141\1\162\1\163\1\167\1\142\1\154\2\145\1\172\1\uffff\1\157\1\167\1\164\1\141\1\156\1\172\1\103\2\143\1\145\1\151\1\143\1\162\1\150\2\156\1\172\2\uffff\1\151\1\117\2\162\1\164\2\172\1\150\1\172\1\163\1\141\1\157\2\145\1\154\1\uffff\1\145\1\172\1\uffff\2\172\1\147\1\164\1\uffff\1\145\1\163\1\151\1\172\1\154\1\147\1\156\1\141\1\122\1\163\1\156\1\164\1\163\1\145\1\141\1\157\1\164\1\172\1\uffff\1\146\1\172\1\115\1\142\1\163\1\uffff\1\157\1\164\1\150\1\126\1\143\1\150\1\172\1\162\1\164\1\151\1\uffff\1\143\1\156\1\164\1\156\1\172\2\uffff\1\172\1\uffff\1\145\1\156\1\155\1\172\1\162\1\154\1\172\2\uffff\1\157\1\145\1\141\1\143\1\163\1\142\1\uffff\1\164\1\172\1\164\1\163\1\111\1\141\1\143\1\172\1\151\1\144\1\162\1\147\1\120\1\uffff\1\172\1\uffff\1\141\1\154\1\151\1\163\1\156\2\172\1\157\2\172\1\uffff\1\157\1\141\1\147\1\141\1\154\2\172\2\uffff\1\162\1\172\1\145\1\uffff\1\103\1\171\1\uffff\1\156\1\172\1\143\1\164\1\172\1\145\1\172\1\uffff\1\145\1\153\1\172\1\142\1\145\1\uffff\1\142\1\123\1\172\1\171\1\141\1\uffff\1\156\1\145\1\157\1\172\1\164\1\144\2\uffff\1\154\2\uffff\1\156\1\164\1\162\1\154\1\171\2\uffff\1\172\1\uffff\1\172\1\157\1\172\1\164\1\uffff\1\153\1\151\1\uffff\1\144\1\uffff\1\162\1\172\1\uffff\1\154\1\157\1\151\1\157\1\uffff\1\172\1\162\1\141\1\124\1\156\1\uffff\1\141\1\105\1\165\2\151\1\141\1\172\1\124\2\uffff\1\154\1\uffff\1\141\1\172\1\166\1\102\1\143\1\uffff\1\145\1\146\1\154\1\165\1\uffff\1\164\1\147\1\141\1\172\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\141\1\165\1\154\1\uffff\1\145\1\171\1\150\2\172\1\151\1\162\1\172\1\145\1\142\1\uffff\1\156\3\145\1\156\1\172\1\142\1\155\3\172\1\141\2\uffff\1\164\1\143\1\uffff\1\162\1\154\1\145\1\155\1\172\1\144\1\172\1\uffff\1\154\1\156\3\uffff\1\156\1\171\1\145\1\172\1\145\1\162\1\145\1\uffff\1\172\1\uffff\1\145\1\163\1\147\1\172\1\163\1\uffff\2\172\1\156\1\uffff\2\172\1\145\1\uffff\1\172\2\uffff\1\164\2\uffff\1\172\1\uffff\1\172\2\uffff";
+        "\1\uffff\1\162\2\uffff\1\157\3\163\1\171\1\170\1\171\1\162\1\151\1\145\1\150\1\162\1\141\1\150\1\157\1\165\1\75\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\1\56\2\72\1\157\1\170\1\154\1\172\5\uffff\2\162\1\157\3\uffff\1\163\1\141\1\164\1\172\1\145\1\154\1\157\1\103\1\172\1\160\1\172\1\143\1\154\1\172\1\160\1\162\1\164\1\171\1\160\1\162\1\145\1\151\1\164\2\163\1\154\1\141\1\156\1\141\1\151\1\160\1\151\1\172\1\145\2\162\1\164\1\141\1\164\1\155\1\157\1\156\1\154\1\151\1\156\1\162\1\154\1\155\1\172\1\167\1\154\10\uffff\1\75\32\uffff\1\75\1\uffff\1\74\6\uffff\1\162\2\uffff\1\154\3\uffff\1\153\1\164\1\163\2\143\1\164\1\141\1\154\1\141\1\uffff\1\162\1\172\1\156\1\154\1\164\1\uffff\1\157\1\uffff\1\145\1\157\1\uffff\1\154\1\157\1\147\1\154\1\145\1\172\1\145\1\157\1\156\1\164\2\145\1\150\1\145\1\162\2\143\2\164\2\145\1\141\1\uffff\1\167\2\172\1\164\1\144\1\157\1\165\1\162\1\144\1\145\1\143\1\156\1\167\1\142\1\143\1\154\1\164\1\141\1\172\1\163\1\145\1\uffff\1\172\1\154\6\uffff\1\151\1\141\1\172\1\160\1\145\1\162\1\150\1\165\1\157\1\111\1\164\1\uffff\1\172\1\157\1\141\1\162\1\163\1\167\1\142\1\154\2\145\1\172\1\uffff\1\157\1\167\1\164\1\141\1\156\1\172\1\103\2\143\1\145\1\150\1\151\1\143\1\162\2\156\1\172\2\uffff\1\151\1\117\2\162\1\164\2\172\1\150\1\172\1\163\1\141\1\157\2\145\1\154\1\uffff\1\145\1\172\1\uffff\2\172\1\147\1\164\1\uffff\1\145\1\163\1\151\1\172\1\154\1\147\1\156\1\141\1\122\1\uffff\1\163\1\156\1\164\1\163\1\145\1\141\1\157\1\164\1\172\1\uffff\1\146\1\172\1\115\1\142\1\163\1\uffff\1\157\1\164\1\150\1\126\1\162\1\143\1\150\1\172\1\164\1\151\1\uffff\1\143\1\156\1\164\1\156\1\172\2\uffff\1\172\1\uffff\1\145\1\156\1\155\1\172\1\162\1\154\1\172\2\uffff\1\157\1\145\1\141\1\143\1\163\1\142\1\uffff\1\164\1\172\1\164\1\163\1\111\1\141\1\143\1\172\1\151\1\144\1\162\1\147\1\120\1\uffff\1\172\1\uffff\1\141\1\154\1\151\1\163\1\156\2\172\2\157\2\172\1\uffff\1\141\1\147\1\141\1\154\2\172\2\uffff\1\162\1\172\1\145\1\uffff\1\103\1\171\1\uffff\1\156\1\172\1\143\1\164\1\172\1\145\1\172\1\uffff\1\145\1\153\1\172\1\142\1\145\1\uffff\1\142\1\123\1\172\1\171\1\141\1\uffff\1\156\1\145\1\157\1\172\1\164\1\144\2\uffff\1\154\1\156\2\uffff\1\164\1\162\1\154\1\171\2\uffff\1\172\1\uffff\1\172\1\157\1\172\1\164\1\uffff\1\153\1\151\1\uffff\1\144\1\uffff\1\162\1\172\1\uffff\1\154\1\157\1\151\1\157\1\uffff\1\172\1\162\1\141\1\124\1\156\1\uffff\1\141\1\105\1\165\2\151\1\141\1\172\1\124\2\uffff\1\154\1\uffff\1\141\1\172\1\166\1\102\1\143\1\uffff\1\145\1\146\1\154\1\165\1\uffff\1\164\1\147\1\141\1\172\1\151\1\154\1\155\1\172\1\157\1\155\1\uffff\1\141\1\165\1\154\1\uffff\1\145\1\171\1\150\2\172\1\151\1\162\1\172\1\145\1\142\1\uffff\1\156\3\145\1\156\1\172\1\142\1\155\3\172\1\141\2\uffff\1\164\1\143\1\uffff\1\162\1\154\1\145\1\155\3\172\1\uffff\1\154\1\156\3\uffff\1\156\1\171\1\145\1\172\1\145\1\162\1\145\1\uffff\1\172\2\uffff\1\145\1\163\1\147\1\172\1\163\1\uffff\2\172\1\156\1\uffff\2\172\1\145\1\uffff\1\172\2\uffff\1\164\2\uffff\1\172\1\uffff\1\172\2\uffff";
     static final String DFA21_acceptS =
-        "\2\uffff\1\2\1\3\21\uffff\1\61\1\62\1\63\1\64\1\65\1\uffff\1\67\1\70\1\71\20\uffff\1\173\2\174\1\177\1\u0080\3\uffff\1\173\1\2\1\3\63\uffff\1\74\1\121\1\57\1\61\1\62\1\63\1\64\1\65\1\uffff\1\114\1\66\1\67\1\70\1\71\1\72\1\126\1\117\1\73\1\111\1\127\1\120\1\75\1\175\1\176\1\122\1\76\1\123\1\115\1\77\1\101\1\100\1\102\1\133\1\103\1\165\1\uffff\1\124\1\uffff\1\130\1\116\1\132\1\164\1\131\1\137\1\uffff\1\170\1\uffff\1\171\1\172\1\174\1\177\11\uffff\1\144\5\uffff\1\44\1\uffff\1\134\2\uffff\1\125\26\uffff\1\40\25\uffff\1\60\2\uffff\1\106\1\104\1\107\1\105\1\112\1\113\13\uffff\1\53\13\uffff\1\160\21\uffff\1\145\1\146\17\uffff\1\142\2\uffff\1\151\4\uffff\1\21\22\uffff\1\153\5\uffff\1\135\12\uffff\1\22\5\uffff\1\41\1\141\1\uffff\1\36\7\uffff\1\51\1\154\6\uffff\1\45\15\uffff\1\50\1\uffff\1\156\12\uffff\1\150\7\uffff\1\31\1\163\3\uffff\1\143\2\uffff\1\152\7\uffff\1\35\5\uffff\1\54\5\uffff\1\155\6\uffff\1\26\1\43\1\uffff\1\55\1\136\5\uffff\1\32\1\157\1\uffff\1\37\4\uffff\1\1\2\uffff\1\6\1\uffff\1\140\2\uffff\1\10\4\uffff\1\12\5\uffff\1\147\10\uffff\1\52\1\42\1\uffff\1\161\5\uffff\1\7\4\uffff\1\34\12\uffff\1\167\3\uffff\1\20\12\uffff\1\56\14\uffff\1\23\1\110\2\uffff\1\24\7\uffff\1\33\2\uffff\1\166\1\4\1\5\7\uffff\1\17\1\uffff\1\15\5\uffff\1\13\3\uffff\1\162\3\uffff\1\11\1\uffff\1\30\1\14\1\uffff\1\27\1\46\1\uffff\1\25\1\uffff\1\47\1\16";
+        "\2\uffff\1\2\1\3\21\uffff\1\63\1\64\1\65\1\66\1\67\1\uffff\1\71\1\72\1\73\20\uffff\1\175\2\176\1\u0081\1\u0082\3\uffff\1\175\1\2\1\3\63\uffff\1\76\1\123\1\61\1\63\1\64\1\65\1\66\1\67\1\uffff\1\116\1\70\1\71\1\72\1\73\1\74\1\130\1\121\1\75\1\113\1\131\1\122\1\77\1\177\1\u0080\1\124\1\100\1\125\1\117\1\101\1\103\1\102\1\104\1\135\1\105\1\167\1\uffff\1\126\1\uffff\1\132\1\120\1\134\1\166\1\133\1\141\1\uffff\1\172\1\173\1\uffff\1\174\1\176\1\u0081\11\uffff\1\146\5\uffff\1\46\1\uffff\1\136\2\uffff\1\127\26\uffff\1\42\25\uffff\1\62\2\uffff\1\110\1\106\1\111\1\107\1\114\1\115\13\uffff\1\55\13\uffff\1\162\21\uffff\1\147\1\150\17\uffff\1\144\2\uffff\1\153\4\uffff\1\22\11\uffff\1\10\11\uffff\1\155\5\uffff\1\137\12\uffff\1\24\5\uffff\1\43\1\143\1\uffff\1\40\7\uffff\1\53\1\156\6\uffff\1\47\15\uffff\1\52\1\uffff\1\160\13\uffff\1\152\6\uffff\1\33\1\165\3\uffff\1\145\2\uffff\1\154\7\uffff\1\37\5\uffff\1\56\5\uffff\1\157\6\uffff\1\30\1\45\2\uffff\1\57\1\140\4\uffff\1\34\1\161\1\uffff\1\41\4\uffff\1\1\2\uffff\1\6\1\uffff\1\142\2\uffff\1\23\4\uffff\1\12\5\uffff\1\151\10\uffff\1\54\1\44\1\uffff\1\163\5\uffff\1\7\4\uffff\1\36\12\uffff\1\171\3\uffff\1\20\12\uffff\1\60\14\uffff\1\25\1\112\2\uffff\1\26\7\uffff\1\35\2\uffff\1\170\1\4\1\5\7\uffff\1\17\1\uffff\1\21\1\15\5\uffff\1\13\3\uffff\1\164\3\uffff\1\11\1\uffff\1\32\1\14\1\uffff\1\31\1\50\1\uffff\1\27\1\uffff\1\51\1\16";
     static final String DFA21_specialS =
-        "\1\0\u0245\uffff}>";
+        "\1\0\u0247\uffff}>";
     static final String[] DFA21_transitionS = {
             "\11\62\2\61\2\62\1\61\22\62\1\61\1\46\1\57\1\33\1\56\1\41\1\45\1\60\1\27\1\31\1\24\1\36\1\30\1\37\1\47\1\40\1\53\11\54\1\51\1\25\1\42\1\32\1\43\1\50\1\26\32\56\1\34\1\62\1\35\1\55\1\56\1\62\1\7\1\17\1\16\1\4\1\11\1\22\1\56\1\52\1\6\1\56\1\20\2\56\1\23\1\13\1\1\1\56\1\15\1\12\1\10\1\5\1\14\1\21\3\56\1\2\1\44\1\3\uff82\62",
             "\1\63\3\uffff\1\64\14\uffff\1\65",
@@ -4403,7 +4461,7 @@
             "\1\104\10\uffff\1\105\6\uffff\1\106",
             "\1\110\6\uffff\1\114\1\111\5\uffff\1\107\2\uffff\1\112\6\uffff\1\113",
             "\1\116\7\uffff\1\120\11\uffff\1\115\1\uffff\1\117",
-            "\1\121\3\uffff\1\122\12\uffff\1\123\3\uffff\1\124\1\126\1\uffff\1\125\1\uffff\1\127",
+            "\1\121\3\uffff\1\122\12\uffff\1\123\3\uffff\1\125\1\127\1\uffff\1\126\1\uffff\1\124",
             "\1\131\13\uffff\1\130",
             "\1\133\3\uffff\1\134\3\uffff\1\132",
             "\1\135",
@@ -4436,8 +4494,8 @@
             "\1\u0094\13\uffff\1\u0093",
             "\1\u0096",
             "\1\u0098",
-            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099\6\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099",
-            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
+            "\12\u009b\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099\6\uffff\1\u009b\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099",
+            "\12\u009b\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009b\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
             "\1\66\34\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "",
@@ -4547,8 +4605,8 @@
             "",
             "\1\u00e9",
             "",
-            "\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",
             "",
+            "\12\u009b\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009b\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
             "",
             "",
             "",
@@ -4638,8 +4696,7 @@
             "\1\u0132",
             "\1\u0133",
             "",
-            "\1\u0134",
-            "\1\u0135",
+            "\1\66\13\uffff\12\66\7\uffff\24\66\1\u0134\5\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u0136",
             "\1\u0137",
             "\1\u0138",
@@ -4648,15 +4705,15 @@
             "\1\u013b",
             "\1\u013c",
             "\1\u013d",
+            "\1\u013e",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\u013f",
             "\1\u0140",
             "\1\u0141",
             "\1\u0142",
             "\1\u0143",
+            "\1\u0144",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0145",
             "\1\u0146",
             "\1\u0147",
             "\1\u0148",
@@ -4666,43 +4723,44 @@
             "\1\u014c",
             "\1\u014d",
             "\1\u014e",
+            "\1\u014f",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "",
-            "\1\u0150",
             "\1\u0151",
             "\1\u0152",
             "\1\u0153",
             "\1\u0154",
+            "\1\u0155",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0157",
+            "\1\u0158",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0159",
             "\1\u015a",
             "\1\u015b",
             "\1\u015c",
             "\1\u015d",
             "\1\u015e",
-            "",
             "\1\u015f",
+            "",
+            "\1\u0160",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0162",
             "\1\u0163",
             "\1\u0164",
-            "",
             "\1\u0165",
+            "",
             "\1\u0166",
             "\1\u0167",
+            "\1\u0168",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0169",
             "\1\u016a",
             "\1\u016b",
             "\1\u016c",
             "\1\u016d",
             "\1\u016e",
+            "",
             "\1\u016f",
             "\1\u0170",
             "\1\u0171",
@@ -4710,265 +4768,267 @@
             "\1\u0173",
             "\1\u0174",
             "\1\u0175",
+            "\1\u0176",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\u0177",
+            "\1\u0178",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0179",
             "\1\u017a",
-            "\1\u017c\16\uffff\1\u017b",
+            "\1\u017b",
+            "\1\u017d\16\uffff\1\u017c",
             "",
-            "\1\u017d",
             "\1\u017e",
             "\1\u017f",
             "\1\u0180",
             "\1\u0181",
             "\1\u0182",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u0183",
             "\1\u0184",
-            "\1\u0185",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u0186",
-            "",
             "\1\u0187",
+            "",
             "\1\u0188",
             "\1\u0189",
             "\1\u018a",
+            "\1\u018b",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\u018d",
             "\1\u018e",
             "\1\u018f",
+            "\1\u0190",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0191",
             "\1\u0192",
+            "\1\u0193",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "",
-            "\1\u0194",
             "\1\u0195",
             "\1\u0196",
             "\1\u0197",
             "\1\u0198",
             "\1\u0199",
-            "",
             "\1\u019a",
+            "",
+            "\1\u019b",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u019c",
             "\1\u019d",
             "\1\u019e",
             "\1\u019f",
             "\1\u01a0",
+            "\1\u01a1",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01a2",
             "\1\u01a3",
             "\1\u01a4",
             "\1\u01a5",
             "\1\u01a6",
+            "\1\u01a7",
             "",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\u01a8",
             "\1\u01a9",
             "\1\u01aa",
             "\1\u01ab",
             "\1\u01ac",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u01ad\25\66",
+            "\1\u01ad",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\4\66\1\u01ae\25\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01b0",
+            "\1\u01b1",
+            "\1\u01b2",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\u01b3",
-            "\1\u01b4",
             "\1\u01b5",
             "\1\u01b6",
             "\1\u01b7",
+            "\1\u01b8",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "",
-            "\1\u01ba",
+            "\1\u01bb",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01bc",
-            "",
             "\1\u01bd",
+            "",
             "\1\u01be",
-            "",
             "\1\u01bf",
+            "",
+            "\1\u01c0",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01c1",
             "\1\u01c2",
+            "\1\u01c3",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01c4",
+            "\1\u01c5",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\u01c6",
             "\1\u01c7",
+            "\1\u01c8",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01c9",
             "\1\u01ca",
-            "",
             "\1\u01cb",
-            "\1\u01cc",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01ce",
-            "\1\u01cf",
             "",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u01cf",
             "\1\u01d0",
+            "",
             "\1\u01d1",
             "\1\u01d2",
+            "\1\u01d3",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01d4",
             "\1\u01d5",
-            "",
-            "",
             "\1\u01d6",
             "",
             "",
             "\1\u01d7",
             "\1\u01d8",
+            "",
+            "",
             "\1\u01d9",
             "\1\u01da",
             "\1\u01db",
+            "\1\u01dc",
             "",
             "",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01de",
+            "\1\u01df",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01e0",
-            "",
             "\1\u01e1",
-            "\1\u01e2",
             "",
+            "\1\u01e2",
             "\1\u01e3",
             "",
             "\1\u01e4",
+            "",
+            "\1\u01e5",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\u01e6",
             "\1\u01e7",
             "\1\u01e8",
             "\1\u01e9",
+            "\1\u01ea",
             "",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01eb",
             "\1\u01ec",
             "\1\u01ed",
             "\1\u01ee",
-            "",
             "\1\u01ef",
+            "",
             "\1\u01f0",
             "\1\u01f1",
             "\1\u01f2",
             "\1\u01f3",
             "\1\u01f4",
+            "\1\u01f5",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01f6",
-            "",
-            "",
             "\1\u01f7",
             "",
+            "",
             "\1\u01f8",
+            "",
+            "\1\u01f9",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u01fa",
             "\1\u01fb",
             "\1\u01fc",
-            "",
             "\1\u01fd",
+            "",
             "\1\u01fe",
             "\1\u01ff",
             "\1\u0200",
-            "",
             "\1\u0201",
+            "",
             "\1\u0202",
             "\1\u0203",
+            "\1\u0204",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0205",
             "\1\u0206",
             "\1\u0207",
             "\1\u0208",
             "\1\u0209",
             "\1\u020a",
-            "",
             "\1\u020b",
+            "",
             "\1\u020c",
             "\1\u020d",
-            "",
             "\1\u020e",
+            "",
             "\1\u020f",
             "\1\u0210",
+            "\1\u0211",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0213",
             "\1\u0214",
+            "\1\u0215",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0216",
             "\1\u0217",
-            "",
             "\1\u0218",
+            "",
             "\1\u0219",
             "\1\u021a",
             "\1\u021b",
             "\1\u021c",
+            "\1\u021d",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u021e",
             "\1\u021f",
+            "\1\u0220",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0223",
-            "",
-            "",
             "\1\u0224",
-            "\1\u0225",
             "",
+            "",
+            "\1\u0225",
             "\1\u0226",
+            "",
             "\1\u0227",
             "\1\u0228",
             "\1\u0229",
+            "\1\u022a",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u022b",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\3\66\1\u022c\26\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
-            "\1\u022d",
-            "\1\u022e",
-            "",
-            "",
-            "",
             "\1\u022f",
             "\1\u0230",
+            "",
+            "",
+            "",
             "\1\u0231",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u0232",
             "\1\u0233",
-            "\1\u0234",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\u0235",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "",
+            "\1\u0236",
             "\1\u0237",
-            "\1\u0238",
+            "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "",
+            "",
             "\1\u0239",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u023a",
             "\1\u023b",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "\1\u023d",
             "",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u023e",
+            "\1\u0240",
             "",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "\1\u0241",
-            "",
-            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
-            "",
-            "",
             "\1\u0243",
             "",
+            "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
+            "",
+            "",
+            "\1\u0245",
+            "",
             "",
             "\1\66\13\uffff\12\66\7\uffff\32\66\4\uffff\1\66\1\uffff\32\66",
             "",
@@ -5007,7 +5067,7 @@
             this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | 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/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.java
index 4340809..be3ac50 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/parser/antlr/internal/InternalPerspectiveDslParser.java
@@ -40,7 +40,7 @@
 @SuppressWarnings("all")
 public class InternalPerspectiveDslParser extends AbstractInternalAntlrParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'perspective'", "'describedBy'", "'process'", "'usertask'", "'iconURI'", "'accessibility'", "'toolbar'", "'eventManager'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'part'", "'view'", "'isClosable'", "'targetPart'", "'allowedSources'", "'select'", "'readOnlyTable'", "'editableTable'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'bpmn'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "'title'", "'name'", "'browser'", "'url'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'horizontal'", "'vertical'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'perspective'", "'describedBy'", "'process'", "'usertask'", "'icon'", "'accessibility'", "'toolbar'", "'eventManager'", "'sashContainer'", "'orientation'", "'selectedElement'", "'spaceVolume'", "'partStack'", "'synchronize'", "'part'", "'iconURI'", "'view'", "'isClosable'", "'targetPart'", "'allowedSources'", "'select'", "'readOnlyTable'", "'editableTable'", "'chart'", "'report'", "'organigram'", "'topology'", "'dialog'", "'bpmn'", "'kanban'", "'of'", "'card'", "'welcome'", "'search'", "'in'", "'depth'", "'filterColumns'", "'dataInterchange'", "'title'", "'name'", "'browser'", "'url'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'horizontal'", "'vertical'"
     };
     public static final int RULE_HEX=7;
     public static final int T__50=50;
@@ -53,6 +53,8 @@
     public static final int T__52=52;
     public static final int T__53=53;
     public static final int T__54=54;
+    public static final int T__133=133;
+    public static final int T__132=132;
     public static final int T__60=60;
     public static final int T__61=61;
     public static final int RULE_ID=4;
@@ -275,7 +277,7 @@
             int alt1=2;
             int LA1_0 = input.LA(1);
 
-            if ( (LA1_0==56) ) {
+            if ( (LA1_0==58) ) {
                 alt1=1;
             }
             switch (alt1) {
@@ -658,7 +660,7 @@
 
 
     // $ANTLR start "rulePerspective"
-    // InternalPerspectiveDsl.g:222:1: rulePerspective returns [EObject current=null] : ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}' ) ;
+    // InternalPerspectiveDsl.g:222:1: rulePerspective returns [EObject current=null] : ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}' ) ;
     public final EObject rulePerspective() throws RecognitionException {
         EObject current = null;
 
@@ -690,11 +692,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:228:2: ( ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}' ) )
-            // InternalPerspectiveDsl.g:229:2: ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}' )
+            // InternalPerspectiveDsl.g:228:2: ( ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}' ) )
+            // InternalPerspectiveDsl.g:229:2: ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}' )
             {
-            // InternalPerspectiveDsl.g:229:2: ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}' )
-            // InternalPerspectiveDsl.g:230:3: () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}'
+            // InternalPerspectiveDsl.g:229:2: ( () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}' )
+            // InternalPerspectiveDsl.g:230:3: () otherlv_1= 'perspective' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'process' ( (otherlv_6= RULE_ID ) ) otherlv_7= 'usertask' ( (otherlv_8= RULE_ID ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) ) otherlv_16= '{' ( (lv_elements_17_0= rulePerspectiveElement ) )* (otherlv_18= 'eventManager' ( (lv_eventmanager_19_0= rulePerspectiveEventManager ) ) )? otherlv_20= '}'
             {
             // InternalPerspectiveDsl.g:230:3: ()
             // InternalPerspectiveDsl.g:231:4: 
@@ -907,17 +909,17 @@
 
             }
 
-            // InternalPerspectiveDsl.g:331:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) )
-            // InternalPerspectiveDsl.g:332:4: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:331:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:332:4: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) )
             {
-            // InternalPerspectiveDsl.g:332:4: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) )
-            // InternalPerspectiveDsl.g:333:5: ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:332:4: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:333:5: ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5());
-            // InternalPerspectiveDsl.g:336:5: ( ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* )
-            // InternalPerspectiveDsl.g:337:6: ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:336:5: ( ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:337:6: ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )*
             {
-            // InternalPerspectiveDsl.g:337:6: ( ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:337:6: ( ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'accessibility' ( (lv_accessibilityPhrase_13_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'toolbar' ( (otherlv_15= RULE_ID ) ) ) ) ) ) )*
             loop7:
             do {
                 int alt7=4;
@@ -936,33 +938,33 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:338:4: ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:338:4: ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:338:4: ({...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:339:5: {...}? => ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:338:4: ({...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:339:5: {...}? => ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspective", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0)");
             	    }
-            	    // InternalPerspectiveDsl.g:339:108: ( ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:340:6: ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:339:108: ( ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:340:6: ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveAccess().getUnorderedGroup_5(), 0);
-            	    // InternalPerspectiveDsl.g:343:9: ({...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
-            	    // InternalPerspectiveDsl.g:343:10: {...}? => (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:343:9: ({...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:343:10: {...}? => (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspective", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:343:19: (otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) ) )
-            	    // InternalPerspectiveDsl.g:343:20: otherlv_10= 'iconURI' ( (lv_iconURI_11_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:343:19: (otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:343:20: otherlv_10= 'icon' ( (lv_iconURI_11_0= RULE_STRING ) )
             	    {
             	    otherlv_10=(Token)match(input,20,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      									newLeafNode(otherlv_10, grammarAccess.getPerspectiveAccess().getIconURIKeyword_5_0_0());
+            	      									newLeafNode(otherlv_10, grammarAccess.getPerspectiveAccess().getIconKeyword_5_0_0());
             	      								
             	    }
             	    // InternalPerspectiveDsl.g:347:9: ( (lv_iconURI_11_0= RULE_STRING ) )
@@ -1186,7 +1188,7 @@
                 int alt8=2;
                 int LA8_0 = input.LA(1);
 
-                if ( (LA8_0==24||(LA8_0>=28 && LA8_0<=29)) ) {
+                if ( (LA8_0==24||LA8_0==28||LA8_0==30) ) {
                     alt8=1;
                 }
 
@@ -1393,7 +1395,7 @@
                 alt10=2;
                 }
                 break;
-            case 29:
+            case 30:
                 {
                 alt10=3;
                 }
@@ -1980,7 +1982,7 @@
                 int alt12=2;
                 int LA12_0 = input.LA(1);
 
-                if ( (LA12_0==24||(LA12_0>=28 && LA12_0<=29)) ) {
+                if ( (LA12_0==24||LA12_0==28||LA12_0==30) ) {
                     alt12=1;
                 }
 
@@ -2098,7 +2100,7 @@
 
 
     // $ANTLR start "rulePerspectivePartStack"
-    // InternalPerspectiveDsl.g:764:1: rulePerspectivePartStack returns [EObject current=null] : ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' ) ;
+    // InternalPerspectiveDsl.g:764:1: rulePerspectivePartStack returns [EObject current=null] : ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' ) ;
     public final EObject rulePerspectivePartStack() throws RecognitionException {
         EObject current = null;
 
@@ -2107,23 +2109,25 @@
         Token otherlv_4=null;
         Token otherlv_5=null;
         Token otherlv_6=null;
-        Token lv_containerData_7_0=null;
+        Token otherlv_7=null;
         Token otherlv_8=null;
-        Token lv_accessibilityPhrase_9_0=null;
+        Token lv_containerData_9_0=null;
         Token otherlv_10=null;
+        Token lv_accessibilityPhrase_11_0=null;
         Token otherlv_12=null;
-        EObject lv_elements_11_0 = null;
+        Token otherlv_14=null;
+        EObject lv_elements_13_0 = null;
 
 
 
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:770:2: ( ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' ) )
-            // InternalPerspectiveDsl.g:771:2: ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' )
+            // InternalPerspectiveDsl.g:770:2: ( ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' ) )
+            // InternalPerspectiveDsl.g:771:2: ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' )
             {
-            // InternalPerspectiveDsl.g:771:2: ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}' )
-            // InternalPerspectiveDsl.g:772:3: () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_10= '{' ( (lv_elements_11_0= rulePerspectiveElement ) )* otherlv_12= '}'
+            // InternalPerspectiveDsl.g:771:2: ( () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}' )
+            // InternalPerspectiveDsl.g:772:3: () otherlv_1= 'partStack' ( (lv_elementId_2_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) otherlv_12= '{' ( (lv_elements_13_0= rulePerspectiveElement ) )* otherlv_14= '}'
             {
             // InternalPerspectiveDsl.g:772:3: ()
             // InternalPerspectiveDsl.g:773:4: 
@@ -2174,31 +2178,34 @@
 
             }
 
-            // InternalPerspectiveDsl.g:801:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) ) )
-            // InternalPerspectiveDsl.g:802:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:801:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:802:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) )
             {
-            // InternalPerspectiveDsl.g:802:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* ) )
-            // InternalPerspectiveDsl.g:803:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:802:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:803:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
-            // InternalPerspectiveDsl.g:806:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )* )
-            // InternalPerspectiveDsl.g:807:6: ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:806:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:807:6: ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )*
             {
-            // InternalPerspectiveDsl.g:807:6: ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:807:6: ( ({...}? => ( ({...}? => (otherlv_4= 'selectedElement' ( (otherlv_5= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) ) )*
             loop13:
             do {
-                int alt13=4;
+                int alt13=5;
                 int LA13_0 = input.LA(1);
 
                 if ( LA13_0 == 26 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 0) ) {
                     alt13=1;
                 }
-                else if ( LA13_0 == 27 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
+                else if ( LA13_0 == 29 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
                     alt13=2;
                 }
-                else if ( LA13_0 == 21 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
+                else if ( LA13_0 == 27 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
                     alt13=3;
                 }
+                else if ( LA13_0 == 21 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3) ) {
+                    alt13=4;
+                }
 
 
                 switch (alt13) {
@@ -2274,57 +2281,52 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalPerspectiveDsl.g:836:4: ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:836:4: ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:836:4: ({...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:837:5: {...}? => ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:836:4: ({...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:837:5: {...}? => ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1)");
             	    }
-            	    // InternalPerspectiveDsl.g:837:117: ( ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:838:6: ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:837:117: ( ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:838:6: ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 1);
-            	    // InternalPerspectiveDsl.g:841:9: ({...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) ) )
-            	    // InternalPerspectiveDsl.g:841:10: {...}? => (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:841:9: ({...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) ) )
+            	    // InternalPerspectiveDsl.g:841:10: {...}? => (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:841:19: (otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) ) )
-            	    // InternalPerspectiveDsl.g:841:20: otherlv_6= 'spaceVolume' ( (lv_containerData_7_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:841:19: (otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) ) )
+            	    // InternalPerspectiveDsl.g:841:20: otherlv_6= 'synchronize' ( (otherlv_7= RULE_ID ) )
             	    {
-            	    otherlv_6=(Token)match(input,27,FOLLOW_8); if (state.failed) return current;
+            	    otherlv_6=(Token)match(input,29,FOLLOW_4); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      									newLeafNode(otherlv_6, grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_1_0());
+            	      									newLeafNode(otherlv_6, grammarAccess.getPerspectivePartStackAccess().getSynchronizeKeyword_3_1_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:845:9: ( (lv_containerData_7_0= RULE_STRING ) )
-            	    // InternalPerspectiveDsl.g:846:10: (lv_containerData_7_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:845:9: ( (otherlv_7= RULE_ID ) )
+            	    // InternalPerspectiveDsl.g:846:10: (otherlv_7= RULE_ID )
             	    {
-            	    // InternalPerspectiveDsl.g:846:10: (lv_containerData_7_0= RULE_STRING )
-            	    // InternalPerspectiveDsl.g:847:11: lv_containerData_7_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:846:10: (otherlv_7= RULE_ID )
+            	    // InternalPerspectiveDsl.g:847:11: otherlv_7= RULE_ID
             	    {
-            	    lv_containerData_7_0=(Token)match(input,RULE_STRING,FOLLOW_17); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      											newLeafNode(lv_containerData_7_0, grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_1_1_0());
-            	      										
-            	    }
             	    if ( state.backtracking==0 ) {
 
             	      											if (current==null) {
             	      												current = createModelElement(grammarAccess.getPerspectivePartStackRule());
             	      											}
-            	      											setWithLastConsumed(
-            	      												current,
-            	      												"containerData",
-            	      												lv_containerData_7_0,
-            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
+            	    }
+            	    otherlv_7=(Token)match(input,RULE_ID,FOLLOW_17); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      											newLeafNode(otherlv_7, grammarAccess.getPerspectivePartStackAccess().getSynchronizePerspectivePartStackCrossReference_3_1_1_0());
             	      										
             	    }
 
@@ -2350,45 +2352,121 @@
             	    }
             	    break;
             	case 3 :
-            	    // InternalPerspectiveDsl.g:869:4: ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:864:4: ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:869:4: ({...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:870:5: {...}? => ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:864:4: ({...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:865:5: {...}? => ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2)");
             	    }
-            	    // InternalPerspectiveDsl.g:870:117: ( ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:871:6: ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:865:117: ( ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:866:6: ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 2);
-            	    // InternalPerspectiveDsl.g:874:9: ({...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) ) )
-            	    // InternalPerspectiveDsl.g:874:10: {...}? => (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:869:9: ({...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:869:10: {...}? => (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:874:19: (otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) ) )
-            	    // InternalPerspectiveDsl.g:874:20: otherlv_8= 'accessibility' ( (lv_accessibilityPhrase_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:869:19: (otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:869:20: otherlv_8= 'spaceVolume' ( (lv_containerData_9_0= RULE_STRING ) )
             	    {
-            	    otherlv_8=(Token)match(input,21,FOLLOW_8); if (state.failed) return current;
+            	    otherlv_8=(Token)match(input,27,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      									newLeafNode(otherlv_8, grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_2_0());
+            	      									newLeafNode(otherlv_8, grammarAccess.getPerspectivePartStackAccess().getSpaceVolumeKeyword_3_2_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:878:9: ( (lv_accessibilityPhrase_9_0= RULE_STRING ) )
-            	    // InternalPerspectiveDsl.g:879:10: (lv_accessibilityPhrase_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:873:9: ( (lv_containerData_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:874:10: (lv_containerData_9_0= RULE_STRING )
             	    {
-            	    // InternalPerspectiveDsl.g:879:10: (lv_accessibilityPhrase_9_0= RULE_STRING )
-            	    // InternalPerspectiveDsl.g:880:11: lv_accessibilityPhrase_9_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:874:10: (lv_containerData_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:875:11: lv_containerData_9_0= RULE_STRING
             	    {
-            	    lv_accessibilityPhrase_9_0=(Token)match(input,RULE_STRING,FOLLOW_17); if (state.failed) return current;
+            	    lv_containerData_9_0=(Token)match(input,RULE_STRING,FOLLOW_17); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      											newLeafNode(lv_accessibilityPhrase_9_0, grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0());
+            	      											newLeafNode(lv_containerData_9_0, grammarAccess.getPerspectivePartStackAccess().getContainerDataSTRINGTerminalRuleCall_3_2_1_0());
+            	      										
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getPerspectivePartStackRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"containerData",
+            	      												lv_containerData_9_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 4 :
+            	    // InternalPerspectiveDsl.g:897:4: ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) )
+            	    {
+            	    // InternalPerspectiveDsl.g:897:4: ({...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:898:5: {...}? => ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3)");
+            	    }
+            	    // InternalPerspectiveDsl.g:898:117: ( ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:899:6: ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartStackAccess().getUnorderedGroup_3(), 3);
+            	    // InternalPerspectiveDsl.g:902:9: ({...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:902:10: {...}? => (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "rulePerspectivePartStack", "true");
+            	    }
+            	    // InternalPerspectiveDsl.g:902:19: (otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:902:20: otherlv_10= 'accessibility' ( (lv_accessibilityPhrase_11_0= RULE_STRING ) )
+            	    {
+            	    otherlv_10=(Token)match(input,21,FOLLOW_8); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      									newLeafNode(otherlv_10, grammarAccess.getPerspectivePartStackAccess().getAccessibilityKeyword_3_3_0());
+            	      								
+            	    }
+            	    // InternalPerspectiveDsl.g:906:9: ( (lv_accessibilityPhrase_11_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:907:10: (lv_accessibilityPhrase_11_0= RULE_STRING )
+            	    {
+            	    // InternalPerspectiveDsl.g:907:10: (lv_accessibilityPhrase_11_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:908:11: lv_accessibilityPhrase_11_0= RULE_STRING
+            	    {
+            	    lv_accessibilityPhrase_11_0=(Token)match(input,RULE_STRING,FOLLOW_17); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      											newLeafNode(lv_accessibilityPhrase_11_0, grammarAccess.getPerspectivePartStackAccess().getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0());
             	      										
             	    }
             	    if ( state.backtracking==0 ) {
@@ -2399,7 +2477,7 @@
             	      											setWithLastConsumed(
             	      												current,
             	      												"accessibilityPhrase",
-            	      												lv_accessibilityPhrase_9_0,
+            	      												lv_accessibilityPhrase_11_0,
             	      												"org.eclipse.xtext.xbase.Xtype.STRING");
             	      										
             	    }
@@ -2441,29 +2519,29 @@
 
             }
 
-            otherlv_10=(Token)match(input,14,FOLLOW_16); if (state.failed) return current;
+            otherlv_12=(Token)match(input,14,FOLLOW_16); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_10, grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4());
+              			newLeafNode(otherlv_12, grammarAccess.getPerspectivePartStackAccess().getLeftCurlyBracketKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:913:3: ( (lv_elements_11_0= rulePerspectiveElement ) )*
+            // InternalPerspectiveDsl.g:941:3: ( (lv_elements_13_0= rulePerspectiveElement ) )*
             loop14:
             do {
                 int alt14=2;
                 int LA14_0 = input.LA(1);
 
-                if ( (LA14_0==24||(LA14_0>=28 && LA14_0<=29)) ) {
+                if ( (LA14_0==24||LA14_0==28||LA14_0==30) ) {
                     alt14=1;
                 }
 
 
                 switch (alt14) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:914:4: (lv_elements_11_0= rulePerspectiveElement )
+            	    // InternalPerspectiveDsl.g:942:4: (lv_elements_13_0= rulePerspectiveElement )
             	    {
-            	    // InternalPerspectiveDsl.g:914:4: (lv_elements_11_0= rulePerspectiveElement )
-            	    // InternalPerspectiveDsl.g:915:5: lv_elements_11_0= rulePerspectiveElement
+            	    // InternalPerspectiveDsl.g:942:4: (lv_elements_13_0= rulePerspectiveElement )
+            	    // InternalPerspectiveDsl.g:943:5: lv_elements_13_0= rulePerspectiveElement
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -2471,7 +2549,7 @@
             	      				
             	    }
             	    pushFollow(FOLLOW_16);
-            	    lv_elements_11_0=rulePerspectiveElement();
+            	    lv_elements_13_0=rulePerspectiveElement();
 
             	    state._fsp--;
             	    if (state.failed) return current;
@@ -2483,7 +2561,7 @@
             	      					add(
             	      						current,
             	      						"elements",
-            	      						lv_elements_11_0,
+            	      						lv_elements_13_0,
             	      						"org.eclipse.osbp.xtext.perspective.PerspectiveDsl.PerspectiveElement");
             	      					afterParserOrEnumRuleCall();
             	      				
@@ -2500,10 +2578,10 @@
                 }
             } while (true);
 
-            otherlv_12=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
+            otherlv_14=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_12, grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6());
+              			newLeafNode(otherlv_14, grammarAccess.getPerspectivePartStackAccess().getRightCurlyBracketKeyword_6());
               		
             }
 
@@ -2531,7 +2609,7 @@
 
 
     // $ANTLR start "entryRulePerspectivePart"
-    // InternalPerspectiveDsl.g:940:1: entryRulePerspectivePart returns [EObject current=null] : iv_rulePerspectivePart= rulePerspectivePart EOF ;
+    // InternalPerspectiveDsl.g:968:1: entryRulePerspectivePart returns [EObject current=null] : iv_rulePerspectivePart= rulePerspectivePart EOF ;
     public final EObject entryRulePerspectivePart() throws RecognitionException {
         EObject current = null;
 
@@ -2539,8 +2617,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:940:56: (iv_rulePerspectivePart= rulePerspectivePart EOF )
-            // InternalPerspectiveDsl.g:941:2: iv_rulePerspectivePart= rulePerspectivePart EOF
+            // InternalPerspectiveDsl.g:968:56: (iv_rulePerspectivePart= rulePerspectivePart EOF )
+            // InternalPerspectiveDsl.g:969:2: iv_rulePerspectivePart= rulePerspectivePart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectivePartRule()); 
@@ -2571,7 +2649,7 @@
 
 
     // $ANTLR start "rulePerspectivePart"
-    // InternalPerspectiveDsl.g:947:1: rulePerspectivePart returns [EObject current=null] : ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) ) ;
+    // InternalPerspectiveDsl.g:975:1: rulePerspectivePart returns [EObject current=null] : ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) ) ;
     public final EObject rulePerspectivePart() throws RecognitionException {
         EObject current = null;
 
@@ -2593,14 +2671,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:953:2: ( ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) ) )
-            // InternalPerspectiveDsl.g:954:2: ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) )
+            // InternalPerspectiveDsl.g:981:2: ( ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) ) )
+            // InternalPerspectiveDsl.g:982:2: ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) )
             {
-            // InternalPerspectiveDsl.g:954:2: ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) )
-            // InternalPerspectiveDsl.g:955:3: () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:982:2: ( () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) ) )
+            // InternalPerspectiveDsl.g:983:3: () otherlv_1= 'part' ( (lv_elementId_2_0= ruleTRANSLATABLEID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) )
             {
-            // InternalPerspectiveDsl.g:955:3: ()
-            // InternalPerspectiveDsl.g:956:4: 
+            // InternalPerspectiveDsl.g:983:3: ()
+            // InternalPerspectiveDsl.g:984:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -2612,17 +2690,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,29,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,30,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectivePartAccess().getPartKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:966:3: ( (lv_elementId_2_0= ruleTRANSLATABLEID ) )
-            // InternalPerspectiveDsl.g:967:4: (lv_elementId_2_0= ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:994:3: ( (lv_elementId_2_0= ruleTRANSLATABLEID ) )
+            // InternalPerspectiveDsl.g:995:4: (lv_elementId_2_0= ruleTRANSLATABLEID )
             {
-            // InternalPerspectiveDsl.g:967:4: (lv_elementId_2_0= ruleTRANSLATABLEID )
-            // InternalPerspectiveDsl.g:968:5: lv_elementId_2_0= ruleTRANSLATABLEID
+            // InternalPerspectiveDsl.g:995:4: (lv_elementId_2_0= ruleTRANSLATABLEID )
+            // InternalPerspectiveDsl.g:996:5: lv_elementId_2_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
 
@@ -2653,17 +2731,17 @@
 
             }
 
-            // InternalPerspectiveDsl.g:985:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) )
-            // InternalPerspectiveDsl.g:986:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:1013:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:1014:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) )
             {
-            // InternalPerspectiveDsl.g:986:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) )
-            // InternalPerspectiveDsl.g:987:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:1014:4: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:1015:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3());
-            // InternalPerspectiveDsl.g:990:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* )
-            // InternalPerspectiveDsl.g:991:6: ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:1018:5: ( ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:1019:6: ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )*
             {
-            // InternalPerspectiveDsl.g:991:6: ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:1019:6: ( ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) ) )*
             loop15:
             do {
                 int alt15=6;
@@ -2675,41 +2753,41 @@
                 else if ( LA15_0 == 21 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
                     alt15=2;
                 }
-                else if ( LA15_0 == 20 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
+                else if ( LA15_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
                     alt15=3;
                 }
-                else if ( LA15_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
+                else if ( LA15_0 == 32 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
                     alt15=4;
                 }
-                else if ( LA15_0 == 31 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
+                else if ( LA15_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
                     alt15=5;
                 }
 
 
                 switch (alt15) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:992:4: ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1020:4: ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:992:4: ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:993:5: {...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1020:4: ({...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1021:5: {...}? => ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0)");
             	    }
-            	    // InternalPerspectiveDsl.g:993:112: ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:994:6: ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1021:112: ( ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1022:6: ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 0);
-            	    // InternalPerspectiveDsl.g:997:9: ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) )
-            	    // InternalPerspectiveDsl.g:997:10: {...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1025:9: ({...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1025:10: {...}? => (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:997:19: (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) )
-            	    // InternalPerspectiveDsl.g:997:20: otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1025:19: (otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1025:20: otherlv_4= 'spaceVolume' ( (lv_containerData_5_0= RULE_STRING ) )
             	    {
             	    otherlv_4=(Token)match(input,27,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -2717,11 +2795,11 @@
             	      									newLeafNode(otherlv_4, grammarAccess.getPerspectivePartAccess().getSpaceVolumeKeyword_3_0_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:1001:9: ( (lv_containerData_5_0= RULE_STRING ) )
-            	    // InternalPerspectiveDsl.g:1002:10: (lv_containerData_5_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1029:9: ( (lv_containerData_5_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1030:10: (lv_containerData_5_0= RULE_STRING )
             	    {
-            	    // InternalPerspectiveDsl.g:1002:10: (lv_containerData_5_0= RULE_STRING )
-            	    // InternalPerspectiveDsl.g:1003:11: lv_containerData_5_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:1030:10: (lv_containerData_5_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1031:11: lv_containerData_5_0= RULE_STRING
             	    {
             	    lv_containerData_5_0=(Token)match(input,RULE_STRING,FOLLOW_18); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -2764,28 +2842,28 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalPerspectiveDsl.g:1025:4: ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1053:4: ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:1025:4: ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1026:5: {...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1053:4: ({...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1054:5: {...}? => ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1)");
             	    }
-            	    // InternalPerspectiveDsl.g:1026:112: ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1027:6: ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1054:112: ( ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1055:6: ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 1);
-            	    // InternalPerspectiveDsl.g:1030:9: ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) )
-            	    // InternalPerspectiveDsl.g:1030:10: {...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1058:9: ({...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1058:10: {...}? => (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:1030:19: (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) )
-            	    // InternalPerspectiveDsl.g:1030:20: otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1058:19: (otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1058:20: otherlv_6= 'accessibility' ( (lv_accessibilityPhrase_7_0= RULE_STRING ) )
             	    {
             	    otherlv_6=(Token)match(input,21,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -2793,11 +2871,11 @@
             	      									newLeafNode(otherlv_6, grammarAccess.getPerspectivePartAccess().getAccessibilityKeyword_3_1_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:1034:9: ( (lv_accessibilityPhrase_7_0= RULE_STRING ) )
-            	    // InternalPerspectiveDsl.g:1035:10: (lv_accessibilityPhrase_7_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1062:9: ( (lv_accessibilityPhrase_7_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1063:10: (lv_accessibilityPhrase_7_0= RULE_STRING )
             	    {
-            	    // InternalPerspectiveDsl.g:1035:10: (lv_accessibilityPhrase_7_0= RULE_STRING )
-            	    // InternalPerspectiveDsl.g:1036:11: lv_accessibilityPhrase_7_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:1063:10: (lv_accessibilityPhrase_7_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1064:11: lv_accessibilityPhrase_7_0= RULE_STRING
             	    {
             	    lv_accessibilityPhrase_7_0=(Token)match(input,RULE_STRING,FOLLOW_18); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -2840,40 +2918,40 @@
             	    }
             	    break;
             	case 3 :
-            	    // InternalPerspectiveDsl.g:1058:4: ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1086:4: ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:1058:4: ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1059:5: {...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1086:4: ({...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1087:5: {...}? => ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2)");
             	    }
-            	    // InternalPerspectiveDsl.g:1059:112: ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1060:6: ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1087:112: ( ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1088:6: ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 2);
-            	    // InternalPerspectiveDsl.g:1063:9: ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) )
-            	    // InternalPerspectiveDsl.g:1063:10: {...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1091:9: ({...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) ) )
+            	    // InternalPerspectiveDsl.g:1091:10: {...}? => (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:1063:19: (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) )
-            	    // InternalPerspectiveDsl.g:1063:20: otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1091:19: (otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) ) )
+            	    // InternalPerspectiveDsl.g:1091:20: otherlv_8= 'iconURI' ( (lv_iconURI_9_0= RULE_STRING ) )
             	    {
-            	    otherlv_8=(Token)match(input,20,FOLLOW_8); if (state.failed) return current;
+            	    otherlv_8=(Token)match(input,31,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      									newLeafNode(otherlv_8, grammarAccess.getPerspectivePartAccess().getIconURIKeyword_3_2_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:1067:9: ( (lv_iconURI_9_0= RULE_STRING ) )
-            	    // InternalPerspectiveDsl.g:1068:10: (lv_iconURI_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1095:9: ( (lv_iconURI_9_0= RULE_STRING ) )
+            	    // InternalPerspectiveDsl.g:1096:10: (lv_iconURI_9_0= RULE_STRING )
             	    {
-            	    // InternalPerspectiveDsl.g:1068:10: (lv_iconURI_9_0= RULE_STRING )
-            	    // InternalPerspectiveDsl.g:1069:11: lv_iconURI_9_0= RULE_STRING
+            	    // InternalPerspectiveDsl.g:1096:10: (lv_iconURI_9_0= RULE_STRING )
+            	    // InternalPerspectiveDsl.g:1097:11: lv_iconURI_9_0= RULE_STRING
             	    {
             	    lv_iconURI_9_0=(Token)match(input,RULE_STRING,FOLLOW_18); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -2916,40 +2994,40 @@
             	    }
             	    break;
             	case 4 :
-            	    // InternalPerspectiveDsl.g:1091:4: ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1119:4: ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:1091:4: ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1092:5: {...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1119:4: ({...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1120:5: {...}? => ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3)");
             	    }
-            	    // InternalPerspectiveDsl.g:1092:112: ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1093:6: ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) )
+            	    // InternalPerspectiveDsl.g:1120:112: ( ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1121:6: ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 3);
-            	    // InternalPerspectiveDsl.g:1096:9: ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) )
-            	    // InternalPerspectiveDsl.g:1096:10: {...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) )
+            	    // InternalPerspectiveDsl.g:1124:9: ({...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) ) )
+            	    // InternalPerspectiveDsl.g:1124:10: {...}? => (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:1096:19: (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) )
-            	    // InternalPerspectiveDsl.g:1096:20: otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) )
+            	    // InternalPerspectiveDsl.g:1124:19: (otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) ) )
+            	    // InternalPerspectiveDsl.g:1124:20: otherlv_10= 'view' ( (lv_view_11_0= rulePerspectiveView ) )
             	    {
-            	    otherlv_10=(Token)match(input,30,FOLLOW_19); if (state.failed) return current;
+            	    otherlv_10=(Token)match(input,32,FOLLOW_19); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      									newLeafNode(otherlv_10, grammarAccess.getPerspectivePartAccess().getViewKeyword_3_3_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:1100:9: ( (lv_view_11_0= rulePerspectiveView ) )
-            	    // InternalPerspectiveDsl.g:1101:10: (lv_view_11_0= rulePerspectiveView )
+            	    // InternalPerspectiveDsl.g:1128:9: ( (lv_view_11_0= rulePerspectiveView ) )
+            	    // InternalPerspectiveDsl.g:1129:10: (lv_view_11_0= rulePerspectiveView )
             	    {
-            	    // InternalPerspectiveDsl.g:1101:10: (lv_view_11_0= rulePerspectiveView )
-            	    // InternalPerspectiveDsl.g:1102:11: lv_view_11_0= rulePerspectiveView
+            	    // InternalPerspectiveDsl.g:1129:10: (lv_view_11_0= rulePerspectiveView )
+            	    // InternalPerspectiveDsl.g:1130:11: lv_view_11_0= rulePerspectiveView
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -2997,33 +3075,33 @@
             	    }
             	    break;
             	case 5 :
-            	    // InternalPerspectiveDsl.g:1125:4: ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1153:4: ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:1125:4: ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1126:5: {...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) )
+            	    // InternalPerspectiveDsl.g:1153:4: ({...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:1154:5: {...}? => ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4)");
             	    }
-            	    // InternalPerspectiveDsl.g:1126:112: ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) )
-            	    // InternalPerspectiveDsl.g:1127:6: ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) )
+            	    // InternalPerspectiveDsl.g:1154:112: ( ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) ) )
+            	    // InternalPerspectiveDsl.g:1155:6: ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectivePartAccess().getUnorderedGroup_3(), 4);
-            	    // InternalPerspectiveDsl.g:1130:9: ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) )
-            	    // InternalPerspectiveDsl.g:1130:10: {...}? => ( (lv_isClosable_12_0= 'isClosable' ) )
+            	    // InternalPerspectiveDsl.g:1158:9: ({...}? => ( (lv_isClosable_12_0= 'isClosable' ) ) )
+            	    // InternalPerspectiveDsl.g:1158:10: {...}? => ( (lv_isClosable_12_0= 'isClosable' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectivePart", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:1130:19: ( (lv_isClosable_12_0= 'isClosable' ) )
-            	    // InternalPerspectiveDsl.g:1130:20: (lv_isClosable_12_0= 'isClosable' )
+            	    // InternalPerspectiveDsl.g:1158:19: ( (lv_isClosable_12_0= 'isClosable' ) )
+            	    // InternalPerspectiveDsl.g:1158:20: (lv_isClosable_12_0= 'isClosable' )
             	    {
-            	    // InternalPerspectiveDsl.g:1130:20: (lv_isClosable_12_0= 'isClosable' )
-            	    // InternalPerspectiveDsl.g:1131:10: lv_isClosable_12_0= 'isClosable'
+            	    // InternalPerspectiveDsl.g:1158:20: (lv_isClosable_12_0= 'isClosable' )
+            	    // InternalPerspectiveDsl.g:1159:10: lv_isClosable_12_0= 'isClosable'
             	    {
-            	    lv_isClosable_12_0=(Token)match(input,31,FOLLOW_18); if (state.failed) return current;
+            	    lv_isClosable_12_0=(Token)match(input,33,FOLLOW_18); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      										newLeafNode(lv_isClosable_12_0, grammarAccess.getPerspectivePartAccess().getIsClosableIsClosableKeyword_3_4_0());
@@ -3097,7 +3175,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveEventManager"
-    // InternalPerspectiveDsl.g:1159:1: entryRulePerspectiveEventManager returns [EObject current=null] : iv_rulePerspectiveEventManager= rulePerspectiveEventManager EOF ;
+    // InternalPerspectiveDsl.g:1187:1: entryRulePerspectiveEventManager returns [EObject current=null] : iv_rulePerspectiveEventManager= rulePerspectiveEventManager EOF ;
     public final EObject entryRulePerspectiveEventManager() throws RecognitionException {
         EObject current = null;
 
@@ -3105,8 +3183,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1159:64: (iv_rulePerspectiveEventManager= rulePerspectiveEventManager EOF )
-            // InternalPerspectiveDsl.g:1160:2: iv_rulePerspectiveEventManager= rulePerspectiveEventManager EOF
+            // InternalPerspectiveDsl.g:1187:64: (iv_rulePerspectiveEventManager= rulePerspectiveEventManager EOF )
+            // InternalPerspectiveDsl.g:1188:2: iv_rulePerspectiveEventManager= rulePerspectiveEventManager EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveEventManagerRule()); 
@@ -3137,7 +3215,7 @@
 
 
     // $ANTLR start "rulePerspectiveEventManager"
-    // InternalPerspectiveDsl.g:1166:1: rulePerspectiveEventManager returns [EObject current=null] : ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}' ) ;
+    // InternalPerspectiveDsl.g:1194:1: rulePerspectiveEventManager returns [EObject current=null] : ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}' ) ;
     public final EObject rulePerspectiveEventManager() throws RecognitionException {
         EObject current = null;
 
@@ -3151,14 +3229,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1172:2: ( ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}' ) )
-            // InternalPerspectiveDsl.g:1173:2: ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}' )
+            // InternalPerspectiveDsl.g:1200:2: ( ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}' ) )
+            // InternalPerspectiveDsl.g:1201:2: ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}' )
             {
-            // InternalPerspectiveDsl.g:1173:2: ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}' )
-            // InternalPerspectiveDsl.g:1174:3: () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}'
+            // InternalPerspectiveDsl.g:1201:2: ( () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}' )
+            // InternalPerspectiveDsl.g:1202:3: () ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_events_3_0= rulePerspectiveEvent ) )* otherlv_4= '}'
             {
-            // InternalPerspectiveDsl.g:1174:3: ()
-            // InternalPerspectiveDsl.g:1175:4: 
+            // InternalPerspectiveDsl.g:1202:3: ()
+            // InternalPerspectiveDsl.g:1203:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -3170,11 +3248,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:1181:3: ( (lv_name_1_0= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1182:4: (lv_name_1_0= RULE_ID )
+            // InternalPerspectiveDsl.g:1209:3: ( (lv_name_1_0= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1210:4: (lv_name_1_0= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1182:4: (lv_name_1_0= RULE_ID )
-            // InternalPerspectiveDsl.g:1183:5: lv_name_1_0= RULE_ID
+            // InternalPerspectiveDsl.g:1210:4: (lv_name_1_0= RULE_ID )
+            // InternalPerspectiveDsl.g:1211:5: lv_name_1_0= RULE_ID
             {
             lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_20); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -3206,23 +3284,23 @@
               			newLeafNode(otherlv_2, grammarAccess.getPerspectiveEventManagerAccess().getLeftCurlyBracketKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:1203:3: ( (lv_events_3_0= rulePerspectiveEvent ) )*
+            // InternalPerspectiveDsl.g:1231:3: ( (lv_events_3_0= rulePerspectiveEvent ) )*
             loop16:
             do {
                 int alt16=2;
                 int LA16_0 = input.LA(1);
 
-                if ( (LA16_0==32) ) {
+                if ( (LA16_0==34) ) {
                     alt16=1;
                 }
 
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:1204:4: (lv_events_3_0= rulePerspectiveEvent )
+            	    // InternalPerspectiveDsl.g:1232:4: (lv_events_3_0= rulePerspectiveEvent )
             	    {
-            	    // InternalPerspectiveDsl.g:1204:4: (lv_events_3_0= rulePerspectiveEvent )
-            	    // InternalPerspectiveDsl.g:1205:5: lv_events_3_0= rulePerspectiveEvent
+            	    // InternalPerspectiveDsl.g:1232:4: (lv_events_3_0= rulePerspectiveEvent )
+            	    // InternalPerspectiveDsl.g:1233:5: lv_events_3_0= rulePerspectiveEvent
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -3290,7 +3368,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveEvent"
-    // InternalPerspectiveDsl.g:1230:1: entryRulePerspectiveEvent returns [EObject current=null] : iv_rulePerspectiveEvent= rulePerspectiveEvent EOF ;
+    // InternalPerspectiveDsl.g:1258:1: entryRulePerspectiveEvent returns [EObject current=null] : iv_rulePerspectiveEvent= rulePerspectiveEvent EOF ;
     public final EObject entryRulePerspectiveEvent() throws RecognitionException {
         EObject current = null;
 
@@ -3298,8 +3376,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1230:57: (iv_rulePerspectiveEvent= rulePerspectiveEvent EOF )
-            // InternalPerspectiveDsl.g:1231:2: iv_rulePerspectiveEvent= rulePerspectiveEvent EOF
+            // InternalPerspectiveDsl.g:1258:57: (iv_rulePerspectiveEvent= rulePerspectiveEvent EOF )
+            // InternalPerspectiveDsl.g:1259:2: iv_rulePerspectiveEvent= rulePerspectiveEvent EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveEventRule()); 
@@ -3330,7 +3408,7 @@
 
 
     // $ANTLR start "rulePerspectiveEvent"
-    // InternalPerspectiveDsl.g:1237:1: rulePerspectiveEvent returns [EObject current=null] : ( () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' ) ;
+    // InternalPerspectiveDsl.g:1265:1: rulePerspectiveEvent returns [EObject current=null] : ( () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' ) ;
     public final EObject rulePerspectiveEvent() throws RecognitionException {
         EObject current = null;
 
@@ -3345,14 +3423,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1243:2: ( ( () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' ) )
-            // InternalPerspectiveDsl.g:1244:2: ( () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' )
+            // InternalPerspectiveDsl.g:1271:2: ( ( () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' ) )
+            // InternalPerspectiveDsl.g:1272:2: ( () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' )
             {
-            // InternalPerspectiveDsl.g:1244:2: ( () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' )
-            // InternalPerspectiveDsl.g:1245:3: () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}'
+            // InternalPerspectiveDsl.g:1272:2: ( () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' )
+            // InternalPerspectiveDsl.g:1273:3: () otherlv_1= 'targetPart' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'allowedSources' otherlv_4= '{' ( (otherlv_5= RULE_ID ) )* otherlv_6= '}'
             {
-            // InternalPerspectiveDsl.g:1245:3: ()
-            // InternalPerspectiveDsl.g:1246:4: 
+            // InternalPerspectiveDsl.g:1273:3: ()
+            // InternalPerspectiveDsl.g:1274:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -3364,17 +3442,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,32,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,34,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveEventAccess().getTargetPartKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1256:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1257:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1284:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1285:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1257:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1258:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1285:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1286:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -3395,7 +3473,7 @@
 
             }
 
-            otherlv_3=(Token)match(input,33,FOLLOW_20); if (state.failed) return current;
+            otherlv_3=(Token)match(input,35,FOLLOW_20); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_3, grammarAccess.getPerspectiveEventAccess().getAllowedSourcesKeyword_3());
@@ -3407,7 +3485,7 @@
               			newLeafNode(otherlv_4, grammarAccess.getPerspectiveEventAccess().getLeftCurlyBracketKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:1277:3: ( (otherlv_5= RULE_ID ) )*
+            // InternalPerspectiveDsl.g:1305:3: ( (otherlv_5= RULE_ID ) )*
             loop17:
             do {
                 int alt17=2;
@@ -3420,10 +3498,10 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:1278:4: (otherlv_5= RULE_ID )
+            	    // InternalPerspectiveDsl.g:1306:4: (otherlv_5= RULE_ID )
             	    {
-            	    // InternalPerspectiveDsl.g:1278:4: (otherlv_5= RULE_ID )
-            	    // InternalPerspectiveDsl.g:1279:5: otherlv_5= RULE_ID
+            	    // InternalPerspectiveDsl.g:1306:4: (otherlv_5= RULE_ID )
+            	    // InternalPerspectiveDsl.g:1307:5: otherlv_5= RULE_ID
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -3481,7 +3559,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveView"
-    // InternalPerspectiveDsl.g:1298:1: entryRulePerspectiveView returns [EObject current=null] : iv_rulePerspectiveView= rulePerspectiveView EOF ;
+    // InternalPerspectiveDsl.g:1326:1: entryRulePerspectiveView returns [EObject current=null] : iv_rulePerspectiveView= rulePerspectiveView EOF ;
     public final EObject entryRulePerspectiveView() throws RecognitionException {
         EObject current = null;
 
@@ -3489,8 +3567,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1298:56: (iv_rulePerspectiveView= rulePerspectiveView EOF )
-            // InternalPerspectiveDsl.g:1299:2: iv_rulePerspectiveView= rulePerspectiveView EOF
+            // InternalPerspectiveDsl.g:1326:56: (iv_rulePerspectiveView= rulePerspectiveView EOF )
+            // InternalPerspectiveDsl.g:1327:2: iv_rulePerspectiveView= rulePerspectiveView EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveViewRule()); 
@@ -3521,7 +3599,7 @@
 
 
     // $ANTLR start "rulePerspectiveView"
-    // InternalPerspectiveDsl.g:1305:1: rulePerspectiveView returns [EObject current=null] : (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveGrid_7= rulePerspectiveGrid | this_PerspectiveWelcome_8= rulePerspectiveWelcome | this_PerspectiveSearch_9= rulePerspectiveSearch | this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange | this_PerspectiveBPMN_11= rulePerspectiveBPMN | this_PerspectiveKanban_12= rulePerspectiveKanban | this_PerspectiveTitle_13= rulePerspectiveTitle | this_PerspectiveDashboard_14= rulePerspectiveDashboard | this_PerspectiveBrowser_15= rulePerspectiveBrowser ) ;
+    // InternalPerspectiveDsl.g:1333:1: rulePerspectiveView returns [EObject current=null] : (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveGrid_7= rulePerspectiveGrid | this_PerspectiveWelcome_8= rulePerspectiveWelcome | this_PerspectiveSearch_9= rulePerspectiveSearch | this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange | this_PerspectiveBPMN_11= rulePerspectiveBPMN | this_PerspectiveKanban_12= rulePerspectiveKanban | this_PerspectiveTitle_13= rulePerspectiveTitle | this_PerspectiveDashboard_14= rulePerspectiveDashboard | this_PerspectiveBrowser_15= rulePerspectiveBrowser ) ;
     public final EObject rulePerspectiveView() throws RecognitionException {
         EObject current = null;
 
@@ -3562,88 +3640,88 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1311:2: ( (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveGrid_7= rulePerspectiveGrid | this_PerspectiveWelcome_8= rulePerspectiveWelcome | this_PerspectiveSearch_9= rulePerspectiveSearch | this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange | this_PerspectiveBPMN_11= rulePerspectiveBPMN | this_PerspectiveKanban_12= rulePerspectiveKanban | this_PerspectiveTitle_13= rulePerspectiveTitle | this_PerspectiveDashboard_14= rulePerspectiveDashboard | this_PerspectiveBrowser_15= rulePerspectiveBrowser ) )
-            // InternalPerspectiveDsl.g:1312:2: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveGrid_7= rulePerspectiveGrid | this_PerspectiveWelcome_8= rulePerspectiveWelcome | this_PerspectiveSearch_9= rulePerspectiveSearch | this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange | this_PerspectiveBPMN_11= rulePerspectiveBPMN | this_PerspectiveKanban_12= rulePerspectiveKanban | this_PerspectiveTitle_13= rulePerspectiveTitle | this_PerspectiveDashboard_14= rulePerspectiveDashboard | this_PerspectiveBrowser_15= rulePerspectiveBrowser )
+            // InternalPerspectiveDsl.g:1339:2: ( (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveGrid_7= rulePerspectiveGrid | this_PerspectiveWelcome_8= rulePerspectiveWelcome | this_PerspectiveSearch_9= rulePerspectiveSearch | this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange | this_PerspectiveBPMN_11= rulePerspectiveBPMN | this_PerspectiveKanban_12= rulePerspectiveKanban | this_PerspectiveTitle_13= rulePerspectiveTitle | this_PerspectiveDashboard_14= rulePerspectiveDashboard | this_PerspectiveBrowser_15= rulePerspectiveBrowser ) )
+            // InternalPerspectiveDsl.g:1340:2: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveGrid_7= rulePerspectiveGrid | this_PerspectiveWelcome_8= rulePerspectiveWelcome | this_PerspectiveSearch_9= rulePerspectiveSearch | this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange | this_PerspectiveBPMN_11= rulePerspectiveBPMN | this_PerspectiveKanban_12= rulePerspectiveKanban | this_PerspectiveTitle_13= rulePerspectiveTitle | this_PerspectiveDashboard_14= rulePerspectiveDashboard | this_PerspectiveBrowser_15= rulePerspectiveBrowser )
             {
-            // InternalPerspectiveDsl.g:1312:2: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveGrid_7= rulePerspectiveGrid | this_PerspectiveWelcome_8= rulePerspectiveWelcome | this_PerspectiveSearch_9= rulePerspectiveSearch | this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange | this_PerspectiveBPMN_11= rulePerspectiveBPMN | this_PerspectiveKanban_12= rulePerspectiveKanban | this_PerspectiveTitle_13= rulePerspectiveTitle | this_PerspectiveDashboard_14= rulePerspectiveDashboard | this_PerspectiveBrowser_15= rulePerspectiveBrowser )
+            // InternalPerspectiveDsl.g:1340:2: (this_PerspectiveSelection_0= rulePerspectiveSelection | this_PerspectiveTable_1= rulePerspectiveTable | this_PerspectiveChart_2= rulePerspectiveChart | this_PerspectiveReport_3= rulePerspectiveReport | this_PerspectiveOrganization_4= rulePerspectiveOrganization | this_PerspectiveTopology_5= rulePerspectiveTopology | this_PerspectiveDialog_6= rulePerspectiveDialog | this_PerspectiveGrid_7= rulePerspectiveGrid | this_PerspectiveWelcome_8= rulePerspectiveWelcome | this_PerspectiveSearch_9= rulePerspectiveSearch | this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange | this_PerspectiveBPMN_11= rulePerspectiveBPMN | this_PerspectiveKanban_12= rulePerspectiveKanban | this_PerspectiveTitle_13= rulePerspectiveTitle | this_PerspectiveDashboard_14= rulePerspectiveDashboard | this_PerspectiveBrowser_15= rulePerspectiveBrowser )
             int alt18=16;
             switch ( input.LA(1) ) {
-            case 34:
+            case 36:
                 {
                 alt18=1;
                 }
                 break;
-            case 35:
+            case 37:
                 {
                 alt18=2;
                 }
                 break;
-            case 37:
+            case 39:
                 {
                 alt18=3;
                 }
                 break;
-            case 38:
+            case 40:
                 {
                 alt18=4;
                 }
                 break;
-            case 39:
+            case 41:
                 {
                 alt18=5;
                 }
                 break;
-            case 40:
+            case 42:
                 {
                 alt18=6;
                 }
                 break;
-            case 41:
+            case 43:
                 {
                 alt18=7;
                 }
                 break;
-            case 36:
+            case 38:
                 {
                 alt18=8;
                 }
                 break;
-            case 46:
+            case 48:
                 {
                 alt18=9;
                 }
                 break;
-            case 47:
+            case 49:
                 {
                 alt18=10;
                 }
                 break;
-            case 51:
+            case 53:
                 {
                 alt18=11;
                 }
                 break;
-            case 42:
+            case 44:
                 {
                 alt18=12;
                 }
                 break;
-            case 43:
+            case 45:
                 {
                 alt18=13;
                 }
                 break;
-            case 52:
+            case 54:
                 {
                 alt18=14;
                 }
                 break;
-            case 53:
+            case 55:
                 {
                 alt18=15;
                 }
                 break;
-            case 54:
+            case 56:
                 {
                 alt18=16;
                 }
@@ -3658,7 +3736,7 @@
 
             switch (alt18) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:1313:3: this_PerspectiveSelection_0= rulePerspectiveSelection
+                    // InternalPerspectiveDsl.g:1341:3: this_PerspectiveSelection_0= rulePerspectiveSelection
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3680,7 +3758,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:1322:3: this_PerspectiveTable_1= rulePerspectiveTable
+                    // InternalPerspectiveDsl.g:1350:3: this_PerspectiveTable_1= rulePerspectiveTable
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3702,7 +3780,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:1331:3: this_PerspectiveChart_2= rulePerspectiveChart
+                    // InternalPerspectiveDsl.g:1359:3: this_PerspectiveChart_2= rulePerspectiveChart
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3724,7 +3802,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:1340:3: this_PerspectiveReport_3= rulePerspectiveReport
+                    // InternalPerspectiveDsl.g:1368:3: this_PerspectiveReport_3= rulePerspectiveReport
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3746,7 +3824,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:1349:3: this_PerspectiveOrganization_4= rulePerspectiveOrganization
+                    // InternalPerspectiveDsl.g:1377:3: this_PerspectiveOrganization_4= rulePerspectiveOrganization
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3768,7 +3846,7 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:1358:3: this_PerspectiveTopology_5= rulePerspectiveTopology
+                    // InternalPerspectiveDsl.g:1386:3: this_PerspectiveTopology_5= rulePerspectiveTopology
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3790,7 +3868,7 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:1367:3: this_PerspectiveDialog_6= rulePerspectiveDialog
+                    // InternalPerspectiveDsl.g:1395:3: this_PerspectiveDialog_6= rulePerspectiveDialog
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3812,7 +3890,7 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:1376:3: this_PerspectiveGrid_7= rulePerspectiveGrid
+                    // InternalPerspectiveDsl.g:1404:3: this_PerspectiveGrid_7= rulePerspectiveGrid
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3834,7 +3912,7 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:1385:3: this_PerspectiveWelcome_8= rulePerspectiveWelcome
+                    // InternalPerspectiveDsl.g:1413:3: this_PerspectiveWelcome_8= rulePerspectiveWelcome
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3856,7 +3934,7 @@
                     }
                     break;
                 case 10 :
-                    // InternalPerspectiveDsl.g:1394:3: this_PerspectiveSearch_9= rulePerspectiveSearch
+                    // InternalPerspectiveDsl.g:1422:3: this_PerspectiveSearch_9= rulePerspectiveSearch
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3878,7 +3956,7 @@
                     }
                     break;
                 case 11 :
-                    // InternalPerspectiveDsl.g:1403:3: this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange
+                    // InternalPerspectiveDsl.g:1431:3: this_PerspectiveDataInterchange_10= rulePerspectiveDataInterchange
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3900,7 +3978,7 @@
                     }
                     break;
                 case 12 :
-                    // InternalPerspectiveDsl.g:1412:3: this_PerspectiveBPMN_11= rulePerspectiveBPMN
+                    // InternalPerspectiveDsl.g:1440:3: this_PerspectiveBPMN_11= rulePerspectiveBPMN
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3922,7 +4000,7 @@
                     }
                     break;
                 case 13 :
-                    // InternalPerspectiveDsl.g:1421:3: this_PerspectiveKanban_12= rulePerspectiveKanban
+                    // InternalPerspectiveDsl.g:1449:3: this_PerspectiveKanban_12= rulePerspectiveKanban
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3944,7 +4022,7 @@
                     }
                     break;
                 case 14 :
-                    // InternalPerspectiveDsl.g:1430:3: this_PerspectiveTitle_13= rulePerspectiveTitle
+                    // InternalPerspectiveDsl.g:1458:3: this_PerspectiveTitle_13= rulePerspectiveTitle
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3966,7 +4044,7 @@
                     }
                     break;
                 case 15 :
-                    // InternalPerspectiveDsl.g:1439:3: this_PerspectiveDashboard_14= rulePerspectiveDashboard
+                    // InternalPerspectiveDsl.g:1467:3: this_PerspectiveDashboard_14= rulePerspectiveDashboard
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3988,7 +4066,7 @@
                     }
                     break;
                 case 16 :
-                    // InternalPerspectiveDsl.g:1448:3: this_PerspectiveBrowser_15= rulePerspectiveBrowser
+                    // InternalPerspectiveDsl.g:1476:3: this_PerspectiveBrowser_15= rulePerspectiveBrowser
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4034,7 +4112,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveSelection"
-    // InternalPerspectiveDsl.g:1460:1: entryRulePerspectiveSelection returns [EObject current=null] : iv_rulePerspectiveSelection= rulePerspectiveSelection EOF ;
+    // InternalPerspectiveDsl.g:1488:1: entryRulePerspectiveSelection returns [EObject current=null] : iv_rulePerspectiveSelection= rulePerspectiveSelection EOF ;
     public final EObject entryRulePerspectiveSelection() throws RecognitionException {
         EObject current = null;
 
@@ -4042,8 +4120,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1460:61: (iv_rulePerspectiveSelection= rulePerspectiveSelection EOF )
-            // InternalPerspectiveDsl.g:1461:2: iv_rulePerspectiveSelection= rulePerspectiveSelection EOF
+            // InternalPerspectiveDsl.g:1488:61: (iv_rulePerspectiveSelection= rulePerspectiveSelection EOF )
+            // InternalPerspectiveDsl.g:1489:2: iv_rulePerspectiveSelection= rulePerspectiveSelection EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveSelectionRule()); 
@@ -4074,7 +4152,7 @@
 
 
     // $ANTLR start "rulePerspectiveSelection"
-    // InternalPerspectiveDsl.g:1467:1: rulePerspectiveSelection returns [EObject current=null] : ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1495:1: rulePerspectiveSelection returns [EObject current=null] : ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveSelection() throws RecognitionException {
         EObject current = null;
 
@@ -4085,14 +4163,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1473:2: ( ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1474:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1501:2: ( ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1502:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1474:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1475:3: () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1502:2: ( () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1503:3: () otherlv_1= 'select' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1475:3: ()
-            // InternalPerspectiveDsl.g:1476:4: 
+            // InternalPerspectiveDsl.g:1503:3: ()
+            // InternalPerspectiveDsl.g:1504:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4104,17 +4182,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,34,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,36,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveSelectionAccess().getSelectKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1486:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1487:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1514:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1515:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1487:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1488:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1515:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1516:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4160,7 +4238,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveTable"
-    // InternalPerspectiveDsl.g:1503:1: entryRulePerspectiveTable returns [EObject current=null] : iv_rulePerspectiveTable= rulePerspectiveTable EOF ;
+    // InternalPerspectiveDsl.g:1531:1: entryRulePerspectiveTable returns [EObject current=null] : iv_rulePerspectiveTable= rulePerspectiveTable EOF ;
     public final EObject entryRulePerspectiveTable() throws RecognitionException {
         EObject current = null;
 
@@ -4168,8 +4246,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1503:57: (iv_rulePerspectiveTable= rulePerspectiveTable EOF )
-            // InternalPerspectiveDsl.g:1504:2: iv_rulePerspectiveTable= rulePerspectiveTable EOF
+            // InternalPerspectiveDsl.g:1531:57: (iv_rulePerspectiveTable= rulePerspectiveTable EOF )
+            // InternalPerspectiveDsl.g:1532:2: iv_rulePerspectiveTable= rulePerspectiveTable EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveTableRule()); 
@@ -4200,7 +4278,7 @@
 
 
     // $ANTLR start "rulePerspectiveTable"
-    // InternalPerspectiveDsl.g:1510:1: rulePerspectiveTable returns [EObject current=null] : ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1538:1: rulePerspectiveTable returns [EObject current=null] : ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveTable() throws RecognitionException {
         EObject current = null;
 
@@ -4211,14 +4289,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1516:2: ( ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1517:2: ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1544:2: ( ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1545:2: ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1517:2: ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1518:3: () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1545:2: ( () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1546:3: () otherlv_1= 'readOnlyTable' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1518:3: ()
-            // InternalPerspectiveDsl.g:1519:4: 
+            // InternalPerspectiveDsl.g:1546:3: ()
+            // InternalPerspectiveDsl.g:1547:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4230,17 +4308,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,35,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,37,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTableAccess().getReadOnlyTableKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1529:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1530:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1557:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1558:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1530:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1531:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1558:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1559:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4286,7 +4364,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveGrid"
-    // InternalPerspectiveDsl.g:1546:1: entryRulePerspectiveGrid returns [EObject current=null] : iv_rulePerspectiveGrid= rulePerspectiveGrid EOF ;
+    // InternalPerspectiveDsl.g:1574:1: entryRulePerspectiveGrid returns [EObject current=null] : iv_rulePerspectiveGrid= rulePerspectiveGrid EOF ;
     public final EObject entryRulePerspectiveGrid() throws RecognitionException {
         EObject current = null;
 
@@ -4294,8 +4372,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1546:56: (iv_rulePerspectiveGrid= rulePerspectiveGrid EOF )
-            // InternalPerspectiveDsl.g:1547:2: iv_rulePerspectiveGrid= rulePerspectiveGrid EOF
+            // InternalPerspectiveDsl.g:1574:56: (iv_rulePerspectiveGrid= rulePerspectiveGrid EOF )
+            // InternalPerspectiveDsl.g:1575:2: iv_rulePerspectiveGrid= rulePerspectiveGrid EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveGridRule()); 
@@ -4326,7 +4404,7 @@
 
 
     // $ANTLR start "rulePerspectiveGrid"
-    // InternalPerspectiveDsl.g:1553:1: rulePerspectiveGrid returns [EObject current=null] : ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1581:1: rulePerspectiveGrid returns [EObject current=null] : ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveGrid() throws RecognitionException {
         EObject current = null;
 
@@ -4337,14 +4415,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1559:2: ( ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1560:2: ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1587:2: ( ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1588:2: ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1560:2: ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1561:3: () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1588:2: ( () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1589:3: () otherlv_1= 'editableTable' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1561:3: ()
-            // InternalPerspectiveDsl.g:1562:4: 
+            // InternalPerspectiveDsl.g:1589:3: ()
+            // InternalPerspectiveDsl.g:1590:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4356,17 +4434,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,36,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,38,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveGridAccess().getEditableTableKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1572:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1573:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1600:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1601:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1573:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1574:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1601:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1602:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4412,7 +4490,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveChart"
-    // InternalPerspectiveDsl.g:1589:1: entryRulePerspectiveChart returns [EObject current=null] : iv_rulePerspectiveChart= rulePerspectiveChart EOF ;
+    // InternalPerspectiveDsl.g:1617:1: entryRulePerspectiveChart returns [EObject current=null] : iv_rulePerspectiveChart= rulePerspectiveChart EOF ;
     public final EObject entryRulePerspectiveChart() throws RecognitionException {
         EObject current = null;
 
@@ -4420,8 +4498,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1589:57: (iv_rulePerspectiveChart= rulePerspectiveChart EOF )
-            // InternalPerspectiveDsl.g:1590:2: iv_rulePerspectiveChart= rulePerspectiveChart EOF
+            // InternalPerspectiveDsl.g:1617:57: (iv_rulePerspectiveChart= rulePerspectiveChart EOF )
+            // InternalPerspectiveDsl.g:1618:2: iv_rulePerspectiveChart= rulePerspectiveChart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveChartRule()); 
@@ -4452,7 +4530,7 @@
 
 
     // $ANTLR start "rulePerspectiveChart"
-    // InternalPerspectiveDsl.g:1596:1: rulePerspectiveChart returns [EObject current=null] : ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1624:1: rulePerspectiveChart returns [EObject current=null] : ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveChart() throws RecognitionException {
         EObject current = null;
 
@@ -4463,14 +4541,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1602:2: ( ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1603:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1630:2: ( ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1631:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1603:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1604:3: () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1631:2: ( () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1632:3: () otherlv_1= 'chart' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1604:3: ()
-            // InternalPerspectiveDsl.g:1605:4: 
+            // InternalPerspectiveDsl.g:1632:3: ()
+            // InternalPerspectiveDsl.g:1633:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4482,17 +4560,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,37,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,39,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveChartAccess().getChartKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1615:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1616:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1643:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1644:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1616:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1617:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1644:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1645:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4538,7 +4616,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveReport"
-    // InternalPerspectiveDsl.g:1632:1: entryRulePerspectiveReport returns [EObject current=null] : iv_rulePerspectiveReport= rulePerspectiveReport EOF ;
+    // InternalPerspectiveDsl.g:1660:1: entryRulePerspectiveReport returns [EObject current=null] : iv_rulePerspectiveReport= rulePerspectiveReport EOF ;
     public final EObject entryRulePerspectiveReport() throws RecognitionException {
         EObject current = null;
 
@@ -4546,8 +4624,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1632:58: (iv_rulePerspectiveReport= rulePerspectiveReport EOF )
-            // InternalPerspectiveDsl.g:1633:2: iv_rulePerspectiveReport= rulePerspectiveReport EOF
+            // InternalPerspectiveDsl.g:1660:58: (iv_rulePerspectiveReport= rulePerspectiveReport EOF )
+            // InternalPerspectiveDsl.g:1661:2: iv_rulePerspectiveReport= rulePerspectiveReport EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveReportRule()); 
@@ -4578,7 +4656,7 @@
 
 
     // $ANTLR start "rulePerspectiveReport"
-    // InternalPerspectiveDsl.g:1639:1: rulePerspectiveReport returns [EObject current=null] : ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1667:1: rulePerspectiveReport returns [EObject current=null] : ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveReport() throws RecognitionException {
         EObject current = null;
 
@@ -4589,14 +4667,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1645:2: ( ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1646:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1673:2: ( ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1674:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1646:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1647:3: () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1674:2: ( () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1675:3: () otherlv_1= 'report' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1647:3: ()
-            // InternalPerspectiveDsl.g:1648:4: 
+            // InternalPerspectiveDsl.g:1675:3: ()
+            // InternalPerspectiveDsl.g:1676:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4608,17 +4686,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,38,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,40,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveReportAccess().getReportKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1658:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1659:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1686:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1687:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1659:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1660:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1687:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1688:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4664,7 +4742,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveOrganization"
-    // InternalPerspectiveDsl.g:1675:1: entryRulePerspectiveOrganization returns [EObject current=null] : iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF ;
+    // InternalPerspectiveDsl.g:1703:1: entryRulePerspectiveOrganization returns [EObject current=null] : iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF ;
     public final EObject entryRulePerspectiveOrganization() throws RecognitionException {
         EObject current = null;
 
@@ -4672,8 +4750,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1675:64: (iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF )
-            // InternalPerspectiveDsl.g:1676:2: iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF
+            // InternalPerspectiveDsl.g:1703:64: (iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF )
+            // InternalPerspectiveDsl.g:1704:2: iv_rulePerspectiveOrganization= rulePerspectiveOrganization EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveOrganizationRule()); 
@@ -4704,7 +4782,7 @@
 
 
     // $ANTLR start "rulePerspectiveOrganization"
-    // InternalPerspectiveDsl.g:1682:1: rulePerspectiveOrganization returns [EObject current=null] : ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1710:1: rulePerspectiveOrganization returns [EObject current=null] : ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveOrganization() throws RecognitionException {
         EObject current = null;
 
@@ -4715,14 +4793,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1688:2: ( ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1689:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1716:2: ( ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1717:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1689:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1690:3: () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1717:2: ( () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1718:3: () otherlv_1= 'organigram' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1690:3: ()
-            // InternalPerspectiveDsl.g:1691:4: 
+            // InternalPerspectiveDsl.g:1718:3: ()
+            // InternalPerspectiveDsl.g:1719:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4734,17 +4812,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,39,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,41,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveOrganizationAccess().getOrganigramKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1701:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1702:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1729:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1730:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1702:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1703:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1730:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1731:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4790,7 +4868,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveTopology"
-    // InternalPerspectiveDsl.g:1718:1: entryRulePerspectiveTopology returns [EObject current=null] : iv_rulePerspectiveTopology= rulePerspectiveTopology EOF ;
+    // InternalPerspectiveDsl.g:1746:1: entryRulePerspectiveTopology returns [EObject current=null] : iv_rulePerspectiveTopology= rulePerspectiveTopology EOF ;
     public final EObject entryRulePerspectiveTopology() throws RecognitionException {
         EObject current = null;
 
@@ -4798,8 +4876,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1718:60: (iv_rulePerspectiveTopology= rulePerspectiveTopology EOF )
-            // InternalPerspectiveDsl.g:1719:2: iv_rulePerspectiveTopology= rulePerspectiveTopology EOF
+            // InternalPerspectiveDsl.g:1746:60: (iv_rulePerspectiveTopology= rulePerspectiveTopology EOF )
+            // InternalPerspectiveDsl.g:1747:2: iv_rulePerspectiveTopology= rulePerspectiveTopology EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveTopologyRule()); 
@@ -4830,7 +4908,7 @@
 
 
     // $ANTLR start "rulePerspectiveTopology"
-    // InternalPerspectiveDsl.g:1725:1: rulePerspectiveTopology returns [EObject current=null] : ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1753:1: rulePerspectiveTopology returns [EObject current=null] : ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveTopology() throws RecognitionException {
         EObject current = null;
 
@@ -4841,14 +4919,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1731:2: ( ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1732:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1759:2: ( ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1760:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1732:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1733:3: () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1760:2: ( () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1761:3: () otherlv_1= 'topology' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1733:3: ()
-            // InternalPerspectiveDsl.g:1734:4: 
+            // InternalPerspectiveDsl.g:1761:3: ()
+            // InternalPerspectiveDsl.g:1762:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4860,17 +4938,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,40,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,42,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTopologyAccess().getTopologyKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1744:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1745:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1772:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1773:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1745:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1746:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1773:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1774:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -4916,7 +4994,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveDialog"
-    // InternalPerspectiveDsl.g:1761:1: entryRulePerspectiveDialog returns [EObject current=null] : iv_rulePerspectiveDialog= rulePerspectiveDialog EOF ;
+    // InternalPerspectiveDsl.g:1789:1: entryRulePerspectiveDialog returns [EObject current=null] : iv_rulePerspectiveDialog= rulePerspectiveDialog EOF ;
     public final EObject entryRulePerspectiveDialog() throws RecognitionException {
         EObject current = null;
 
@@ -4924,8 +5002,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1761:58: (iv_rulePerspectiveDialog= rulePerspectiveDialog EOF )
-            // InternalPerspectiveDsl.g:1762:2: iv_rulePerspectiveDialog= rulePerspectiveDialog EOF
+            // InternalPerspectiveDsl.g:1789:58: (iv_rulePerspectiveDialog= rulePerspectiveDialog EOF )
+            // InternalPerspectiveDsl.g:1790:2: iv_rulePerspectiveDialog= rulePerspectiveDialog EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveDialogRule()); 
@@ -4956,7 +5034,7 @@
 
 
     // $ANTLR start "rulePerspectiveDialog"
-    // InternalPerspectiveDsl.g:1768:1: rulePerspectiveDialog returns [EObject current=null] : ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1796:1: rulePerspectiveDialog returns [EObject current=null] : ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveDialog() throws RecognitionException {
         EObject current = null;
 
@@ -4967,14 +5045,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1774:2: ( ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1775:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1802:2: ( ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1803:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1775:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1776:3: () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1803:2: ( () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1804:3: () otherlv_1= 'dialog' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1776:3: ()
-            // InternalPerspectiveDsl.g:1777:4: 
+            // InternalPerspectiveDsl.g:1804:3: ()
+            // InternalPerspectiveDsl.g:1805:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -4986,17 +5064,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,41,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,43,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDialogAccess().getDialogKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:1787:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1788:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1815:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1816:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1788:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:1789:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:1816:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:1817:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -5042,7 +5120,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveBPMN"
-    // InternalPerspectiveDsl.g:1804:1: entryRulePerspectiveBPMN returns [EObject current=null] : iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF ;
+    // InternalPerspectiveDsl.g:1832:1: entryRulePerspectiveBPMN returns [EObject current=null] : iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF ;
     public final EObject entryRulePerspectiveBPMN() throws RecognitionException {
         EObject current = null;
 
@@ -5050,8 +5128,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1804:56: (iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF )
-            // InternalPerspectiveDsl.g:1805:2: iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF
+            // InternalPerspectiveDsl.g:1832:56: (iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF )
+            // InternalPerspectiveDsl.g:1833:2: iv_rulePerspectiveBPMN= rulePerspectiveBPMN EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveBPMNRule()); 
@@ -5082,7 +5160,7 @@
 
 
     // $ANTLR start "rulePerspectiveBPMN"
-    // InternalPerspectiveDsl.g:1811:1: rulePerspectiveBPMN returns [EObject current=null] : ( () otherlv_1= 'bpmn' ) ;
+    // InternalPerspectiveDsl.g:1839:1: rulePerspectiveBPMN returns [EObject current=null] : ( () otherlv_1= 'bpmn' ) ;
     public final EObject rulePerspectiveBPMN() throws RecognitionException {
         EObject current = null;
 
@@ -5092,14 +5170,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1817:2: ( ( () otherlv_1= 'bpmn' ) )
-            // InternalPerspectiveDsl.g:1818:2: ( () otherlv_1= 'bpmn' )
+            // InternalPerspectiveDsl.g:1845:2: ( ( () otherlv_1= 'bpmn' ) )
+            // InternalPerspectiveDsl.g:1846:2: ( () otherlv_1= 'bpmn' )
             {
-            // InternalPerspectiveDsl.g:1818:2: ( () otherlv_1= 'bpmn' )
-            // InternalPerspectiveDsl.g:1819:3: () otherlv_1= 'bpmn'
+            // InternalPerspectiveDsl.g:1846:2: ( () otherlv_1= 'bpmn' )
+            // InternalPerspectiveDsl.g:1847:3: () otherlv_1= 'bpmn'
             {
-            // InternalPerspectiveDsl.g:1819:3: ()
-            // InternalPerspectiveDsl.g:1820:4: 
+            // InternalPerspectiveDsl.g:1847:3: ()
+            // InternalPerspectiveDsl.g:1848:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -5111,7 +5189,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
+            otherlv_1=(Token)match(input,44,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBPMNAccess().getBpmnKeyword_1());
@@ -5142,7 +5220,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveKanban"
-    // InternalPerspectiveDsl.g:1834:1: entryRulePerspectiveKanban returns [EObject current=null] : iv_rulePerspectiveKanban= rulePerspectiveKanban EOF ;
+    // InternalPerspectiveDsl.g:1862:1: entryRulePerspectiveKanban returns [EObject current=null] : iv_rulePerspectiveKanban= rulePerspectiveKanban EOF ;
     public final EObject entryRulePerspectiveKanban() throws RecognitionException {
         EObject current = null;
 
@@ -5150,8 +5228,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1834:58: (iv_rulePerspectiveKanban= rulePerspectiveKanban EOF )
-            // InternalPerspectiveDsl.g:1835:2: iv_rulePerspectiveKanban= rulePerspectiveKanban EOF
+            // InternalPerspectiveDsl.g:1862:58: (iv_rulePerspectiveKanban= rulePerspectiveKanban EOF )
+            // InternalPerspectiveDsl.g:1863:2: iv_rulePerspectiveKanban= rulePerspectiveKanban EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveKanbanRule()); 
@@ -5182,7 +5260,7 @@
 
 
     // $ANTLR start "rulePerspectiveKanban"
-    // InternalPerspectiveDsl.g:1841:1: rulePerspectiveKanban returns [EObject current=null] : ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:1869:1: rulePerspectiveKanban returns [EObject current=null] : ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveKanban() throws RecognitionException {
         EObject current = null;
 
@@ -5198,14 +5276,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1847:2: ( ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:1848:2: ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1875:2: ( ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:1876:2: ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:1848:2: ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:1849:3: () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1876:2: ( () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:1877:3: () otherlv_1= 'kanban' otherlv_2= 'of' ( (otherlv_3= RULE_ID ) ) otherlv_4= 'card' ( (otherlv_5= RULE_ID ) ) otherlv_6= 'dialog' ( (otherlv_7= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:1849:3: ()
-            // InternalPerspectiveDsl.g:1850:4: 
+            // InternalPerspectiveDsl.g:1877:3: ()
+            // InternalPerspectiveDsl.g:1878:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -5217,23 +5295,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,43,FOLLOW_24); if (state.failed) return current;
+            otherlv_1=(Token)match(input,45,FOLLOW_24); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveKanbanAccess().getKanbanKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,44,FOLLOW_4); if (state.failed) return current;
+            otherlv_2=(Token)match(input,46,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getPerspectiveKanbanAccess().getOfKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:1864:3: ( (otherlv_3= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1865:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:1892:3: ( (otherlv_3= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1893:4: (otherlv_3= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1865:4: (otherlv_3= RULE_ID )
-            // InternalPerspectiveDsl.g:1866:5: otherlv_3= RULE_ID
+            // InternalPerspectiveDsl.g:1893:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:1894:5: otherlv_3= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -5254,17 +5332,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,45,FOLLOW_4); if (state.failed) return current;
+            otherlv_4=(Token)match(input,47,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getPerspectiveKanbanAccess().getCardKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:1881:3: ( (otherlv_5= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1882:4: (otherlv_5= RULE_ID )
+            // InternalPerspectiveDsl.g:1909:3: ( (otherlv_5= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1910:4: (otherlv_5= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1882:4: (otherlv_5= RULE_ID )
-            // InternalPerspectiveDsl.g:1883:5: otherlv_5= RULE_ID
+            // InternalPerspectiveDsl.g:1910:4: (otherlv_5= RULE_ID )
+            // InternalPerspectiveDsl.g:1911:5: otherlv_5= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -5285,17 +5363,17 @@
 
             }
 
-            otherlv_6=(Token)match(input,41,FOLLOW_4); if (state.failed) return current;
+            otherlv_6=(Token)match(input,43,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getPerspectiveKanbanAccess().getDialogKeyword_6());
               		
             }
-            // InternalPerspectiveDsl.g:1898:3: ( (otherlv_7= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1899:4: (otherlv_7= RULE_ID )
+            // InternalPerspectiveDsl.g:1926:3: ( (otherlv_7= RULE_ID ) )
+            // InternalPerspectiveDsl.g:1927:4: (otherlv_7= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1899:4: (otherlv_7= RULE_ID )
-            // InternalPerspectiveDsl.g:1900:5: otherlv_7= RULE_ID
+            // InternalPerspectiveDsl.g:1927:4: (otherlv_7= RULE_ID )
+            // InternalPerspectiveDsl.g:1928:5: otherlv_7= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -5341,7 +5419,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveWelcome"
-    // InternalPerspectiveDsl.g:1915:1: entryRulePerspectiveWelcome returns [EObject current=null] : iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF ;
+    // InternalPerspectiveDsl.g:1943:1: entryRulePerspectiveWelcome returns [EObject current=null] : iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF ;
     public final EObject entryRulePerspectiveWelcome() throws RecognitionException {
         EObject current = null;
 
@@ -5349,8 +5427,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1915:59: (iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF )
-            // InternalPerspectiveDsl.g:1916:2: iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF
+            // InternalPerspectiveDsl.g:1943:59: (iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF )
+            // InternalPerspectiveDsl.g:1944:2: iv_rulePerspectiveWelcome= rulePerspectiveWelcome EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveWelcomeRule()); 
@@ -5381,7 +5459,7 @@
 
 
     // $ANTLR start "rulePerspectiveWelcome"
-    // InternalPerspectiveDsl.g:1922:1: rulePerspectiveWelcome returns [EObject current=null] : ( () otherlv_1= 'welcome' ) ;
+    // InternalPerspectiveDsl.g:1950:1: rulePerspectiveWelcome returns [EObject current=null] : ( () otherlv_1= 'welcome' ) ;
     public final EObject rulePerspectiveWelcome() throws RecognitionException {
         EObject current = null;
 
@@ -5391,14 +5469,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1928:2: ( ( () otherlv_1= 'welcome' ) )
-            // InternalPerspectiveDsl.g:1929:2: ( () otherlv_1= 'welcome' )
+            // InternalPerspectiveDsl.g:1956:2: ( ( () otherlv_1= 'welcome' ) )
+            // InternalPerspectiveDsl.g:1957:2: ( () otherlv_1= 'welcome' )
             {
-            // InternalPerspectiveDsl.g:1929:2: ( () otherlv_1= 'welcome' )
-            // InternalPerspectiveDsl.g:1930:3: () otherlv_1= 'welcome'
+            // InternalPerspectiveDsl.g:1957:2: ( () otherlv_1= 'welcome' )
+            // InternalPerspectiveDsl.g:1958:3: () otherlv_1= 'welcome'
             {
-            // InternalPerspectiveDsl.g:1930:3: ()
-            // InternalPerspectiveDsl.g:1931:4: 
+            // InternalPerspectiveDsl.g:1958:3: ()
+            // InternalPerspectiveDsl.g:1959:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -5410,7 +5488,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,46,FOLLOW_2); if (state.failed) return current;
+            otherlv_1=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveWelcomeAccess().getWelcomeKeyword_1());
@@ -5441,7 +5519,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveSearch"
-    // InternalPerspectiveDsl.g:1945:1: entryRulePerspectiveSearch returns [EObject current=null] : iv_rulePerspectiveSearch= rulePerspectiveSearch EOF ;
+    // InternalPerspectiveDsl.g:1973:1: entryRulePerspectiveSearch returns [EObject current=null] : iv_rulePerspectiveSearch= rulePerspectiveSearch EOF ;
     public final EObject entryRulePerspectiveSearch() throws RecognitionException {
         EObject current = null;
 
@@ -5449,8 +5527,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:1945:58: (iv_rulePerspectiveSearch= rulePerspectiveSearch EOF )
-            // InternalPerspectiveDsl.g:1946:2: iv_rulePerspectiveSearch= rulePerspectiveSearch EOF
+            // InternalPerspectiveDsl.g:1973:58: (iv_rulePerspectiveSearch= rulePerspectiveSearch EOF )
+            // InternalPerspectiveDsl.g:1974:2: iv_rulePerspectiveSearch= rulePerspectiveSearch EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveSearchRule()); 
@@ -5481,7 +5559,7 @@
 
 
     // $ANTLR start "rulePerspectiveSearch"
-    // InternalPerspectiveDsl.g:1952:1: rulePerspectiveSearch returns [EObject current=null] : ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) ) ;
+    // InternalPerspectiveDsl.g:1980:1: rulePerspectiveSearch returns [EObject current=null] : ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) ) ;
     public final EObject rulePerspectiveSearch() throws RecognitionException {
         EObject current = null;
 
@@ -5497,14 +5575,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:1958:2: ( ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) ) )
-            // InternalPerspectiveDsl.g:1959:2: ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) )
+            // InternalPerspectiveDsl.g:1986:2: ( ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) ) )
+            // InternalPerspectiveDsl.g:1987:2: ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) )
             {
-            // InternalPerspectiveDsl.g:1959:2: ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) )
-            // InternalPerspectiveDsl.g:1960:3: () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:1987:2: ( () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) ) )
+            // InternalPerspectiveDsl.g:1988:3: () otherlv_1= 'search' otherlv_2= 'in' ( (otherlv_3= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) )
             {
-            // InternalPerspectiveDsl.g:1960:3: ()
-            // InternalPerspectiveDsl.g:1961:4: 
+            // InternalPerspectiveDsl.g:1988:3: ()
+            // InternalPerspectiveDsl.g:1989:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -5516,23 +5594,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,47,FOLLOW_27); if (state.failed) return current;
+            otherlv_1=(Token)match(input,49,FOLLOW_27); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveSearchAccess().getSearchKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,48,FOLLOW_4); if (state.failed) return current;
+            otherlv_2=(Token)match(input,50,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getPerspectiveSearchAccess().getInKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:1975:3: ( (otherlv_3= RULE_ID ) )
-            // InternalPerspectiveDsl.g:1976:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:2003:3: ( (otherlv_3= RULE_ID ) )
+            // InternalPerspectiveDsl.g:2004:4: (otherlv_3= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:1976:4: (otherlv_3= RULE_ID )
-            // InternalPerspectiveDsl.g:1977:5: otherlv_3= RULE_ID
+            // InternalPerspectiveDsl.g:2004:4: (otherlv_3= RULE_ID )
+            // InternalPerspectiveDsl.g:2005:5: otherlv_3= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -5553,66 +5631,66 @@
 
             }
 
-            // InternalPerspectiveDsl.g:1988:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) )
-            // InternalPerspectiveDsl.g:1989:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:2016:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) ) )
+            // InternalPerspectiveDsl.g:2017:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
             {
-            // InternalPerspectiveDsl.g:1989:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
-            // InternalPerspectiveDsl.g:1990:5: ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:2017:4: ( ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:2018:5: ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4());
-            // InternalPerspectiveDsl.g:1993:5: ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* )
-            // InternalPerspectiveDsl.g:1994:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:2021:5: ( ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )* )
+            // InternalPerspectiveDsl.g:2022:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
             {
-            // InternalPerspectiveDsl.g:1994:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
+            // InternalPerspectiveDsl.g:2022:6: ( ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) ) )*
             loop19:
             do {
                 int alt19=3;
                 int LA19_0 = input.LA(1);
 
-                if ( LA19_0 == 49 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
+                if ( LA19_0 == 51 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
                     alt19=1;
                 }
-                else if ( LA19_0 == 50 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
+                else if ( LA19_0 == 52 && getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
                     alt19=2;
                 }
 
 
                 switch (alt19) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:1995:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:2023:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:1995:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1996:5: {...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:2023:4: ({...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:2024:5: {...}? => ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSearch", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0)");
             	    }
-            	    // InternalPerspectiveDsl.g:1996:114: ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:1997:6: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:2024:114: ( ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:2025:6: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 0);
-            	    // InternalPerspectiveDsl.g:2000:9: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
-            	    // InternalPerspectiveDsl.g:2000:10: {...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:2028:9: ({...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:2028:10: {...}? => (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSearch", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:2000:19: (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) )
-            	    // InternalPerspectiveDsl.g:2000:20: otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:2028:19: (otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:2028:20: otherlv_5= 'depth' ( (lv_depth_6_0= RULE_INT ) )
             	    {
-            	    otherlv_5=(Token)match(input,49,FOLLOW_29); if (state.failed) return current;
+            	    otherlv_5=(Token)match(input,51,FOLLOW_29); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      									newLeafNode(otherlv_5, grammarAccess.getPerspectiveSearchAccess().getDepthKeyword_4_0_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:2004:9: ( (lv_depth_6_0= RULE_INT ) )
-            	    // InternalPerspectiveDsl.g:2005:10: (lv_depth_6_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:2032:9: ( (lv_depth_6_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:2033:10: (lv_depth_6_0= RULE_INT )
             	    {
-            	    // InternalPerspectiveDsl.g:2005:10: (lv_depth_6_0= RULE_INT )
-            	    // InternalPerspectiveDsl.g:2006:11: lv_depth_6_0= RULE_INT
+            	    // InternalPerspectiveDsl.g:2033:10: (lv_depth_6_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:2034:11: lv_depth_6_0= RULE_INT
             	    {
             	    lv_depth_6_0=(Token)match(input,RULE_INT,FOLLOW_28); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -5655,40 +5733,40 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalPerspectiveDsl.g:2028:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:2056:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:2028:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:2029:5: {...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:2056:4: ({...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:2057:5: {...}? => ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSearch", "getUnorderedGroupHelper().canSelect(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1)");
             	    }
-            	    // InternalPerspectiveDsl.g:2029:114: ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:2030:6: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:2057:114: ( ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:2058:6: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getPerspectiveSearchAccess().getUnorderedGroup_4(), 1);
-            	    // InternalPerspectiveDsl.g:2033:9: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
-            	    // InternalPerspectiveDsl.g:2033:10: {...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:2061:9: ({...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) ) )
+            	    // InternalPerspectiveDsl.g:2061:10: {...}? => (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "rulePerspectiveSearch", "true");
             	    }
-            	    // InternalPerspectiveDsl.g:2033:19: (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) )
-            	    // InternalPerspectiveDsl.g:2033:20: otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:2061:19: (otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) ) )
+            	    // InternalPerspectiveDsl.g:2061:20: otherlv_7= 'filterColumns' ( (lv_filterCols_8_0= RULE_INT ) )
             	    {
-            	    otherlv_7=(Token)match(input,50,FOLLOW_29); if (state.failed) return current;
+            	    otherlv_7=(Token)match(input,52,FOLLOW_29); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      									newLeafNode(otherlv_7, grammarAccess.getPerspectiveSearchAccess().getFilterColumnsKeyword_4_1_0());
             	      								
             	    }
-            	    // InternalPerspectiveDsl.g:2037:9: ( (lv_filterCols_8_0= RULE_INT ) )
-            	    // InternalPerspectiveDsl.g:2038:10: (lv_filterCols_8_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:2065:9: ( (lv_filterCols_8_0= RULE_INT ) )
+            	    // InternalPerspectiveDsl.g:2066:10: (lv_filterCols_8_0= RULE_INT )
             	    {
-            	    // InternalPerspectiveDsl.g:2038:10: (lv_filterCols_8_0= RULE_INT )
-            	    // InternalPerspectiveDsl.g:2039:11: lv_filterCols_8_0= RULE_INT
+            	    // InternalPerspectiveDsl.g:2066:10: (lv_filterCols_8_0= RULE_INT )
+            	    // InternalPerspectiveDsl.g:2067:11: lv_filterCols_8_0= RULE_INT
             	    {
             	    lv_filterCols_8_0=(Token)match(input,RULE_INT,FOLLOW_28); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -5771,7 +5849,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveDataInterchange"
-    // InternalPerspectiveDsl.g:2072:1: entryRulePerspectiveDataInterchange returns [EObject current=null] : iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF ;
+    // InternalPerspectiveDsl.g:2100:1: entryRulePerspectiveDataInterchange returns [EObject current=null] : iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF ;
     public final EObject entryRulePerspectiveDataInterchange() throws RecognitionException {
         EObject current = null;
 
@@ -5779,8 +5857,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2072:67: (iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF )
-            // InternalPerspectiveDsl.g:2073:2: iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF
+            // InternalPerspectiveDsl.g:2100:67: (iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF )
+            // InternalPerspectiveDsl.g:2101:2: iv_rulePerspectiveDataInterchange= rulePerspectiveDataInterchange EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveDataInterchangeRule()); 
@@ -5811,7 +5889,7 @@
 
 
     // $ANTLR start "rulePerspectiveDataInterchange"
-    // InternalPerspectiveDsl.g:2079:1: rulePerspectiveDataInterchange returns [EObject current=null] : ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalPerspectiveDsl.g:2107:1: rulePerspectiveDataInterchange returns [EObject current=null] : ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject rulePerspectiveDataInterchange() throws RecognitionException {
         EObject current = null;
 
@@ -5822,14 +5900,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2085:2: ( ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) )
-            // InternalPerspectiveDsl.g:2086:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:2113:2: ( ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalPerspectiveDsl.g:2114:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
             {
-            // InternalPerspectiveDsl.g:2086:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
-            // InternalPerspectiveDsl.g:2087:3: () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:2114:2: ( () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) ) )
+            // InternalPerspectiveDsl.g:2115:3: () otherlv_1= 'dataInterchange' ( (otherlv_2= RULE_ID ) )
             {
-            // InternalPerspectiveDsl.g:2087:3: ()
-            // InternalPerspectiveDsl.g:2088:4: 
+            // InternalPerspectiveDsl.g:2115:3: ()
+            // InternalPerspectiveDsl.g:2116:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -5841,17 +5919,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,51,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,53,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDataInterchangeAccess().getDataInterchangeKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:2098:3: ( (otherlv_2= RULE_ID ) )
-            // InternalPerspectiveDsl.g:2099:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:2126:3: ( (otherlv_2= RULE_ID ) )
+            // InternalPerspectiveDsl.g:2127:4: (otherlv_2= RULE_ID )
             {
-            // InternalPerspectiveDsl.g:2099:4: (otherlv_2= RULE_ID )
-            // InternalPerspectiveDsl.g:2100:5: otherlv_2= RULE_ID
+            // InternalPerspectiveDsl.g:2127:4: (otherlv_2= RULE_ID )
+            // InternalPerspectiveDsl.g:2128:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -5897,7 +5975,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveTitle"
-    // InternalPerspectiveDsl.g:2115:1: entryRulePerspectiveTitle returns [EObject current=null] : iv_rulePerspectiveTitle= rulePerspectiveTitle EOF ;
+    // InternalPerspectiveDsl.g:2143:1: entryRulePerspectiveTitle returns [EObject current=null] : iv_rulePerspectiveTitle= rulePerspectiveTitle EOF ;
     public final EObject entryRulePerspectiveTitle() throws RecognitionException {
         EObject current = null;
 
@@ -5905,8 +5983,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2115:57: (iv_rulePerspectiveTitle= rulePerspectiveTitle EOF )
-            // InternalPerspectiveDsl.g:2116:2: iv_rulePerspectiveTitle= rulePerspectiveTitle EOF
+            // InternalPerspectiveDsl.g:2143:57: (iv_rulePerspectiveTitle= rulePerspectiveTitle EOF )
+            // InternalPerspectiveDsl.g:2144:2: iv_rulePerspectiveTitle= rulePerspectiveTitle EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveTitleRule()); 
@@ -5937,7 +6015,7 @@
 
 
     // $ANTLR start "rulePerspectiveTitle"
-    // InternalPerspectiveDsl.g:2122:1: rulePerspectiveTitle returns [EObject current=null] : ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) ) ;
+    // InternalPerspectiveDsl.g:2150:1: rulePerspectiveTitle returns [EObject current=null] : ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) ) ;
     public final EObject rulePerspectiveTitle() throws RecognitionException {
         EObject current = null;
 
@@ -5948,14 +6026,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2128:2: ( ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) ) )
-            // InternalPerspectiveDsl.g:2129:2: ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:2156:2: ( ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) ) )
+            // InternalPerspectiveDsl.g:2157:2: ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) )
             {
-            // InternalPerspectiveDsl.g:2129:2: ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) )
-            // InternalPerspectiveDsl.g:2130:3: () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:2157:2: ( () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:2158:3: () otherlv_1= 'title' ( (lv_htmlName_2_0= RULE_STRING ) )
             {
-            // InternalPerspectiveDsl.g:2130:3: ()
-            // InternalPerspectiveDsl.g:2131:4: 
+            // InternalPerspectiveDsl.g:2158:3: ()
+            // InternalPerspectiveDsl.g:2159:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -5967,17 +6045,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,52,FOLLOW_8); if (state.failed) return current;
+            otherlv_1=(Token)match(input,54,FOLLOW_8); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveTitleAccess().getTitleKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:2141:3: ( (lv_htmlName_2_0= RULE_STRING ) )
-            // InternalPerspectiveDsl.g:2142:4: (lv_htmlName_2_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2169:3: ( (lv_htmlName_2_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:2170:4: (lv_htmlName_2_0= RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:2142:4: (lv_htmlName_2_0= RULE_STRING )
-            // InternalPerspectiveDsl.g:2143:5: lv_htmlName_2_0= RULE_STRING
+            // InternalPerspectiveDsl.g:2170:4: (lv_htmlName_2_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2171:5: lv_htmlName_2_0= RULE_STRING
             {
             lv_htmlName_2_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -6028,7 +6106,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveDashboard"
-    // InternalPerspectiveDsl.g:2163:1: entryRulePerspectiveDashboard returns [EObject current=null] : iv_rulePerspectiveDashboard= rulePerspectiveDashboard EOF ;
+    // InternalPerspectiveDsl.g:2191:1: entryRulePerspectiveDashboard returns [EObject current=null] : iv_rulePerspectiveDashboard= rulePerspectiveDashboard EOF ;
     public final EObject entryRulePerspectiveDashboard() throws RecognitionException {
         EObject current = null;
 
@@ -6036,8 +6114,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2163:61: (iv_rulePerspectiveDashboard= rulePerspectiveDashboard EOF )
-            // InternalPerspectiveDsl.g:2164:2: iv_rulePerspectiveDashboard= rulePerspectiveDashboard EOF
+            // InternalPerspectiveDsl.g:2191:61: (iv_rulePerspectiveDashboard= rulePerspectiveDashboard EOF )
+            // InternalPerspectiveDsl.g:2192:2: iv_rulePerspectiveDashboard= rulePerspectiveDashboard EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveDashboardRule()); 
@@ -6068,7 +6146,7 @@
 
 
     // $ANTLR start "rulePerspectiveDashboard"
-    // InternalPerspectiveDsl.g:2170:1: rulePerspectiveDashboard returns [EObject current=null] : ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) ) ;
+    // InternalPerspectiveDsl.g:2198:1: rulePerspectiveDashboard returns [EObject current=null] : ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) ) ;
     public final EObject rulePerspectiveDashboard() throws RecognitionException {
         EObject current = null;
 
@@ -6079,14 +6157,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2176:2: ( ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) ) )
-            // InternalPerspectiveDsl.g:2177:2: ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:2204:2: ( ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) ) )
+            // InternalPerspectiveDsl.g:2205:2: ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) )
             {
-            // InternalPerspectiveDsl.g:2177:2: ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) )
-            // InternalPerspectiveDsl.g:2178:3: () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:2205:2: ( () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:2206:3: () otherlv_1= 'name' ( (lv_name_2_0= RULE_STRING ) )
             {
-            // InternalPerspectiveDsl.g:2178:3: ()
-            // InternalPerspectiveDsl.g:2179:4: 
+            // InternalPerspectiveDsl.g:2206:3: ()
+            // InternalPerspectiveDsl.g:2207:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -6098,17 +6176,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,53,FOLLOW_8); if (state.failed) return current;
+            otherlv_1=(Token)match(input,55,FOLLOW_8); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveDashboardAccess().getNameKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:2189:3: ( (lv_name_2_0= RULE_STRING ) )
-            // InternalPerspectiveDsl.g:2190:4: (lv_name_2_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2217:3: ( (lv_name_2_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:2218:4: (lv_name_2_0= RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:2190:4: (lv_name_2_0= RULE_STRING )
-            // InternalPerspectiveDsl.g:2191:5: lv_name_2_0= RULE_STRING
+            // InternalPerspectiveDsl.g:2218:4: (lv_name_2_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2219:5: lv_name_2_0= RULE_STRING
             {
             lv_name_2_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -6159,7 +6237,7 @@
 
 
     // $ANTLR start "entryRulePerspectiveBrowser"
-    // InternalPerspectiveDsl.g:2211:1: entryRulePerspectiveBrowser returns [EObject current=null] : iv_rulePerspectiveBrowser= rulePerspectiveBrowser EOF ;
+    // InternalPerspectiveDsl.g:2239:1: entryRulePerspectiveBrowser returns [EObject current=null] : iv_rulePerspectiveBrowser= rulePerspectiveBrowser EOF ;
     public final EObject entryRulePerspectiveBrowser() throws RecognitionException {
         EObject current = null;
 
@@ -6167,8 +6245,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2211:59: (iv_rulePerspectiveBrowser= rulePerspectiveBrowser EOF )
-            // InternalPerspectiveDsl.g:2212:2: iv_rulePerspectiveBrowser= rulePerspectiveBrowser EOF
+            // InternalPerspectiveDsl.g:2239:59: (iv_rulePerspectiveBrowser= rulePerspectiveBrowser EOF )
+            // InternalPerspectiveDsl.g:2240:2: iv_rulePerspectiveBrowser= rulePerspectiveBrowser EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getPerspectiveBrowserRule()); 
@@ -6199,7 +6277,7 @@
 
 
     // $ANTLR start "rulePerspectiveBrowser"
-    // InternalPerspectiveDsl.g:2218:1: rulePerspectiveBrowser returns [EObject current=null] : ( () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) ) ) ;
+    // InternalPerspectiveDsl.g:2246:1: rulePerspectiveBrowser returns [EObject current=null] : ( () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) ) ) ;
     public final EObject rulePerspectiveBrowser() throws RecognitionException {
         EObject current = null;
 
@@ -6211,14 +6289,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2224:2: ( ( () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) ) ) )
-            // InternalPerspectiveDsl.g:2225:2: ( () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:2252:2: ( ( () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) ) ) )
+            // InternalPerspectiveDsl.g:2253:2: ( () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) ) )
             {
-            // InternalPerspectiveDsl.g:2225:2: ( () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) ) )
-            // InternalPerspectiveDsl.g:2226:3: () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:2253:2: ( () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:2254:3: () otherlv_1= 'browser' otherlv_2= 'url' ( (lv_url_3_0= RULE_STRING ) )
             {
-            // InternalPerspectiveDsl.g:2226:3: ()
-            // InternalPerspectiveDsl.g:2227:4: 
+            // InternalPerspectiveDsl.g:2254:3: ()
+            // InternalPerspectiveDsl.g:2255:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -6230,23 +6308,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,54,FOLLOW_30); if (state.failed) return current;
+            otherlv_1=(Token)match(input,56,FOLLOW_30); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getPerspectiveBrowserAccess().getBrowserKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,55,FOLLOW_8); if (state.failed) return current;
+            otherlv_2=(Token)match(input,57,FOLLOW_8); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getPerspectiveBrowserAccess().getUrlKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:2241:3: ( (lv_url_3_0= RULE_STRING ) )
-            // InternalPerspectiveDsl.g:2242:4: (lv_url_3_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2269:3: ( (lv_url_3_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:2270:4: (lv_url_3_0= RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:2242:4: (lv_url_3_0= RULE_STRING )
-            // InternalPerspectiveDsl.g:2243:5: lv_url_3_0= RULE_STRING
+            // InternalPerspectiveDsl.g:2270:4: (lv_url_3_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2271:5: lv_url_3_0= RULE_STRING
             {
             lv_url_3_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -6297,7 +6375,7 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // InternalPerspectiveDsl.g:2263:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    // InternalPerspectiveDsl.g:2291:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
     public final String entryRuleTRANSLATABLEID() throws RecognitionException {
         String current = null;
 
@@ -6305,8 +6383,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2263:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
-            // InternalPerspectiveDsl.g:2264:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
+            // InternalPerspectiveDsl.g:2291:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // InternalPerspectiveDsl.g:2292:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
@@ -6337,7 +6415,7 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // InternalPerspectiveDsl.g:2270:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalPerspectiveDsl.g:2298:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
     public final AntlrDatatypeRuleToken ruleTRANSLATABLEID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -6347,8 +6425,8 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2276:2: (this_ID_0= RULE_ID )
-            // InternalPerspectiveDsl.g:2277:2: this_ID_0= RULE_ID
+            // InternalPerspectiveDsl.g:2304:2: (this_ID_0= RULE_ID )
+            // InternalPerspectiveDsl.g:2305:2: this_ID_0= RULE_ID
             {
             this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -6383,7 +6461,7 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLESTRING"
-    // InternalPerspectiveDsl.g:2287:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
+    // InternalPerspectiveDsl.g:2315:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
     public final String entryRuleTRANSLATABLESTRING() throws RecognitionException {
         String current = null;
 
@@ -6391,8 +6469,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2287:58: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
-            // InternalPerspectiveDsl.g:2288:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
+            // InternalPerspectiveDsl.g:2315:58: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
+            // InternalPerspectiveDsl.g:2316:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); 
@@ -6423,7 +6501,7 @@
 
 
     // $ANTLR start "ruleTRANSLATABLESTRING"
-    // InternalPerspectiveDsl.g:2294:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
+    // InternalPerspectiveDsl.g:2322:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
     public final AntlrDatatypeRuleToken ruleTRANSLATABLESTRING() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -6433,8 +6511,8 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2300:2: (this_STRING_0= RULE_STRING )
-            // InternalPerspectiveDsl.g:2301:2: this_STRING_0= RULE_STRING
+            // InternalPerspectiveDsl.g:2328:2: (this_STRING_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:2329:2: this_STRING_0= RULE_STRING
             {
             this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -6469,7 +6547,7 @@
 
 
     // $ANTLR start "entryRuleXImportDeclaration"
-    // InternalPerspectiveDsl.g:2311:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+    // InternalPerspectiveDsl.g:2339:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
     public final EObject entryRuleXImportDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -6477,8 +6555,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2311:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
-            // InternalPerspectiveDsl.g:2312:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
+            // InternalPerspectiveDsl.g:2339:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+            // InternalPerspectiveDsl.g:2340:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXImportDeclarationRule()); 
@@ -6509,7 +6587,7 @@
 
 
     // $ANTLR start "ruleXImportDeclaration"
-    // InternalPerspectiveDsl.g:2318:1: ruleXImportDeclaration returns [EObject current=null] : ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) ;
+    // InternalPerspectiveDsl.g:2346:1: ruleXImportDeclaration returns [EObject current=null] : ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) ;
     public final EObject ruleXImportDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -6530,14 +6608,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2324:2: ( ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) )
-            // InternalPerspectiveDsl.g:2325:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
+            // InternalPerspectiveDsl.g:2352:2: ( ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) )
+            // InternalPerspectiveDsl.g:2353:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
             {
-            // InternalPerspectiveDsl.g:2325:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
-            // InternalPerspectiveDsl.g:2326:3: () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )?
+            // InternalPerspectiveDsl.g:2353:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
+            // InternalPerspectiveDsl.g:2354:3: () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )?
             {
-            // InternalPerspectiveDsl.g:2326:3: ()
-            // InternalPerspectiveDsl.g:2327:4: 
+            // InternalPerspectiveDsl.g:2354:3: ()
+            // InternalPerspectiveDsl.g:2355:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -6549,29 +6627,29 @@
 
             }
 
-            otherlv_1=(Token)match(input,56,FOLLOW_31); if (state.failed) return current;
+            otherlv_1=(Token)match(input,58,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:2337:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )
+            // InternalPerspectiveDsl.g:2365:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )
             int alt22=4;
             alt22 = dfa22.predict(input);
             switch (alt22) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2338:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:2366:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:2338:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
-                    // InternalPerspectiveDsl.g:2339:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    // InternalPerspectiveDsl.g:2366:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:2367:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
                     {
-                    // InternalPerspectiveDsl.g:2339:5: ( (lv_static_2_0= 'static' ) )
-                    // InternalPerspectiveDsl.g:2340:6: (lv_static_2_0= 'static' )
+                    // InternalPerspectiveDsl.g:2367:5: ( (lv_static_2_0= 'static' ) )
+                    // InternalPerspectiveDsl.g:2368:6: (lv_static_2_0= 'static' )
                     {
-                    // InternalPerspectiveDsl.g:2340:6: (lv_static_2_0= 'static' )
-                    // InternalPerspectiveDsl.g:2341:7: lv_static_2_0= 'static'
+                    // InternalPerspectiveDsl.g:2368:6: (lv_static_2_0= 'static' )
+                    // InternalPerspectiveDsl.g:2369:7: lv_static_2_0= 'static'
                     {
-                    lv_static_2_0=(Token)match(input,57,FOLLOW_32); if (state.failed) return current;
+                    lv_static_2_0=(Token)match(input,59,FOLLOW_32); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_static_2_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0());
@@ -6591,21 +6669,21 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2353:5: ( (lv_extension_3_0= 'extension' ) )?
+                    // InternalPerspectiveDsl.g:2381:5: ( (lv_extension_3_0= 'extension' ) )?
                     int alt20=2;
                     int LA20_0 = input.LA(1);
 
-                    if ( (LA20_0==58) ) {
+                    if ( (LA20_0==60) ) {
                         alt20=1;
                     }
                     switch (alt20) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2354:6: (lv_extension_3_0= 'extension' )
+                            // InternalPerspectiveDsl.g:2382:6: (lv_extension_3_0= 'extension' )
                             {
-                            // InternalPerspectiveDsl.g:2354:6: (lv_extension_3_0= 'extension' )
-                            // InternalPerspectiveDsl.g:2355:7: lv_extension_3_0= 'extension'
+                            // InternalPerspectiveDsl.g:2382:6: (lv_extension_3_0= 'extension' )
+                            // InternalPerspectiveDsl.g:2383:7: lv_extension_3_0= 'extension'
                             {
-                            lv_extension_3_0=(Token)match(input,58,FOLLOW_32); if (state.failed) return current;
+                            lv_extension_3_0=(Token)match(input,60,FOLLOW_32); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(lv_extension_3_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0());
@@ -6628,11 +6706,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2367:5: ( ( ruleQualifiedNameInStaticImport ) )
-                    // InternalPerspectiveDsl.g:2368:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalPerspectiveDsl.g:2395:5: ( ( ruleQualifiedNameInStaticImport ) )
+                    // InternalPerspectiveDsl.g:2396:6: ( ruleQualifiedNameInStaticImport )
                     {
-                    // InternalPerspectiveDsl.g:2368:6: ( ruleQualifiedNameInStaticImport )
-                    // InternalPerspectiveDsl.g:2369:7: ruleQualifiedNameInStaticImport
+                    // InternalPerspectiveDsl.g:2396:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalPerspectiveDsl.g:2397:7: ruleQualifiedNameInStaticImport
                     {
                     if ( state.backtracking==0 ) {
 
@@ -6662,11 +6740,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2383:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    // InternalPerspectiveDsl.g:2411:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
                     int alt21=2;
                     int LA21_0 = input.LA(1);
 
-                    if ( (LA21_0==59) ) {
+                    if ( (LA21_0==61) ) {
                         alt21=1;
                     }
                     else if ( (LA21_0==RULE_ID) ) {
@@ -6681,15 +6759,15 @@
                     }
                     switch (alt21) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2384:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalPerspectiveDsl.g:2412:6: ( (lv_wildcard_5_0= '*' ) )
                             {
-                            // InternalPerspectiveDsl.g:2384:6: ( (lv_wildcard_5_0= '*' ) )
-                            // InternalPerspectiveDsl.g:2385:7: (lv_wildcard_5_0= '*' )
+                            // InternalPerspectiveDsl.g:2412:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalPerspectiveDsl.g:2413:7: (lv_wildcard_5_0= '*' )
                             {
-                            // InternalPerspectiveDsl.g:2385:7: (lv_wildcard_5_0= '*' )
-                            // InternalPerspectiveDsl.g:2386:8: lv_wildcard_5_0= '*'
+                            // InternalPerspectiveDsl.g:2413:7: (lv_wildcard_5_0= '*' )
+                            // InternalPerspectiveDsl.g:2414:8: lv_wildcard_5_0= '*'
                             {
-                            lv_wildcard_5_0=(Token)match(input,59,FOLLOW_34); if (state.failed) return current;
+                            lv_wildcard_5_0=(Token)match(input,61,FOLLOW_34); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               								newLeafNode(lv_wildcard_5_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0());
@@ -6713,13 +6791,13 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:2399:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalPerspectiveDsl.g:2427:6: ( (lv_memberName_6_0= ruleValidID ) )
                             {
-                            // InternalPerspectiveDsl.g:2399:6: ( (lv_memberName_6_0= ruleValidID ) )
-                            // InternalPerspectiveDsl.g:2400:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalPerspectiveDsl.g:2427:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalPerspectiveDsl.g:2428:7: (lv_memberName_6_0= ruleValidID )
                             {
-                            // InternalPerspectiveDsl.g:2400:7: (lv_memberName_6_0= ruleValidID )
-                            // InternalPerspectiveDsl.g:2401:8: lv_memberName_6_0= ruleValidID
+                            // InternalPerspectiveDsl.g:2428:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalPerspectiveDsl.g:2429:8: lv_memberName_6_0= ruleValidID
                             {
                             if ( state.backtracking==0 ) {
 
@@ -6763,13 +6841,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2421:4: ( ( ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2449:4: ( ( ruleQualifiedName ) )
                     {
-                    // InternalPerspectiveDsl.g:2421:4: ( ( ruleQualifiedName ) )
-                    // InternalPerspectiveDsl.g:2422:5: ( ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2449:4: ( ( ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2450:5: ( ruleQualifiedName )
                     {
-                    // InternalPerspectiveDsl.g:2422:5: ( ruleQualifiedName )
-                    // InternalPerspectiveDsl.g:2423:6: ruleQualifiedName
+                    // InternalPerspectiveDsl.g:2450:5: ( ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2451:6: ruleQualifiedName
                     {
                     if ( state.backtracking==0 ) {
 
@@ -6803,13 +6881,13 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:2438:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalPerspectiveDsl.g:2466:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
                     {
-                    // InternalPerspectiveDsl.g:2438:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
-                    // InternalPerspectiveDsl.g:2439:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalPerspectiveDsl.g:2466:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalPerspectiveDsl.g:2467:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
                     {
-                    // InternalPerspectiveDsl.g:2439:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
-                    // InternalPerspectiveDsl.g:2440:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
+                    // InternalPerspectiveDsl.g:2467:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalPerspectiveDsl.g:2468:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
                     {
                     if ( state.backtracking==0 ) {
 
@@ -6844,18 +6922,18 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:2458:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalPerspectiveDsl.g:2486:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
                     {
-                    // InternalPerspectiveDsl.g:2458:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
-                    // InternalPerspectiveDsl.g:2459:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2486:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalPerspectiveDsl.g:2487:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
                     {
-                    // InternalPerspectiveDsl.g:2459:5: ( (lv_fqnImport_9_0= 'ns' ) )
-                    // InternalPerspectiveDsl.g:2460:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalPerspectiveDsl.g:2487:5: ( (lv_fqnImport_9_0= 'ns' ) )
+                    // InternalPerspectiveDsl.g:2488:6: (lv_fqnImport_9_0= 'ns' )
                     {
-                    // InternalPerspectiveDsl.g:2460:6: (lv_fqnImport_9_0= 'ns' )
-                    // InternalPerspectiveDsl.g:2461:7: lv_fqnImport_9_0= 'ns'
+                    // InternalPerspectiveDsl.g:2488:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalPerspectiveDsl.g:2489:7: lv_fqnImport_9_0= 'ns'
                     {
-                    lv_fqnImport_9_0=(Token)match(input,60,FOLLOW_4); if (state.failed) return current;
+                    lv_fqnImport_9_0=(Token)match(input,62,FOLLOW_4); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_fqnImport_9_0, grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0());
@@ -6875,11 +6953,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2473:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
-                    // InternalPerspectiveDsl.g:2474:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2501:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalPerspectiveDsl.g:2502:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
                     {
-                    // InternalPerspectiveDsl.g:2474:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
-                    // InternalPerspectiveDsl.g:2475:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
+                    // InternalPerspectiveDsl.g:2502:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalPerspectiveDsl.g:2503:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
                     {
                     if ( state.backtracking==0 ) {
 
@@ -6919,18 +6997,18 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2494:3: (otherlv_11= ';' )?
+            // InternalPerspectiveDsl.g:2522:3: (otherlv_11= ';' )?
             int alt23=2;
             int LA23_0 = input.LA(1);
 
-            if ( (LA23_0==61) ) {
+            if ( (LA23_0==63) ) {
                 alt23=1;
             }
             switch (alt23) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2495:4: otherlv_11= ';'
+                    // InternalPerspectiveDsl.g:2523:4: otherlv_11= ';'
                     {
-                    otherlv_11=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
+                    otherlv_11=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_11, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3());
@@ -6967,7 +7045,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // InternalPerspectiveDsl.g:2504:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    // InternalPerspectiveDsl.g:2532:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
     public final EObject entryRuleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -6975,8 +7053,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2504:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
-            // InternalPerspectiveDsl.g:2505:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            // InternalPerspectiveDsl.g:2532:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // InternalPerspectiveDsl.g:2533:2: iv_ruleXAnnotation= ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationRule()); 
@@ -7007,7 +7085,7 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // InternalPerspectiveDsl.g:2511:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
+    // InternalPerspectiveDsl.g:2539:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
     public final EObject ruleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -7026,14 +7104,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2517:2: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
-            // InternalPerspectiveDsl.g:2518:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // InternalPerspectiveDsl.g:2545:2: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
+            // InternalPerspectiveDsl.g:2546:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
             {
-            // InternalPerspectiveDsl.g:2518:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
-            // InternalPerspectiveDsl.g:2519:3: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            // InternalPerspectiveDsl.g:2546:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // InternalPerspectiveDsl.g:2547:3: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
             {
-            // InternalPerspectiveDsl.g:2519:3: ()
-            // InternalPerspectiveDsl.g:2520:4: 
+            // InternalPerspectiveDsl.g:2547:3: ()
+            // InternalPerspectiveDsl.g:2548:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -7045,17 +7123,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,62,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,64,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:2530:3: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:2531:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:2558:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:2559:4: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:2531:4: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:2532:5: ruleQualifiedName
+            // InternalPerspectiveDsl.g:2559:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:2560:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -7085,21 +7163,21 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2546:3: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            // InternalPerspectiveDsl.g:2574:3: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
             int alt26=2;
             int LA26_0 = input.LA(1);
 
-            if ( (LA26_0==63) && (synpred1_InternalPerspectiveDsl())) {
+            if ( (LA26_0==65) && (synpred1_InternalPerspectiveDsl())) {
                 alt26=1;
             }
             switch (alt26) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2547:4: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
+                    // InternalPerspectiveDsl.g:2575:4: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
                     {
-                    // InternalPerspectiveDsl.g:2547:4: ( ( '(' )=>otherlv_3= '(' )
-                    // InternalPerspectiveDsl.g:2548:5: ( '(' )=>otherlv_3= '('
+                    // InternalPerspectiveDsl.g:2575:4: ( ( '(' )=>otherlv_3= '(' )
+                    // InternalPerspectiveDsl.g:2576:5: ( '(' )=>otherlv_3= '('
                     {
-                    otherlv_3=(Token)match(input,63,FOLLOW_36); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,65,FOLLOW_36); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
@@ -7108,21 +7186,21 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2554:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    // InternalPerspectiveDsl.g:2582:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
                     int alt25=3;
                     alt25 = dfa25.predict(input);
                     switch (alt25) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2555:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalPerspectiveDsl.g:2583:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
                             {
-                            // InternalPerspectiveDsl.g:2555:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
-                            // InternalPerspectiveDsl.g:2556:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalPerspectiveDsl.g:2583:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalPerspectiveDsl.g:2584:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:2556:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
-                            // InternalPerspectiveDsl.g:2557:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalPerspectiveDsl.g:2584:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // InternalPerspectiveDsl.g:2585:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
                             {
-                            // InternalPerspectiveDsl.g:2566:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
-                            // InternalPerspectiveDsl.g:2567:8: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            // InternalPerspectiveDsl.g:2594:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalPerspectiveDsl.g:2595:8: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
                             {
                             if ( state.backtracking==0 ) {
 
@@ -7153,32 +7231,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2584:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalPerspectiveDsl.g:2612:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             loop24:
                             do {
                                 int alt24=2;
                                 int LA24_0 = input.LA(1);
 
-                                if ( (LA24_0==64) ) {
+                                if ( (LA24_0==66) ) {
                                     alt24=1;
                                 }
 
 
                                 switch (alt24) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:2585:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalPerspectiveDsl.g:2613:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
                             	    {
-                            	    otherlv_5=(Token)match(input,64,FOLLOW_4); if (state.failed) return current;
+                            	    otherlv_5=(Token)match(input,66,FOLLOW_4); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
                             	      						
                             	    }
-                            	    // InternalPerspectiveDsl.g:2589:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    // InternalPerspectiveDsl.g:2590:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalPerspectiveDsl.g:2617:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalPerspectiveDsl.g:2618:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
                             	    {
-                            	    // InternalPerspectiveDsl.g:2599:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    // InternalPerspectiveDsl.g:2600:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
+                            	    // InternalPerspectiveDsl.g:2627:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalPerspectiveDsl.g:2628:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -7225,13 +7303,13 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:2620:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalPerspectiveDsl.g:2648:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
                             {
-                            // InternalPerspectiveDsl.g:2620:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            // InternalPerspectiveDsl.g:2621:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalPerspectiveDsl.g:2648:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalPerspectiveDsl.g:2649:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
                             {
-                            // InternalPerspectiveDsl.g:2621:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            // InternalPerspectiveDsl.g:2622:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            // InternalPerspectiveDsl.g:2649:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalPerspectiveDsl.g:2650:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
                             {
                             if ( state.backtracking==0 ) {
 
@@ -7268,7 +7346,7 @@
 
                     }
 
-                    otherlv_8=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
+                    otherlv_8=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
@@ -7305,7 +7383,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // InternalPerspectiveDsl.g:2649:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    // InternalPerspectiveDsl.g:2677:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
     public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -7313,8 +7391,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2649:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
-            // InternalPerspectiveDsl.g:2650:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            // InternalPerspectiveDsl.g:2677:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // InternalPerspectiveDsl.g:2678:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
@@ -7345,7 +7423,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // InternalPerspectiveDsl.g:2656:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
+    // InternalPerspectiveDsl.g:2684:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
     public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -7357,23 +7435,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2662:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
-            // InternalPerspectiveDsl.g:2663:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalPerspectiveDsl.g:2690:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // InternalPerspectiveDsl.g:2691:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
             {
-            // InternalPerspectiveDsl.g:2663:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            // InternalPerspectiveDsl.g:2664:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalPerspectiveDsl.g:2691:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalPerspectiveDsl.g:2692:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
             {
-            // InternalPerspectiveDsl.g:2664:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
-            // InternalPerspectiveDsl.g:2665:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalPerspectiveDsl.g:2692:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // InternalPerspectiveDsl.g:2693:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
             {
-            // InternalPerspectiveDsl.g:2674:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            // InternalPerspectiveDsl.g:2675:5: ( ( ruleValidID ) ) otherlv_1= '='
+            // InternalPerspectiveDsl.g:2702:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalPerspectiveDsl.g:2703:5: ( ( ruleValidID ) ) otherlv_1= '='
             {
-            // InternalPerspectiveDsl.g:2675:5: ( ( ruleValidID ) )
-            // InternalPerspectiveDsl.g:2676:6: ( ruleValidID )
+            // InternalPerspectiveDsl.g:2703:5: ( ( ruleValidID ) )
+            // InternalPerspectiveDsl.g:2704:6: ( ruleValidID )
             {
-            // InternalPerspectiveDsl.g:2676:6: ( ruleValidID )
-            // InternalPerspectiveDsl.g:2677:7: ruleValidID
+            // InternalPerspectiveDsl.g:2704:6: ( ruleValidID )
+            // InternalPerspectiveDsl.g:2705:7: ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -7403,7 +7481,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
+            otherlv_1=(Token)match(input,68,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
@@ -7415,11 +7493,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:2697:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            // InternalPerspectiveDsl.g:2698:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:2725:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalPerspectiveDsl.g:2726:4: (lv_value_2_0= ruleXAnnotationElementValue )
             {
-            // InternalPerspectiveDsl.g:2698:4: (lv_value_2_0= ruleXAnnotationElementValue )
-            // InternalPerspectiveDsl.g:2699:5: lv_value_2_0= ruleXAnnotationElementValue
+            // InternalPerspectiveDsl.g:2726:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalPerspectiveDsl.g:2727:5: lv_value_2_0= ruleXAnnotationElementValue
             {
             if ( state.backtracking==0 ) {
 
@@ -7475,7 +7553,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // InternalPerspectiveDsl.g:2720:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalPerspectiveDsl.g:2748:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
     public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -7483,8 +7561,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2720:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
-            // InternalPerspectiveDsl.g:2721:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            // InternalPerspectiveDsl.g:2748:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalPerspectiveDsl.g:2749:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
@@ -7515,7 +7593,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // InternalPerspectiveDsl.g:2727:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
+    // InternalPerspectiveDsl.g:2755:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
     public final EObject ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -7537,27 +7615,27 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2733:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
-            // InternalPerspectiveDsl.g:2734:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            // InternalPerspectiveDsl.g:2761:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
+            // InternalPerspectiveDsl.g:2762:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
             {
-            // InternalPerspectiveDsl.g:2734:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            // InternalPerspectiveDsl.g:2762:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
             int alt31=2;
             alt31 = dfa31.predict(input);
             switch (alt31) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2735:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2763:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // InternalPerspectiveDsl.g:2735:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // InternalPerspectiveDsl.g:2736:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalPerspectiveDsl.g:2763:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2764:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // InternalPerspectiveDsl.g:2736:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // InternalPerspectiveDsl.g:2737:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2764:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalPerspectiveDsl.g:2765:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // InternalPerspectiveDsl.g:2744:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // InternalPerspectiveDsl.g:2745:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalPerspectiveDsl.g:2772:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2773:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // InternalPerspectiveDsl.g:2745:6: ()
-                    // InternalPerspectiveDsl.g:2746:7: 
+                    // InternalPerspectiveDsl.g:2773:6: ()
+                    // InternalPerspectiveDsl.g:2774:7: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7569,13 +7647,13 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,67,FOLLOW_41); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,69,FOLLOW_41); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
                       					
                     }
-                    otherlv_2=(Token)match(input,68,FOLLOW_42); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,70,FOLLOW_42); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
@@ -7587,22 +7665,22 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2762:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    // InternalPerspectiveDsl.g:2790:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
                     int alt28=2;
                     int LA28_0 = input.LA(1);
 
-                    if ( ((LA28_0>=RULE_ID && LA28_0<=RULE_DECIMAL)||LA28_0==14||(LA28_0>=56 && LA28_0<=58)||(LA28_0>=62 && LA28_0<=63)||(LA28_0>=67 && LA28_0<=68)||LA28_0==75||(LA28_0>=91 && LA28_0<=92)||LA28_0==96||LA28_0==104||LA28_0==106||(LA28_0>=110 && LA28_0<=112)||(LA28_0>=115 && LA28_0<=124)||LA28_0==126) ) {
+                    if ( ((LA28_0>=RULE_ID && LA28_0<=RULE_DECIMAL)||LA28_0==14||(LA28_0>=58 && LA28_0<=60)||(LA28_0>=64 && LA28_0<=65)||(LA28_0>=69 && LA28_0<=70)||LA28_0==77||(LA28_0>=93 && LA28_0<=94)||LA28_0==98||LA28_0==106||LA28_0==108||(LA28_0>=112 && LA28_0<=114)||(LA28_0>=117 && LA28_0<=126)||LA28_0==128) ) {
                         alt28=1;
                     }
                     switch (alt28) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2763:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2791:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:2763:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // InternalPerspectiveDsl.g:2764:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2791:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalPerspectiveDsl.g:2792:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // InternalPerspectiveDsl.g:2764:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // InternalPerspectiveDsl.g:2765:7: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalPerspectiveDsl.g:2792:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2793:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -7633,32 +7711,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2782:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2810:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             loop27:
                             do {
                                 int alt27=2;
                                 int LA27_0 = input.LA(1);
 
-                                if ( (LA27_0==64) ) {
+                                if ( (LA27_0==66) ) {
                                     alt27=1;
                                 }
 
 
                                 switch (alt27) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:2783:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2811:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,64,FOLLOW_40); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalPerspectiveDsl.g:2787:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalPerspectiveDsl.g:2788:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2815:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2816:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:2788:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // InternalPerspectiveDsl.g:2789:8: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalPerspectiveDsl.g:2816:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2817:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -7704,7 +7782,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
@@ -7717,10 +7795,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2814:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalPerspectiveDsl.g:2842:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
                     {
-                    // InternalPerspectiveDsl.g:2814:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
-                    // InternalPerspectiveDsl.g:2815:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    // InternalPerspectiveDsl.g:2842:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalPerspectiveDsl.g:2843:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7738,19 +7816,19 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalPerspectiveDsl.g:2823:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    // InternalPerspectiveDsl.g:2851:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                     int alt30=2;
                     int LA30_0 = input.LA(1);
 
-                    if ( (LA30_0==64) ) {
+                    if ( (LA30_0==66) ) {
                         alt30=1;
                     }
                     switch (alt30) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2824:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            // InternalPerspectiveDsl.g:2852:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
                             {
-                            // InternalPerspectiveDsl.g:2824:5: ()
-                            // InternalPerspectiveDsl.g:2825:6: 
+                            // InternalPerspectiveDsl.g:2852:5: ()
+                            // InternalPerspectiveDsl.g:2853:6: 
                             {
                             if ( state.backtracking==0 ) {
 
@@ -7762,33 +7840,33 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2831:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            // InternalPerspectiveDsl.g:2859:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
                             int cnt29=0;
                             loop29:
                             do {
                                 int alt29=2;
                                 int LA29_0 = input.LA(1);
 
-                                if ( (LA29_0==64) ) {
+                                if ( (LA29_0==66) ) {
                                     alt29=1;
                                 }
 
 
                                 switch (alt29) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:2832:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2860:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_9=(Token)match(input,64,FOLLOW_40); if (state.failed) return current;
+                            	    otherlv_9=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
                             	      					
                             	    }
-                            	    // InternalPerspectiveDsl.g:2836:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalPerspectiveDsl.g:2837:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2864:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2865:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:2837:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
-                            	    // InternalPerspectiveDsl.g:2838:8: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    // InternalPerspectiveDsl.g:2865:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2866:8: lv_elements_10_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -7870,7 +7948,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // InternalPerspectiveDsl.g:2862:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    // InternalPerspectiveDsl.g:2890:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
     public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -7878,8 +7956,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2862:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
-            // InternalPerspectiveDsl.g:2863:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            // InternalPerspectiveDsl.g:2890:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // InternalPerspectiveDsl.g:2891:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
@@ -7910,7 +7988,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // InternalPerspectiveDsl.g:2869:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
+    // InternalPerspectiveDsl.g:2897:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
     public final EObject ruleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -7929,27 +8007,27 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2875:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
-            // InternalPerspectiveDsl.g:2876:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:2903:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
+            // InternalPerspectiveDsl.g:2904:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
             {
-            // InternalPerspectiveDsl.g:2876:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            // InternalPerspectiveDsl.g:2904:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
             int alt34=2;
             alt34 = dfa34.predict(input);
             switch (alt34) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2877:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2905:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // InternalPerspectiveDsl.g:2877:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // InternalPerspectiveDsl.g:2878:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalPerspectiveDsl.g:2905:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalPerspectiveDsl.g:2906:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // InternalPerspectiveDsl.g:2878:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // InternalPerspectiveDsl.g:2879:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2906:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalPerspectiveDsl.g:2907:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // InternalPerspectiveDsl.g:2886:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // InternalPerspectiveDsl.g:2887:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalPerspectiveDsl.g:2914:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalPerspectiveDsl.g:2915:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // InternalPerspectiveDsl.g:2887:6: ()
-                    // InternalPerspectiveDsl.g:2888:7: 
+                    // InternalPerspectiveDsl.g:2915:6: ()
+                    // InternalPerspectiveDsl.g:2916:7: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7961,13 +8039,13 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,67,FOLLOW_41); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,69,FOLLOW_41); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
                       					
                     }
-                    otherlv_2=(Token)match(input,68,FOLLOW_42); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,70,FOLLOW_42); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
@@ -7979,22 +8057,22 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:2904:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    // InternalPerspectiveDsl.g:2932:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
                     int alt33=2;
                     int LA33_0 = input.LA(1);
 
-                    if ( ((LA33_0>=RULE_ID && LA33_0<=RULE_DECIMAL)||LA33_0==14||(LA33_0>=56 && LA33_0<=58)||(LA33_0>=62 && LA33_0<=63)||(LA33_0>=67 && LA33_0<=68)||LA33_0==75||(LA33_0>=91 && LA33_0<=92)||LA33_0==96||LA33_0==104||LA33_0==106||(LA33_0>=110 && LA33_0<=112)||(LA33_0>=115 && LA33_0<=124)||LA33_0==126) ) {
+                    if ( ((LA33_0>=RULE_ID && LA33_0<=RULE_DECIMAL)||LA33_0==14||(LA33_0>=58 && LA33_0<=60)||(LA33_0>=64 && LA33_0<=65)||(LA33_0>=69 && LA33_0<=70)||LA33_0==77||(LA33_0>=93 && LA33_0<=94)||LA33_0==98||LA33_0==106||LA33_0==108||(LA33_0>=112 && LA33_0<=114)||(LA33_0>=117 && LA33_0<=126)||LA33_0==128) ) {
                         alt33=1;
                     }
                     switch (alt33) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:2905:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2933:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:2905:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // InternalPerspectiveDsl.g:2906:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2933:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalPerspectiveDsl.g:2934:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // InternalPerspectiveDsl.g:2906:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // InternalPerspectiveDsl.g:2907:7: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalPerspectiveDsl.g:2934:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalPerspectiveDsl.g:2935:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -8025,32 +8103,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:2924:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalPerspectiveDsl.g:2952:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             loop32:
                             do {
                                 int alt32=2;
                                 int LA32_0 = input.LA(1);
 
-                                if ( (LA32_0==64) ) {
+                                if ( (LA32_0==66) ) {
                                     alt32=1;
                                 }
 
 
                                 switch (alt32) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:2925:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2953:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,64,FOLLOW_40); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalPerspectiveDsl.g:2929:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalPerspectiveDsl.g:2930:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2957:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalPerspectiveDsl.g:2958:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:2930:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // InternalPerspectiveDsl.g:2931:8: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalPerspectiveDsl.g:2958:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalPerspectiveDsl.g:2959:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -8096,7 +8174,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
@@ -8109,7 +8187,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2956:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    // InternalPerspectiveDsl.g:2984:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8155,7 +8233,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // InternalPerspectiveDsl.g:2968:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    // InternalPerspectiveDsl.g:2996:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
     public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8163,8 +8241,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:2968:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
-            // InternalPerspectiveDsl.g:2969:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            // InternalPerspectiveDsl.g:2996:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // InternalPerspectiveDsl.g:2997:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
@@ -8195,7 +8273,7 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // InternalPerspectiveDsl.g:2975:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:3003:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8208,17 +8286,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:2981:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:2982:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            // InternalPerspectiveDsl.g:3009:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:3010:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:2982:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            // InternalPerspectiveDsl.g:3010:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
             int alt35=2;
             int LA35_0 = input.LA(1);
 
-            if ( (LA35_0==62) ) {
+            if ( (LA35_0==64) ) {
                 alt35=1;
             }
-            else if ( ((LA35_0>=RULE_ID && LA35_0<=RULE_DECIMAL)||LA35_0==14||(LA35_0>=56 && LA35_0<=58)||LA35_0==63||(LA35_0>=67 && LA35_0<=68)||LA35_0==75||(LA35_0>=91 && LA35_0<=92)||LA35_0==96||LA35_0==104||LA35_0==106||(LA35_0>=110 && LA35_0<=112)||(LA35_0>=115 && LA35_0<=124)||LA35_0==126) ) {
+            else if ( ((LA35_0>=RULE_ID && LA35_0<=RULE_DECIMAL)||LA35_0==14||(LA35_0>=58 && LA35_0<=60)||LA35_0==65||(LA35_0>=69 && LA35_0<=70)||LA35_0==77||(LA35_0>=93 && LA35_0<=94)||LA35_0==98||LA35_0==106||LA35_0==108||(LA35_0>=112 && LA35_0<=114)||(LA35_0>=117 && LA35_0<=126)||LA35_0==128) ) {
                 alt35=2;
             }
             else {
@@ -8230,7 +8308,7 @@
             }
             switch (alt35) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:2983:3: this_XAnnotation_0= ruleXAnnotation
+                    // InternalPerspectiveDsl.g:3011:3: this_XAnnotation_0= ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8252,7 +8330,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:2992:3: this_XExpression_1= ruleXExpression
+                    // InternalPerspectiveDsl.g:3020:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8298,7 +8376,7 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // InternalPerspectiveDsl.g:3004:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    // InternalPerspectiveDsl.g:3032:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
     public final EObject entryRuleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8306,8 +8384,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3004:52: (iv_ruleXExpression= ruleXExpression EOF )
-            // InternalPerspectiveDsl.g:3005:2: iv_ruleXExpression= ruleXExpression EOF
+            // InternalPerspectiveDsl.g:3032:52: (iv_ruleXExpression= ruleXExpression EOF )
+            // InternalPerspectiveDsl.g:3033:2: iv_ruleXExpression= ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionRule()); 
@@ -8338,7 +8416,7 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // InternalPerspectiveDsl.g:3011:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    // InternalPerspectiveDsl.g:3039:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
     public final EObject ruleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8349,8 +8427,8 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3017:2: (this_XAssignment_0= ruleXAssignment )
-            // InternalPerspectiveDsl.g:3018:2: this_XAssignment_0= ruleXAssignment
+            // InternalPerspectiveDsl.g:3045:2: (this_XAssignment_0= ruleXAssignment )
+            // InternalPerspectiveDsl.g:3046:2: this_XAssignment_0= ruleXAssignment
             {
             if ( state.backtracking==0 ) {
 
@@ -8390,7 +8468,7 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // InternalPerspectiveDsl.g:3029:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    // InternalPerspectiveDsl.g:3057:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
     public final EObject entryRuleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -8398,8 +8476,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3029:52: (iv_ruleXAssignment= ruleXAssignment EOF )
-            // InternalPerspectiveDsl.g:3030:2: iv_ruleXAssignment= ruleXAssignment EOF
+            // InternalPerspectiveDsl.g:3057:52: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // InternalPerspectiveDsl.g:3058:2: iv_ruleXAssignment= ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAssignmentRule()); 
@@ -8430,7 +8508,7 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // InternalPerspectiveDsl.g:3036:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
+    // InternalPerspectiveDsl.g:3064:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
     public final EObject ruleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -8445,22 +8523,22 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3042:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
-            // InternalPerspectiveDsl.g:3043:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalPerspectiveDsl.g:3070:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // InternalPerspectiveDsl.g:3071:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             {
-            // InternalPerspectiveDsl.g:3043:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalPerspectiveDsl.g:3071:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             int alt37=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
                 int LA37_1 = input.LA(2);
 
-                if ( (LA37_1==66) ) {
-                    alt37=1;
-                }
-                else if ( (LA37_1==EOF||(LA37_1>=RULE_ID && LA37_1<=RULE_DECIMAL)||(LA37_1>=14 && LA37_1<=15)||(LA37_1>=56 && LA37_1<=59)||LA37_1==61||(LA37_1>=63 && LA37_1<=65)||(LA37_1>=67 && LA37_1<=102)||(LA37_1>=104 && LA37_1<=127)) ) {
+                if ( (LA37_1==EOF||(LA37_1>=RULE_ID && LA37_1<=RULE_DECIMAL)||(LA37_1>=14 && LA37_1<=15)||(LA37_1>=58 && LA37_1<=61)||LA37_1==63||(LA37_1>=65 && LA37_1<=67)||(LA37_1>=69 && LA37_1<=104)||(LA37_1>=106 && LA37_1<=129)) ) {
                     alt37=2;
                 }
+                else if ( (LA37_1==68) ) {
+                    alt37=1;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
@@ -8470,14 +8548,14 @@
                 }
                 }
                 break;
-            case 115:
+            case 117:
                 {
                 int LA37_2 = input.LA(2);
 
-                if ( (LA37_2==EOF||(LA37_2>=RULE_ID && LA37_2<=RULE_DECIMAL)||(LA37_2>=14 && LA37_2<=15)||(LA37_2>=56 && LA37_2<=59)||LA37_2==61||(LA37_2>=63 && LA37_2<=65)||(LA37_2>=67 && LA37_2<=102)||(LA37_2>=104 && LA37_2<=127)) ) {
+                if ( (LA37_2==EOF||(LA37_2>=RULE_ID && LA37_2<=RULE_DECIMAL)||(LA37_2>=14 && LA37_2<=15)||(LA37_2>=58 && LA37_2<=61)||LA37_2==63||(LA37_2>=65 && LA37_2<=67)||(LA37_2>=69 && LA37_2<=104)||(LA37_2>=106 && LA37_2<=129)) ) {
                     alt37=2;
                 }
-                else if ( (LA37_2==66) ) {
+                else if ( (LA37_2==68) ) {
                     alt37=1;
                 }
                 else {
@@ -8489,16 +8567,16 @@
                 }
                 }
                 break;
-            case 57:
+            case 59:
                 {
                 int LA37_3 = input.LA(2);
 
-                if ( (LA37_3==EOF||(LA37_3>=RULE_ID && LA37_3<=RULE_DECIMAL)||(LA37_3>=14 && LA37_3<=15)||(LA37_3>=56 && LA37_3<=59)||LA37_3==61||(LA37_3>=63 && LA37_3<=65)||(LA37_3>=67 && LA37_3<=102)||(LA37_3>=104 && LA37_3<=127)) ) {
-                    alt37=2;
-                }
-                else if ( (LA37_3==66) ) {
+                if ( (LA37_3==68) ) {
                     alt37=1;
                 }
+                else if ( (LA37_3==EOF||(LA37_3>=RULE_ID && LA37_3<=RULE_DECIMAL)||(LA37_3>=14 && LA37_3<=15)||(LA37_3>=58 && LA37_3<=61)||LA37_3==63||(LA37_3>=65 && LA37_3<=67)||(LA37_3>=69 && LA37_3<=104)||(LA37_3>=106 && LA37_3<=129)) ) {
+                    alt37=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
@@ -8508,14 +8586,14 @@
                 }
                 }
                 break;
-            case 56:
+            case 58:
                 {
                 int LA37_4 = input.LA(2);
 
-                if ( (LA37_4==66) ) {
+                if ( (LA37_4==68) ) {
                     alt37=1;
                 }
-                else if ( (LA37_4==EOF||(LA37_4>=RULE_ID && LA37_4<=RULE_DECIMAL)||(LA37_4>=14 && LA37_4<=15)||(LA37_4>=56 && LA37_4<=59)||LA37_4==61||(LA37_4>=63 && LA37_4<=65)||(LA37_4>=67 && LA37_4<=102)||(LA37_4>=104 && LA37_4<=127)) ) {
+                else if ( (LA37_4==EOF||(LA37_4>=RULE_ID && LA37_4<=RULE_DECIMAL)||(LA37_4>=14 && LA37_4<=15)||(LA37_4>=58 && LA37_4<=61)||LA37_4==63||(LA37_4>=65 && LA37_4<=67)||(LA37_4>=69 && LA37_4<=104)||(LA37_4>=106 && LA37_4<=129)) ) {
                     alt37=2;
                 }
                 else {
@@ -8527,14 +8605,14 @@
                 }
                 }
                 break;
-            case 58:
+            case 60:
                 {
                 int LA37_5 = input.LA(2);
 
-                if ( (LA37_5==EOF||(LA37_5>=RULE_ID && LA37_5<=RULE_DECIMAL)||(LA37_5>=14 && LA37_5<=15)||(LA37_5>=56 && LA37_5<=59)||LA37_5==61||(LA37_5>=63 && LA37_5<=65)||(LA37_5>=67 && LA37_5<=102)||(LA37_5>=104 && LA37_5<=127)) ) {
+                if ( (LA37_5==EOF||(LA37_5>=RULE_ID && LA37_5<=RULE_DECIMAL)||(LA37_5>=14 && LA37_5<=15)||(LA37_5>=58 && LA37_5<=61)||LA37_5==63||(LA37_5>=65 && LA37_5<=67)||(LA37_5>=69 && LA37_5<=104)||(LA37_5>=106 && LA37_5<=129)) ) {
                     alt37=2;
                 }
-                else if ( (LA37_5==66) ) {
+                else if ( (LA37_5==68) ) {
                     alt37=1;
                 }
                 else {
@@ -8551,20 +8629,18 @@
             case RULE_HEX:
             case RULE_DECIMAL:
             case 14:
-            case 63:
-            case 67:
-            case 68:
-            case 75:
-            case 91:
-            case 92:
-            case 96:
-            case 104:
+            case 65:
+            case 69:
+            case 70:
+            case 77:
+            case 93:
+            case 94:
+            case 98:
             case 106:
-            case 110:
-            case 111:
+            case 108:
             case 112:
-            case 116:
-            case 117:
+            case 113:
+            case 114:
             case 118:
             case 119:
             case 120:
@@ -8572,7 +8648,9 @@
             case 122:
             case 123:
             case 124:
+            case 125:
             case 126:
+            case 128:
                 {
                 alt37=2;
                 }
@@ -8587,13 +8665,13 @@
 
             switch (alt37) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3044:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalPerspectiveDsl.g:3072:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                     {
-                    // InternalPerspectiveDsl.g:3044:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
-                    // InternalPerspectiveDsl.g:3045:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalPerspectiveDsl.g:3072:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalPerspectiveDsl.g:3073:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                     {
-                    // InternalPerspectiveDsl.g:3045:4: ()
-                    // InternalPerspectiveDsl.g:3046:5: 
+                    // InternalPerspectiveDsl.g:3073:4: ()
+                    // InternalPerspectiveDsl.g:3074:5: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8605,11 +8683,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:3052:4: ( ( ruleFeatureCallID ) )
-                    // InternalPerspectiveDsl.g:3053:5: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:3080:4: ( ( ruleFeatureCallID ) )
+                    // InternalPerspectiveDsl.g:3081:5: ( ruleFeatureCallID )
                     {
-                    // InternalPerspectiveDsl.g:3053:5: ( ruleFeatureCallID )
-                    // InternalPerspectiveDsl.g:3054:6: ruleFeatureCallID
+                    // InternalPerspectiveDsl.g:3081:5: ( ruleFeatureCallID )
+                    // InternalPerspectiveDsl.g:3082:6: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8654,11 +8732,11 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalPerspectiveDsl.g:3075:4: ( (lv_value_3_0= ruleXAssignment ) )
-                    // InternalPerspectiveDsl.g:3076:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalPerspectiveDsl.g:3103:4: ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalPerspectiveDsl.g:3104:5: (lv_value_3_0= ruleXAssignment )
                     {
-                    // InternalPerspectiveDsl.g:3076:5: (lv_value_3_0= ruleXAssignment )
-                    // InternalPerspectiveDsl.g:3077:6: lv_value_3_0= ruleXAssignment
+                    // InternalPerspectiveDsl.g:3104:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalPerspectiveDsl.g:3105:6: lv_value_3_0= ruleXAssignment
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8696,10 +8774,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3096:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalPerspectiveDsl.g:3124:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                     {
-                    // InternalPerspectiveDsl.g:3096:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
-                    // InternalPerspectiveDsl.g:3097:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    // InternalPerspectiveDsl.g:3124:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalPerspectiveDsl.g:3125:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8717,21 +8795,21 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalPerspectiveDsl.g:3105:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    // InternalPerspectiveDsl.g:3133:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                     int alt36=2;
                     alt36 = dfa36.predict(input);
                     switch (alt36) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:3106:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalPerspectiveDsl.g:3134:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                             {
-                            // InternalPerspectiveDsl.g:3106:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
-                            // InternalPerspectiveDsl.g:3107:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalPerspectiveDsl.g:3134:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // InternalPerspectiveDsl.g:3135:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                             {
-                            // InternalPerspectiveDsl.g:3117:6: ( () ( ( ruleOpMultiAssign ) ) )
-                            // InternalPerspectiveDsl.g:3118:7: () ( ( ruleOpMultiAssign ) )
+                            // InternalPerspectiveDsl.g:3145:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalPerspectiveDsl.g:3146:7: () ( ( ruleOpMultiAssign ) )
                             {
-                            // InternalPerspectiveDsl.g:3118:7: ()
-                            // InternalPerspectiveDsl.g:3119:8: 
+                            // InternalPerspectiveDsl.g:3146:7: ()
+                            // InternalPerspectiveDsl.g:3147:8: 
                             {
                             if ( state.backtracking==0 ) {
 
@@ -8743,11 +8821,11 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:3125:7: ( ( ruleOpMultiAssign ) )
-                            // InternalPerspectiveDsl.g:3126:8: ( ruleOpMultiAssign )
+                            // InternalPerspectiveDsl.g:3153:7: ( ( ruleOpMultiAssign ) )
+                            // InternalPerspectiveDsl.g:3154:8: ( ruleOpMultiAssign )
                             {
-                            // InternalPerspectiveDsl.g:3126:8: ( ruleOpMultiAssign )
-                            // InternalPerspectiveDsl.g:3127:9: ruleOpMultiAssign
+                            // InternalPerspectiveDsl.g:3154:8: ( ruleOpMultiAssign )
+                            // InternalPerspectiveDsl.g:3155:9: ruleOpMultiAssign
                             {
                             if ( state.backtracking==0 ) {
 
@@ -8783,11 +8861,11 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:3143:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
-                            // InternalPerspectiveDsl.g:3144:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalPerspectiveDsl.g:3171:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalPerspectiveDsl.g:3172:6: (lv_rightOperand_7_0= ruleXAssignment )
                             {
-                            // InternalPerspectiveDsl.g:3144:6: (lv_rightOperand_7_0= ruleXAssignment )
-                            // InternalPerspectiveDsl.g:3145:7: lv_rightOperand_7_0= ruleXAssignment
+                            // InternalPerspectiveDsl.g:3172:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalPerspectiveDsl.g:3173:7: lv_rightOperand_7_0= ruleXAssignment
                             {
                             if ( state.backtracking==0 ) {
 
@@ -8855,7 +8933,7 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // InternalPerspectiveDsl.g:3168:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    // InternalPerspectiveDsl.g:3196:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
     public final String entryRuleOpSingleAssign() throws RecognitionException {
         String current = null;
 
@@ -8863,8 +8941,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3168:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
-            // InternalPerspectiveDsl.g:3169:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            // InternalPerspectiveDsl.g:3196:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // InternalPerspectiveDsl.g:3197:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
@@ -8895,7 +8973,7 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // InternalPerspectiveDsl.g:3175:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    // InternalPerspectiveDsl.g:3203:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
     public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -8905,10 +8983,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3181:2: (kw= '=' )
-            // InternalPerspectiveDsl.g:3182:2: kw= '='
+            // InternalPerspectiveDsl.g:3209:2: (kw= '=' )
+            // InternalPerspectiveDsl.g:3210:2: kw= '='
             {
-            kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,68,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               		current.merge(kw);
@@ -8937,7 +9015,7 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // InternalPerspectiveDsl.g:3190:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    // InternalPerspectiveDsl.g:3218:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
     public final String entryRuleOpMultiAssign() throws RecognitionException {
         String current = null;
 
@@ -8945,8 +9023,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3190:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
-            // InternalPerspectiveDsl.g:3191:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            // InternalPerspectiveDsl.g:3218:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // InternalPerspectiveDsl.g:3219:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
@@ -8977,7 +9055,7 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // InternalPerspectiveDsl.g:3197:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
+    // InternalPerspectiveDsl.g:3225:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
     public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -8987,43 +9065,43 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3203:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
-            // InternalPerspectiveDsl.g:3204:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            // InternalPerspectiveDsl.g:3231:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // InternalPerspectiveDsl.g:3232:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
             {
-            // InternalPerspectiveDsl.g:3204:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            // InternalPerspectiveDsl.g:3232:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
             int alt39=7;
             switch ( input.LA(1) ) {
-            case 70:
+            case 72:
                 {
                 alt39=1;
                 }
                 break;
-            case 71:
+            case 73:
                 {
                 alt39=2;
                 }
                 break;
-            case 72:
+            case 74:
                 {
                 alt39=3;
                 }
                 break;
-            case 73:
+            case 75:
                 {
                 alt39=4;
                 }
                 break;
-            case 74:
+            case 76:
                 {
                 alt39=5;
                 }
                 break;
-            case 75:
+            case 77:
                 {
                 alt39=6;
                 }
                 break;
-            case 76:
+            case 78:
                 {
                 alt39=7;
                 }
@@ -9038,9 +9116,9 @@
 
             switch (alt39) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3205:3: kw= '+='
+                    // InternalPerspectiveDsl.g:3233:3: kw= '+='
                     {
-                    kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -9051,9 +9129,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3211:3: kw= '-='
+                    // InternalPerspectiveDsl.g:3239:3: kw= '-='
                     {
-                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,73,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -9064,9 +9142,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3217:3: kw= '*='
+                    // InternalPerspectiveDsl.g:3245:3: kw= '*='
                     {
-                    kw=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -9077,9 +9155,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3223:3: kw= '/='
+                    // InternalPerspectiveDsl.g:3251:3: kw= '/='
                     {
-                    kw=(Token)match(input,73,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -9090,9 +9168,9 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3229:3: kw= '%='
+                    // InternalPerspectiveDsl.g:3257:3: kw= '%='
                     {
-                    kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -9103,26 +9181,26 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3235:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:3263:3: (kw= '<' kw= '<' kw= '=' )
                     {
-                    // InternalPerspectiveDsl.g:3235:3: (kw= '<' kw= '<' kw= '=' )
-                    // InternalPerspectiveDsl.g:3236:4: kw= '<' kw= '<' kw= '='
+                    // InternalPerspectiveDsl.g:3263:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:3264:4: kw= '<' kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,75,FOLLOW_46); if (state.failed) return current;
+                    kw=(Token)match(input,77,FOLLOW_46); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0());
                       			
                     }
-                    kw=(Token)match(input,75,FOLLOW_39); if (state.failed) return current;
+                    kw=(Token)match(input,77,FOLLOW_39); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1());
                       			
                     }
-                    kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,68,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -9136,30 +9214,30 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3253:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalPerspectiveDsl.g:3281:3: (kw= '>' (kw= '>' )? kw= '>=' )
                     {
-                    // InternalPerspectiveDsl.g:3253:3: (kw= '>' (kw= '>' )? kw= '>=' )
-                    // InternalPerspectiveDsl.g:3254:4: kw= '>' (kw= '>' )? kw= '>='
+                    // InternalPerspectiveDsl.g:3281:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalPerspectiveDsl.g:3282:4: kw= '>' (kw= '>' )? kw= '>='
                     {
-                    kw=(Token)match(input,76,FOLLOW_47); if (state.failed) return current;
+                    kw=(Token)match(input,78,FOLLOW_47); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:3259:4: (kw= '>' )?
+                    // InternalPerspectiveDsl.g:3287:4: (kw= '>' )?
                     int alt38=2;
                     int LA38_0 = input.LA(1);
 
-                    if ( (LA38_0==76) ) {
+                    if ( (LA38_0==78) ) {
                         alt38=1;
                     }
                     switch (alt38) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:3260:5: kw= '>'
+                            // InternalPerspectiveDsl.g:3288:5: kw= '>'
                             {
-                            kw=(Token)match(input,76,FOLLOW_48); if (state.failed) return current;
+                            kw=(Token)match(input,78,FOLLOW_48); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -9172,7 +9250,7 @@
 
                     }
 
-                    kw=(Token)match(input,77,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,79,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -9210,7 +9288,7 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // InternalPerspectiveDsl.g:3276:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    // InternalPerspectiveDsl.g:3304:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
     public final EObject entryRuleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9218,8 +9296,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3276:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
-            // InternalPerspectiveDsl.g:3277:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            // InternalPerspectiveDsl.g:3304:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // InternalPerspectiveDsl.g:3305:2: iv_ruleXOrExpression= ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOrExpressionRule()); 
@@ -9250,7 +9328,7 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // InternalPerspectiveDsl.g:3283:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3311:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
     public final EObject ruleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9263,11 +9341,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3289:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:3290:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3317:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3318:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3290:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
-            // InternalPerspectiveDsl.g:3291:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalPerspectiveDsl.g:3318:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3319:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -9285,13 +9363,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3299:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalPerspectiveDsl.g:3327:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
             loop40:
             do {
                 int alt40=2;
                 int LA40_0 = input.LA(1);
 
-                if ( (LA40_0==78) ) {
+                if ( (LA40_0==80) ) {
                     int LA40_2 = input.LA(2);
 
                     if ( (synpred8_InternalPerspectiveDsl()) ) {
@@ -9304,16 +9382,16 @@
 
                 switch (alt40) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3300:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalPerspectiveDsl.g:3328:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3300:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
-            	    // InternalPerspectiveDsl.g:3301:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    // InternalPerspectiveDsl.g:3328:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // InternalPerspectiveDsl.g:3329:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3311:5: ( () ( ( ruleOpOr ) ) )
-            	    // InternalPerspectiveDsl.g:3312:6: () ( ( ruleOpOr ) )
+            	    // InternalPerspectiveDsl.g:3339:5: ( () ( ( ruleOpOr ) ) )
+            	    // InternalPerspectiveDsl.g:3340:6: () ( ( ruleOpOr ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3312:6: ()
-            	    // InternalPerspectiveDsl.g:3313:7: 
+            	    // InternalPerspectiveDsl.g:3340:6: ()
+            	    // InternalPerspectiveDsl.g:3341:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9325,11 +9403,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3319:6: ( ( ruleOpOr ) )
-            	    // InternalPerspectiveDsl.g:3320:7: ( ruleOpOr )
+            	    // InternalPerspectiveDsl.g:3347:6: ( ( ruleOpOr ) )
+            	    // InternalPerspectiveDsl.g:3348:7: ( ruleOpOr )
             	    {
-            	    // InternalPerspectiveDsl.g:3320:7: ( ruleOpOr )
-            	    // InternalPerspectiveDsl.g:3321:8: ruleOpOr
+            	    // InternalPerspectiveDsl.g:3348:7: ( ruleOpOr )
+            	    // InternalPerspectiveDsl.g:3349:8: ruleOpOr
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9365,11 +9443,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3337:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
-            	    // InternalPerspectiveDsl.g:3338:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalPerspectiveDsl.g:3365:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalPerspectiveDsl.g:3366:5: (lv_rightOperand_3_0= ruleXAndExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3338:5: (lv_rightOperand_3_0= ruleXAndExpression )
-            	    // InternalPerspectiveDsl.g:3339:6: lv_rightOperand_3_0= ruleXAndExpression
+            	    // InternalPerspectiveDsl.g:3366:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalPerspectiveDsl.g:3367:6: lv_rightOperand_3_0= ruleXAndExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9434,7 +9512,7 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // InternalPerspectiveDsl.g:3361:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    // InternalPerspectiveDsl.g:3389:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
     public final String entryRuleOpOr() throws RecognitionException {
         String current = null;
 
@@ -9442,8 +9520,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3361:44: (iv_ruleOpOr= ruleOpOr EOF )
-            // InternalPerspectiveDsl.g:3362:2: iv_ruleOpOr= ruleOpOr EOF
+            // InternalPerspectiveDsl.g:3389:44: (iv_ruleOpOr= ruleOpOr EOF )
+            // InternalPerspectiveDsl.g:3390:2: iv_ruleOpOr= ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOrRule()); 
@@ -9474,7 +9552,7 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // InternalPerspectiveDsl.g:3368:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
+    // InternalPerspectiveDsl.g:3396:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
     public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -9484,10 +9562,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3374:2: (kw= '||' )
-            // InternalPerspectiveDsl.g:3375:2: kw= '||'
+            // InternalPerspectiveDsl.g:3402:2: (kw= '||' )
+            // InternalPerspectiveDsl.g:3403:2: kw= '||'
             {
-            kw=(Token)match(input,78,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,80,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               		current.merge(kw);
@@ -9516,7 +9594,7 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // InternalPerspectiveDsl.g:3383:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    // InternalPerspectiveDsl.g:3411:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
     public final EObject entryRuleXAndExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9524,8 +9602,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3383:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
-            // InternalPerspectiveDsl.g:3384:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            // InternalPerspectiveDsl.g:3411:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // InternalPerspectiveDsl.g:3412:2: iv_ruleXAndExpression= ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAndExpressionRule()); 
@@ -9556,7 +9634,7 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // InternalPerspectiveDsl.g:3390:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3418:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
     public final EObject ruleXAndExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9569,11 +9647,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3396:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:3397:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3424:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3425:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3397:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
-            // InternalPerspectiveDsl.g:3398:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalPerspectiveDsl.g:3425:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3426:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -9591,13 +9669,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3406:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalPerspectiveDsl.g:3434:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
             loop41:
             do {
                 int alt41=2;
                 int LA41_0 = input.LA(1);
 
-                if ( (LA41_0==79) ) {
+                if ( (LA41_0==81) ) {
                     int LA41_2 = input.LA(2);
 
                     if ( (synpred9_InternalPerspectiveDsl()) ) {
@@ -9610,16 +9688,16 @@
 
                 switch (alt41) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3407:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalPerspectiveDsl.g:3435:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3407:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
-            	    // InternalPerspectiveDsl.g:3408:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    // InternalPerspectiveDsl.g:3435:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // InternalPerspectiveDsl.g:3436:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3418:5: ( () ( ( ruleOpAnd ) ) )
-            	    // InternalPerspectiveDsl.g:3419:6: () ( ( ruleOpAnd ) )
+            	    // InternalPerspectiveDsl.g:3446:5: ( () ( ( ruleOpAnd ) ) )
+            	    // InternalPerspectiveDsl.g:3447:6: () ( ( ruleOpAnd ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3419:6: ()
-            	    // InternalPerspectiveDsl.g:3420:7: 
+            	    // InternalPerspectiveDsl.g:3447:6: ()
+            	    // InternalPerspectiveDsl.g:3448:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9631,11 +9709,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3426:6: ( ( ruleOpAnd ) )
-            	    // InternalPerspectiveDsl.g:3427:7: ( ruleOpAnd )
+            	    // InternalPerspectiveDsl.g:3454:6: ( ( ruleOpAnd ) )
+            	    // InternalPerspectiveDsl.g:3455:7: ( ruleOpAnd )
             	    {
-            	    // InternalPerspectiveDsl.g:3427:7: ( ruleOpAnd )
-            	    // InternalPerspectiveDsl.g:3428:8: ruleOpAnd
+            	    // InternalPerspectiveDsl.g:3455:7: ( ruleOpAnd )
+            	    // InternalPerspectiveDsl.g:3456:8: ruleOpAnd
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9671,11 +9749,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3444:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
-            	    // InternalPerspectiveDsl.g:3445:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalPerspectiveDsl.g:3472:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalPerspectiveDsl.g:3473:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3445:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
-            	    // InternalPerspectiveDsl.g:3446:6: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    // InternalPerspectiveDsl.g:3473:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalPerspectiveDsl.g:3474:6: lv_rightOperand_3_0= ruleXEqualityExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9740,7 +9818,7 @@
 
 
     // $ANTLR start "entryRuleOpAnd"
-    // InternalPerspectiveDsl.g:3468:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
+    // InternalPerspectiveDsl.g:3496:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
     public final String entryRuleOpAnd() throws RecognitionException {
         String current = null;
 
@@ -9748,8 +9826,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3468:45: (iv_ruleOpAnd= ruleOpAnd EOF )
-            // InternalPerspectiveDsl.g:3469:2: iv_ruleOpAnd= ruleOpAnd EOF
+            // InternalPerspectiveDsl.g:3496:45: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // InternalPerspectiveDsl.g:3497:2: iv_ruleOpAnd= ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpAndRule()); 
@@ -9780,7 +9858,7 @@
 
 
     // $ANTLR start "ruleOpAnd"
-    // InternalPerspectiveDsl.g:3475:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
+    // InternalPerspectiveDsl.g:3503:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
     public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -9790,10 +9868,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3481:2: (kw= '&&' )
-            // InternalPerspectiveDsl.g:3482:2: kw= '&&'
+            // InternalPerspectiveDsl.g:3509:2: (kw= '&&' )
+            // InternalPerspectiveDsl.g:3510:2: kw= '&&'
             {
-            kw=(Token)match(input,79,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,81,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               		current.merge(kw);
@@ -9822,7 +9900,7 @@
 
 
     // $ANTLR start "entryRuleXEqualityExpression"
-    // InternalPerspectiveDsl.g:3490:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
+    // InternalPerspectiveDsl.g:3518:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
     public final EObject entryRuleXEqualityExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9830,8 +9908,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3490:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
-            // InternalPerspectiveDsl.g:3491:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
+            // InternalPerspectiveDsl.g:3518:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // InternalPerspectiveDsl.g:3519:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
@@ -9862,7 +9940,7 @@
 
 
     // $ANTLR start "ruleXEqualityExpression"
-    // InternalPerspectiveDsl.g:3497:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3525:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
     public final EObject ruleXEqualityExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9875,11 +9953,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3503:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:3504:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3531:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3532:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3504:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            // InternalPerspectiveDsl.g:3505:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            // InternalPerspectiveDsl.g:3532:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3533:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -9897,12 +9975,12 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3513:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            // InternalPerspectiveDsl.g:3541:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
             loop42:
             do {
                 int alt42=2;
                 switch ( input.LA(1) ) {
-                case 80:
+                case 82:
                     {
                     int LA42_2 = input.LA(2);
 
@@ -9913,7 +9991,7 @@
 
                     }
                     break;
-                case 81:
+                case 83:
                     {
                     int LA42_3 = input.LA(2);
 
@@ -9924,7 +10002,7 @@
 
                     }
                     break;
-                case 82:
+                case 84:
                     {
                     int LA42_4 = input.LA(2);
 
@@ -9935,7 +10013,7 @@
 
                     }
                     break;
-                case 83:
+                case 85:
                     {
                     int LA42_5 = input.LA(2);
 
@@ -9951,16 +10029,16 @@
 
                 switch (alt42) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3514:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalPerspectiveDsl.g:3542:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3514:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
-            	    // InternalPerspectiveDsl.g:3515:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
+            	    // InternalPerspectiveDsl.g:3542:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // InternalPerspectiveDsl.g:3543:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3525:5: ( () ( ( ruleOpEquality ) ) )
-            	    // InternalPerspectiveDsl.g:3526:6: () ( ( ruleOpEquality ) )
+            	    // InternalPerspectiveDsl.g:3553:5: ( () ( ( ruleOpEquality ) ) )
+            	    // InternalPerspectiveDsl.g:3554:6: () ( ( ruleOpEquality ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3526:6: ()
-            	    // InternalPerspectiveDsl.g:3527:7: 
+            	    // InternalPerspectiveDsl.g:3554:6: ()
+            	    // InternalPerspectiveDsl.g:3555:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9972,11 +10050,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3533:6: ( ( ruleOpEquality ) )
-            	    // InternalPerspectiveDsl.g:3534:7: ( ruleOpEquality )
+            	    // InternalPerspectiveDsl.g:3561:6: ( ( ruleOpEquality ) )
+            	    // InternalPerspectiveDsl.g:3562:7: ( ruleOpEquality )
             	    {
-            	    // InternalPerspectiveDsl.g:3534:7: ( ruleOpEquality )
-            	    // InternalPerspectiveDsl.g:3535:8: ruleOpEquality
+            	    // InternalPerspectiveDsl.g:3562:7: ( ruleOpEquality )
+            	    // InternalPerspectiveDsl.g:3563:8: ruleOpEquality
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10012,11 +10090,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3551:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    // InternalPerspectiveDsl.g:3552:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalPerspectiveDsl.g:3579:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalPerspectiveDsl.g:3580:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3552:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    // InternalPerspectiveDsl.g:3553:6: lv_rightOperand_3_0= ruleXRelationalExpression
+            	    // InternalPerspectiveDsl.g:3580:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalPerspectiveDsl.g:3581:6: lv_rightOperand_3_0= ruleXRelationalExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10081,7 +10159,7 @@
 
 
     // $ANTLR start "entryRuleOpEquality"
-    // InternalPerspectiveDsl.g:3575:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    // InternalPerspectiveDsl.g:3603:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
     public final String entryRuleOpEquality() throws RecognitionException {
         String current = null;
 
@@ -10089,8 +10167,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3575:50: (iv_ruleOpEquality= ruleOpEquality EOF )
-            // InternalPerspectiveDsl.g:3576:2: iv_ruleOpEquality= ruleOpEquality EOF
+            // InternalPerspectiveDsl.g:3603:50: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // InternalPerspectiveDsl.g:3604:2: iv_ruleOpEquality= ruleOpEquality EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpEqualityRule()); 
@@ -10121,7 +10199,7 @@
 
 
     // $ANTLR start "ruleOpEquality"
-    // InternalPerspectiveDsl.g:3582:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
+    // InternalPerspectiveDsl.g:3610:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
     public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -10131,28 +10209,28 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3588:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
-            // InternalPerspectiveDsl.g:3589:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            // InternalPerspectiveDsl.g:3616:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // InternalPerspectiveDsl.g:3617:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
             {
-            // InternalPerspectiveDsl.g:3589:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            // InternalPerspectiveDsl.g:3617:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
             int alt43=4;
             switch ( input.LA(1) ) {
-            case 80:
+            case 82:
                 {
                 alt43=1;
                 }
                 break;
-            case 81:
+            case 83:
                 {
                 alt43=2;
                 }
                 break;
-            case 82:
+            case 84:
                 {
                 alt43=3;
                 }
                 break;
-            case 83:
+            case 85:
                 {
                 alt43=4;
                 }
@@ -10167,9 +10245,9 @@
 
             switch (alt43) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3590:3: kw= '=='
+                    // InternalPerspectiveDsl.g:3618:3: kw= '=='
                     {
-                    kw=(Token)match(input,80,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,82,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -10180,9 +10258,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3596:3: kw= '!='
+                    // InternalPerspectiveDsl.g:3624:3: kw= '!='
                     {
-                    kw=(Token)match(input,81,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,83,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -10193,9 +10271,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3602:3: kw= '==='
+                    // InternalPerspectiveDsl.g:3630:3: kw= '==='
                     {
-                    kw=(Token)match(input,82,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,84,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -10206,9 +10284,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3608:3: kw= '!=='
+                    // InternalPerspectiveDsl.g:3636:3: kw= '!=='
                     {
-                    kw=(Token)match(input,83,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,85,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -10243,7 +10321,7 @@
 
 
     // $ANTLR start "entryRuleXRelationalExpression"
-    // InternalPerspectiveDsl.g:3617:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    // InternalPerspectiveDsl.g:3645:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
     public final EObject entryRuleXRelationalExpression() throws RecognitionException {
         EObject current = null;
 
@@ -10251,8 +10329,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3617:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
-            // InternalPerspectiveDsl.g:3618:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            // InternalPerspectiveDsl.g:3645:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // InternalPerspectiveDsl.g:3646:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
@@ -10283,7 +10361,7 @@
 
 
     // $ANTLR start "ruleXRelationalExpression"
-    // InternalPerspectiveDsl.g:3624:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3652:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
     public final EObject ruleXRelationalExpression() throws RecognitionException {
         EObject current = null;
 
@@ -10299,11 +10377,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3630:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
-            // InternalPerspectiveDsl.g:3631:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalPerspectiveDsl.g:3658:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // InternalPerspectiveDsl.g:3659:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3631:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
-            // InternalPerspectiveDsl.g:3632:3: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            // InternalPerspectiveDsl.g:3659:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalPerspectiveDsl.g:3660:3: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -10321,12 +10399,12 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3640:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            // InternalPerspectiveDsl.g:3668:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
             loop44:
             do {
                 int alt44=3;
                 switch ( input.LA(1) ) {
-                case 75:
+                case 77:
                     {
                     int LA44_2 = input.LA(2);
 
@@ -10337,7 +10415,7 @@
 
                     }
                     break;
-                case 76:
+                case 78:
                     {
                     int LA44_3 = input.LA(2);
 
@@ -10348,7 +10426,7 @@
 
                     }
                     break;
-                case 84:
+                case 86:
                     {
                     int LA44_4 = input.LA(2);
 
@@ -10359,7 +10437,7 @@
 
                     }
                     break;
-                case 77:
+                case 79:
                     {
                     int LA44_5 = input.LA(2);
 
@@ -10375,19 +10453,19 @@
 
                 switch (alt44) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3641:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalPerspectiveDsl.g:3669:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3641:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    // InternalPerspectiveDsl.g:3642:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:3669:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalPerspectiveDsl.g:3670:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3642:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
-            	    // InternalPerspectiveDsl.g:3643:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    // InternalPerspectiveDsl.g:3670:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // InternalPerspectiveDsl.g:3671:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
             	    {
-            	    // InternalPerspectiveDsl.g:3649:6: ( () otherlv_2= 'instanceof' )
-            	    // InternalPerspectiveDsl.g:3650:7: () otherlv_2= 'instanceof'
+            	    // InternalPerspectiveDsl.g:3677:6: ( () otherlv_2= 'instanceof' )
+            	    // InternalPerspectiveDsl.g:3678:7: () otherlv_2= 'instanceof'
             	    {
-            	    // InternalPerspectiveDsl.g:3650:7: ()
-            	    // InternalPerspectiveDsl.g:3651:8: 
+            	    // InternalPerspectiveDsl.g:3678:7: ()
+            	    // InternalPerspectiveDsl.g:3679:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10399,7 +10477,7 @@
 
             	    }
 
-            	    otherlv_2=(Token)match(input,84,FOLLOW_53); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,86,FOLLOW_53); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
@@ -10411,11 +10489,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3663:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // InternalPerspectiveDsl.g:3664:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:3691:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:3692:6: (lv_type_3_0= ruleJvmTypeReference )
             	    {
-            	    // InternalPerspectiveDsl.g:3664:6: (lv_type_3_0= ruleJvmTypeReference )
-            	    // InternalPerspectiveDsl.g:3665:7: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalPerspectiveDsl.g:3692:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:3693:7: lv_type_3_0= ruleJvmTypeReference
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10453,19 +10531,19 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalPerspectiveDsl.g:3684:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalPerspectiveDsl.g:3712:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3684:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    // InternalPerspectiveDsl.g:3685:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalPerspectiveDsl.g:3712:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalPerspectiveDsl.g:3713:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3685:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
-            	    // InternalPerspectiveDsl.g:3686:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    // InternalPerspectiveDsl.g:3713:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // InternalPerspectiveDsl.g:3714:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3696:6: ( () ( ( ruleOpCompare ) ) )
-            	    // InternalPerspectiveDsl.g:3697:7: () ( ( ruleOpCompare ) )
+            	    // InternalPerspectiveDsl.g:3724:6: ( () ( ( ruleOpCompare ) ) )
+            	    // InternalPerspectiveDsl.g:3725:7: () ( ( ruleOpCompare ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3697:7: ()
-            	    // InternalPerspectiveDsl.g:3698:8: 
+            	    // InternalPerspectiveDsl.g:3725:7: ()
+            	    // InternalPerspectiveDsl.g:3726:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10477,11 +10555,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3704:7: ( ( ruleOpCompare ) )
-            	    // InternalPerspectiveDsl.g:3705:8: ( ruleOpCompare )
+            	    // InternalPerspectiveDsl.g:3732:7: ( ( ruleOpCompare ) )
+            	    // InternalPerspectiveDsl.g:3733:8: ( ruleOpCompare )
             	    {
-            	    // InternalPerspectiveDsl.g:3705:8: ( ruleOpCompare )
-            	    // InternalPerspectiveDsl.g:3706:9: ruleOpCompare
+            	    // InternalPerspectiveDsl.g:3733:8: ( ruleOpCompare )
+            	    // InternalPerspectiveDsl.g:3734:9: ruleOpCompare
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10517,11 +10595,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3722:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    // InternalPerspectiveDsl.g:3723:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalPerspectiveDsl.g:3750:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalPerspectiveDsl.g:3751:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3723:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    // InternalPerspectiveDsl.g:3724:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    // InternalPerspectiveDsl.g:3751:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalPerspectiveDsl.g:3752:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10589,7 +10667,7 @@
 
 
     // $ANTLR start "entryRuleOpCompare"
-    // InternalPerspectiveDsl.g:3747:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    // InternalPerspectiveDsl.g:3775:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
     public final String entryRuleOpCompare() throws RecognitionException {
         String current = null;
 
@@ -10597,8 +10675,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3747:49: (iv_ruleOpCompare= ruleOpCompare EOF )
-            // InternalPerspectiveDsl.g:3748:2: iv_ruleOpCompare= ruleOpCompare EOF
+            // InternalPerspectiveDsl.g:3775:49: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // InternalPerspectiveDsl.g:3776:2: iv_ruleOpCompare= ruleOpCompare EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpCompareRule()); 
@@ -10629,7 +10707,7 @@
 
 
     // $ANTLR start "ruleOpCompare"
-    // InternalPerspectiveDsl.g:3754:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
+    // InternalPerspectiveDsl.g:3782:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
     public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -10639,25 +10717,25 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3760:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
-            // InternalPerspectiveDsl.g:3761:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalPerspectiveDsl.g:3788:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // InternalPerspectiveDsl.g:3789:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
             {
-            // InternalPerspectiveDsl.g:3761:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalPerspectiveDsl.g:3789:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
             int alt45=4;
             switch ( input.LA(1) ) {
-            case 77:
+            case 79:
                 {
                 alt45=1;
                 }
                 break;
-            case 75:
+            case 77:
                 {
                 int LA45_2 = input.LA(2);
 
-                if ( (LA45_2==EOF||(LA45_2>=RULE_ID && LA45_2<=RULE_DECIMAL)||LA45_2==14||(LA45_2>=56 && LA45_2<=58)||LA45_2==63||(LA45_2>=67 && LA45_2<=68)||LA45_2==75||(LA45_2>=91 && LA45_2<=92)||LA45_2==96||LA45_2==104||LA45_2==106||(LA45_2>=110 && LA45_2<=112)||(LA45_2>=115 && LA45_2<=124)||LA45_2==126) ) {
+                if ( (LA45_2==EOF||(LA45_2>=RULE_ID && LA45_2<=RULE_DECIMAL)||LA45_2==14||(LA45_2>=58 && LA45_2<=60)||LA45_2==65||(LA45_2>=69 && LA45_2<=70)||LA45_2==77||(LA45_2>=93 && LA45_2<=94)||LA45_2==98||LA45_2==106||LA45_2==108||(LA45_2>=112 && LA45_2<=114)||(LA45_2>=117 && LA45_2<=126)||LA45_2==128) ) {
                     alt45=4;
                 }
-                else if ( (LA45_2==66) ) {
+                else if ( (LA45_2==68) ) {
                     alt45=2;
                 }
                 else {
@@ -10669,7 +10747,7 @@
                 }
                 }
                 break;
-            case 76:
+            case 78:
                 {
                 alt45=3;
                 }
@@ -10684,9 +10762,9 @@
 
             switch (alt45) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3762:3: kw= '>='
+                    // InternalPerspectiveDsl.g:3790:3: kw= '>='
                     {
-                    kw=(Token)match(input,77,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,79,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -10697,19 +10775,19 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3768:3: (kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:3796:3: (kw= '<' kw= '=' )
                     {
-                    // InternalPerspectiveDsl.g:3768:3: (kw= '<' kw= '=' )
-                    // InternalPerspectiveDsl.g:3769:4: kw= '<' kw= '='
+                    // InternalPerspectiveDsl.g:3796:3: (kw= '<' kw= '=' )
+                    // InternalPerspectiveDsl.g:3797:4: kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,75,FOLLOW_39); if (state.failed) return current;
+                    kw=(Token)match(input,77,FOLLOW_39); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
                       			
                     }
-                    kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,68,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -10723,9 +10801,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3781:3: kw= '>'
+                    // InternalPerspectiveDsl.g:3809:3: kw= '>'
                     {
-                    kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,78,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -10736,9 +10814,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3787:3: kw= '<'
+                    // InternalPerspectiveDsl.g:3815:3: kw= '<'
                     {
-                    kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,77,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -10773,7 +10851,7 @@
 
 
     // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // InternalPerspectiveDsl.g:3796:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    // InternalPerspectiveDsl.g:3824:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
     public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
         EObject current = null;
 
@@ -10781,8 +10859,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3796:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
-            // InternalPerspectiveDsl.g:3797:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            // InternalPerspectiveDsl.g:3824:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // InternalPerspectiveDsl.g:3825:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
@@ -10813,7 +10891,7 @@
 
 
     // $ANTLR start "ruleXOtherOperatorExpression"
-    // InternalPerspectiveDsl.g:3803:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:3831:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
     public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
         EObject current = null;
 
@@ -10826,11 +10904,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3809:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:3810:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3837:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:3838:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:3810:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
-            // InternalPerspectiveDsl.g:3811:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalPerspectiveDsl.g:3838:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalPerspectiveDsl.g:3839:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -10848,23 +10926,23 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:3819:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalPerspectiveDsl.g:3847:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
             loop46:
             do {
                 int alt46=2;
                 alt46 = dfa46.predict(input);
                 switch (alt46) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:3820:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalPerspectiveDsl.g:3848:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3820:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
-            	    // InternalPerspectiveDsl.g:3821:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    // InternalPerspectiveDsl.g:3848:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // InternalPerspectiveDsl.g:3849:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3831:5: ( () ( ( ruleOpOther ) ) )
-            	    // InternalPerspectiveDsl.g:3832:6: () ( ( ruleOpOther ) )
+            	    // InternalPerspectiveDsl.g:3859:5: ( () ( ( ruleOpOther ) ) )
+            	    // InternalPerspectiveDsl.g:3860:6: () ( ( ruleOpOther ) )
             	    {
-            	    // InternalPerspectiveDsl.g:3832:6: ()
-            	    // InternalPerspectiveDsl.g:3833:7: 
+            	    // InternalPerspectiveDsl.g:3860:6: ()
+            	    // InternalPerspectiveDsl.g:3861:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10876,11 +10954,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3839:6: ( ( ruleOpOther ) )
-            	    // InternalPerspectiveDsl.g:3840:7: ( ruleOpOther )
+            	    // InternalPerspectiveDsl.g:3867:6: ( ( ruleOpOther ) )
+            	    // InternalPerspectiveDsl.g:3868:7: ( ruleOpOther )
             	    {
-            	    // InternalPerspectiveDsl.g:3840:7: ( ruleOpOther )
-            	    // InternalPerspectiveDsl.g:3841:8: ruleOpOther
+            	    // InternalPerspectiveDsl.g:3868:7: ( ruleOpOther )
+            	    // InternalPerspectiveDsl.g:3869:8: ruleOpOther
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10916,11 +10994,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:3857:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
-            	    // InternalPerspectiveDsl.g:3858:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalPerspectiveDsl.g:3885:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalPerspectiveDsl.g:3886:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:3858:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    // InternalPerspectiveDsl.g:3859:6: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    // InternalPerspectiveDsl.g:3886:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalPerspectiveDsl.g:3887:6: lv_rightOperand_3_0= ruleXAdditiveExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -10985,7 +11063,7 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // InternalPerspectiveDsl.g:3881:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    // InternalPerspectiveDsl.g:3909:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
     public final String entryRuleOpOther() throws RecognitionException {
         String current = null;
 
@@ -10993,8 +11071,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:3881:47: (iv_ruleOpOther= ruleOpOther EOF )
-            // InternalPerspectiveDsl.g:3882:2: iv_ruleOpOther= ruleOpOther EOF
+            // InternalPerspectiveDsl.g:3909:47: (iv_ruleOpOther= ruleOpOther EOF )
+            // InternalPerspectiveDsl.g:3910:2: iv_ruleOpOther= ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOtherRule()); 
@@ -11025,7 +11103,7 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // InternalPerspectiveDsl.g:3888:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
+    // InternalPerspectiveDsl.g:3916:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
     public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -11035,17 +11113,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:3894:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
-            // InternalPerspectiveDsl.g:3895:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalPerspectiveDsl.g:3922:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // InternalPerspectiveDsl.g:3923:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             {
-            // InternalPerspectiveDsl.g:3895:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalPerspectiveDsl.g:3923:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             int alt49=9;
             alt49 = dfa49.predict(input);
             switch (alt49) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:3896:3: kw= '->'
+                    // InternalPerspectiveDsl.g:3924:3: kw= '->'
                     {
-                    kw=(Token)match(input,85,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,87,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11056,9 +11134,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:3902:3: kw= '..<'
+                    // InternalPerspectiveDsl.g:3930:3: kw= '..<'
                     {
-                    kw=(Token)match(input,86,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,88,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11069,19 +11147,19 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:3908:3: (kw= '>' kw= '..' )
+                    // InternalPerspectiveDsl.g:3936:3: (kw= '>' kw= '..' )
                     {
-                    // InternalPerspectiveDsl.g:3908:3: (kw= '>' kw= '..' )
-                    // InternalPerspectiveDsl.g:3909:4: kw= '>' kw= '..'
+                    // InternalPerspectiveDsl.g:3936:3: (kw= '>' kw= '..' )
+                    // InternalPerspectiveDsl.g:3937:4: kw= '>' kw= '..'
                     {
-                    kw=(Token)match(input,76,FOLLOW_55); if (state.failed) return current;
+                    kw=(Token)match(input,78,FOLLOW_55); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0());
                       			
                     }
-                    kw=(Token)match(input,87,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,89,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -11095,9 +11173,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:3921:3: kw= '..'
+                    // InternalPerspectiveDsl.g:3949:3: kw= '..'
                     {
-                    kw=(Token)match(input,87,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,89,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11108,9 +11186,9 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:3927:3: kw= '=>'
+                    // InternalPerspectiveDsl.g:3955:3: kw= '=>'
                     {
-                    kw=(Token)match(input,88,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,90,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11121,31 +11199,31 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:3933:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalPerspectiveDsl.g:3961:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                     {
-                    // InternalPerspectiveDsl.g:3933:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
-                    // InternalPerspectiveDsl.g:3934:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalPerspectiveDsl.g:3961:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalPerspectiveDsl.g:3962:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     {
-                    kw=(Token)match(input,76,FOLLOW_56); if (state.failed) return current;
+                    kw=(Token)match(input,78,FOLLOW_56); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:3939:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalPerspectiveDsl.g:3967:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     int alt47=2;
                     int LA47_0 = input.LA(1);
 
-                    if ( (LA47_0==76) ) {
+                    if ( (LA47_0==78) ) {
                         int LA47_1 = input.LA(2);
 
-                        if ( (LA47_1==76) && (synpred14_InternalPerspectiveDsl())) {
-                            alt47=1;
-                        }
-                        else if ( (LA47_1==EOF||(LA47_1>=RULE_ID && LA47_1<=RULE_DECIMAL)||LA47_1==14||(LA47_1>=56 && LA47_1<=58)||LA47_1==63||(LA47_1>=67 && LA47_1<=68)||LA47_1==75||(LA47_1>=91 && LA47_1<=92)||LA47_1==96||LA47_1==104||LA47_1==106||(LA47_1>=110 && LA47_1<=112)||(LA47_1>=115 && LA47_1<=124)||LA47_1==126) ) {
+                        if ( (LA47_1==EOF||(LA47_1>=RULE_ID && LA47_1<=RULE_DECIMAL)||LA47_1==14||(LA47_1>=58 && LA47_1<=60)||LA47_1==65||(LA47_1>=69 && LA47_1<=70)||LA47_1==77||(LA47_1>=93 && LA47_1<=94)||LA47_1==98||LA47_1==106||LA47_1==108||(LA47_1>=112 && LA47_1<=114)||(LA47_1>=117 && LA47_1<=126)||LA47_1==128) ) {
                             alt47=2;
                         }
+                        else if ( (LA47_1==78) && (synpred14_InternalPerspectiveDsl())) {
+                            alt47=1;
+                        }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
@@ -11163,22 +11241,22 @@
                     }
                     switch (alt47) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:3940:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalPerspectiveDsl.g:3968:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                             {
-                            // InternalPerspectiveDsl.g:3940:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
-                            // InternalPerspectiveDsl.g:3941:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            // InternalPerspectiveDsl.g:3968:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalPerspectiveDsl.g:3969:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                             {
-                            // InternalPerspectiveDsl.g:3946:6: (kw= '>' kw= '>' )
-                            // InternalPerspectiveDsl.g:3947:7: kw= '>' kw= '>'
+                            // InternalPerspectiveDsl.g:3974:6: (kw= '>' kw= '>' )
+                            // InternalPerspectiveDsl.g:3975:7: kw= '>' kw= '>'
                             {
-                            kw=(Token)match(input,76,FOLLOW_56); if (state.failed) return current;
+                            kw=(Token)match(input,78,FOLLOW_56); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
                               							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0());
                               						
                             }
-                            kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,78,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
@@ -11195,9 +11273,9 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:3960:5: kw= '>'
+                            // InternalPerspectiveDsl.g:3988:5: kw= '>'
                             {
-                            kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,78,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -11217,23 +11295,23 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:3968:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalPerspectiveDsl.g:3996:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                     {
-                    // InternalPerspectiveDsl.g:3968:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
-                    // InternalPerspectiveDsl.g:3969:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalPerspectiveDsl.g:3996:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalPerspectiveDsl.g:3997:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     {
-                    kw=(Token)match(input,75,FOLLOW_57); if (state.failed) return current;
+                    kw=(Token)match(input,77,FOLLOW_57); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:3974:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalPerspectiveDsl.g:4002:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     int alt48=3;
                     int LA48_0 = input.LA(1);
 
-                    if ( (LA48_0==75) ) {
+                    if ( (LA48_0==77) ) {
                         int LA48_1 = input.LA(2);
 
                         if ( (synpred15_InternalPerspectiveDsl()) ) {
@@ -11250,7 +11328,7 @@
                             throw nvae;
                         }
                     }
-                    else if ( (LA48_0==88) ) {
+                    else if ( (LA48_0==90) ) {
                         alt48=3;
                     }
                     else {
@@ -11262,22 +11340,22 @@
                     }
                     switch (alt48) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:3975:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalPerspectiveDsl.g:4003:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                             {
-                            // InternalPerspectiveDsl.g:3975:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
-                            // InternalPerspectiveDsl.g:3976:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            // InternalPerspectiveDsl.g:4003:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalPerspectiveDsl.g:4004:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                             {
-                            // InternalPerspectiveDsl.g:3981:6: (kw= '<' kw= '<' )
-                            // InternalPerspectiveDsl.g:3982:7: kw= '<' kw= '<'
+                            // InternalPerspectiveDsl.g:4009:6: (kw= '<' kw= '<' )
+                            // InternalPerspectiveDsl.g:4010:7: kw= '<' kw= '<'
                             {
-                            kw=(Token)match(input,75,FOLLOW_46); if (state.failed) return current;
+                            kw=(Token)match(input,77,FOLLOW_46); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
                               							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0());
                               						
                             }
-                            kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,77,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
@@ -11294,9 +11372,9 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:3995:5: kw= '<'
+                            // InternalPerspectiveDsl.g:4023:5: kw= '<'
                             {
-                            kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,77,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -11307,9 +11385,9 @@
                             }
                             break;
                         case 3 :
-                            // InternalPerspectiveDsl.g:4001:5: kw= '=>'
+                            // InternalPerspectiveDsl.g:4029:5: kw= '=>'
                             {
-                            kw=(Token)match(input,88,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,90,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -11329,9 +11407,9 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:4009:3: kw= '<>'
+                    // InternalPerspectiveDsl.g:4037:3: kw= '<>'
                     {
-                    kw=(Token)match(input,89,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,91,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11342,9 +11420,9 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:4015:3: kw= '?:'
+                    // InternalPerspectiveDsl.g:4043:3: kw= '?:'
                     {
-                    kw=(Token)match(input,90,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,92,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11379,7 +11457,7 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // InternalPerspectiveDsl.g:4024:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    // InternalPerspectiveDsl.g:4052:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
     public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11387,8 +11465,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4024:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
-            // InternalPerspectiveDsl.g:4025:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            // InternalPerspectiveDsl.g:4052:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // InternalPerspectiveDsl.g:4053:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
@@ -11419,7 +11497,7 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // InternalPerspectiveDsl.g:4031:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
+    // InternalPerspectiveDsl.g:4059:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
     public final EObject ruleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11432,11 +11510,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4037:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
-            // InternalPerspectiveDsl.g:4038:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalPerspectiveDsl.g:4065:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // InternalPerspectiveDsl.g:4066:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
             {
-            // InternalPerspectiveDsl.g:4038:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
-            // InternalPerspectiveDsl.g:4039:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            // InternalPerspectiveDsl.g:4066:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalPerspectiveDsl.g:4067:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -11454,13 +11532,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:4047:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            // InternalPerspectiveDsl.g:4075:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
             loop50:
             do {
                 int alt50=2;
                 int LA50_0 = input.LA(1);
 
-                if ( (LA50_0==91) ) {
+                if ( (LA50_0==93) ) {
                     int LA50_2 = input.LA(2);
 
                     if ( (synpred16_InternalPerspectiveDsl()) ) {
@@ -11469,7 +11547,7 @@
 
 
                 }
-                else if ( (LA50_0==92) ) {
+                else if ( (LA50_0==94) ) {
                     int LA50_3 = input.LA(2);
 
                     if ( (synpred16_InternalPerspectiveDsl()) ) {
@@ -11482,16 +11560,16 @@
 
                 switch (alt50) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4048:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalPerspectiveDsl.g:4076:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4048:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
-            	    // InternalPerspectiveDsl.g:4049:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    // InternalPerspectiveDsl.g:4076:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // InternalPerspectiveDsl.g:4077:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4059:5: ( () ( ( ruleOpAdd ) ) )
-            	    // InternalPerspectiveDsl.g:4060:6: () ( ( ruleOpAdd ) )
+            	    // InternalPerspectiveDsl.g:4087:5: ( () ( ( ruleOpAdd ) ) )
+            	    // InternalPerspectiveDsl.g:4088:6: () ( ( ruleOpAdd ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4060:6: ()
-            	    // InternalPerspectiveDsl.g:4061:7: 
+            	    // InternalPerspectiveDsl.g:4088:6: ()
+            	    // InternalPerspectiveDsl.g:4089:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11503,11 +11581,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4067:6: ( ( ruleOpAdd ) )
-            	    // InternalPerspectiveDsl.g:4068:7: ( ruleOpAdd )
+            	    // InternalPerspectiveDsl.g:4095:6: ( ( ruleOpAdd ) )
+            	    // InternalPerspectiveDsl.g:4096:7: ( ruleOpAdd )
             	    {
-            	    // InternalPerspectiveDsl.g:4068:7: ( ruleOpAdd )
-            	    // InternalPerspectiveDsl.g:4069:8: ruleOpAdd
+            	    // InternalPerspectiveDsl.g:4096:7: ( ruleOpAdd )
+            	    // InternalPerspectiveDsl.g:4097:8: ruleOpAdd
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11543,11 +11621,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4085:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
-            	    // InternalPerspectiveDsl.g:4086:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalPerspectiveDsl.g:4113:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalPerspectiveDsl.g:4114:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
             	    {
-            	    // InternalPerspectiveDsl.g:4086:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
-            	    // InternalPerspectiveDsl.g:4087:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    // InternalPerspectiveDsl.g:4114:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalPerspectiveDsl.g:4115:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11612,7 +11690,7 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // InternalPerspectiveDsl.g:4109:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    // InternalPerspectiveDsl.g:4137:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
     public final String entryRuleOpAdd() throws RecognitionException {
         String current = null;
 
@@ -11620,8 +11698,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4109:45: (iv_ruleOpAdd= ruleOpAdd EOF )
-            // InternalPerspectiveDsl.g:4110:2: iv_ruleOpAdd= ruleOpAdd EOF
+            // InternalPerspectiveDsl.g:4137:45: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // InternalPerspectiveDsl.g:4138:2: iv_ruleOpAdd= ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpAddRule()); 
@@ -11652,7 +11730,7 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // InternalPerspectiveDsl.g:4116:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    // InternalPerspectiveDsl.g:4144:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
     public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -11662,17 +11740,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4122:2: ( (kw= '+' | kw= '-' ) )
-            // InternalPerspectiveDsl.g:4123:2: (kw= '+' | kw= '-' )
+            // InternalPerspectiveDsl.g:4150:2: ( (kw= '+' | kw= '-' ) )
+            // InternalPerspectiveDsl.g:4151:2: (kw= '+' | kw= '-' )
             {
-            // InternalPerspectiveDsl.g:4123:2: (kw= '+' | kw= '-' )
+            // InternalPerspectiveDsl.g:4151:2: (kw= '+' | kw= '-' )
             int alt51=2;
             int LA51_0 = input.LA(1);
 
-            if ( (LA51_0==91) ) {
+            if ( (LA51_0==93) ) {
                 alt51=1;
             }
-            else if ( (LA51_0==92) ) {
+            else if ( (LA51_0==94) ) {
                 alt51=2;
             }
             else {
@@ -11684,9 +11762,9 @@
             }
             switch (alt51) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4124:3: kw= '+'
+                    // InternalPerspectiveDsl.g:4152:3: kw= '+'
                     {
-                    kw=(Token)match(input,91,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,93,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11697,9 +11775,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4130:3: kw= '-'
+                    // InternalPerspectiveDsl.g:4158:3: kw= '-'
                     {
-                    kw=(Token)match(input,92,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,94,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -11734,7 +11812,7 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // InternalPerspectiveDsl.g:4139:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    // InternalPerspectiveDsl.g:4167:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
     public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11742,8 +11820,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4139:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
-            // InternalPerspectiveDsl.g:4140:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
+            // InternalPerspectiveDsl.g:4167:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // InternalPerspectiveDsl.g:4168:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
@@ -11774,7 +11852,7 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // InternalPerspectiveDsl.g:4146:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
+    // InternalPerspectiveDsl.g:4174:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
     public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11787,11 +11865,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4152:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
-            // InternalPerspectiveDsl.g:4153:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalPerspectiveDsl.g:4180:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // InternalPerspectiveDsl.g:4181:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
             {
-            // InternalPerspectiveDsl.g:4153:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
-            // InternalPerspectiveDsl.g:4154:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            // InternalPerspectiveDsl.g:4181:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalPerspectiveDsl.g:4182:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -11809,12 +11887,12 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:4162:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            // InternalPerspectiveDsl.g:4190:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
             loop52:
             do {
                 int alt52=2;
                 switch ( input.LA(1) ) {
-                case 59:
+                case 61:
                     {
                     int LA52_2 = input.LA(2);
 
@@ -11825,7 +11903,7 @@
 
                     }
                     break;
-                case 93:
+                case 95:
                     {
                     int LA52_3 = input.LA(2);
 
@@ -11836,7 +11914,7 @@
 
                     }
                     break;
-                case 94:
+                case 96:
                     {
                     int LA52_4 = input.LA(2);
 
@@ -11847,7 +11925,7 @@
 
                     }
                     break;
-                case 95:
+                case 97:
                     {
                     int LA52_5 = input.LA(2);
 
@@ -11863,16 +11941,16 @@
 
                 switch (alt52) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4163:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalPerspectiveDsl.g:4191:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4163:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
-            	    // InternalPerspectiveDsl.g:4164:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
+            	    // InternalPerspectiveDsl.g:4191:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // InternalPerspectiveDsl.g:4192:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4174:5: ( () ( ( ruleOpMulti ) ) )
-            	    // InternalPerspectiveDsl.g:4175:6: () ( ( ruleOpMulti ) )
+            	    // InternalPerspectiveDsl.g:4202:5: ( () ( ( ruleOpMulti ) ) )
+            	    // InternalPerspectiveDsl.g:4203:6: () ( ( ruleOpMulti ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4175:6: ()
-            	    // InternalPerspectiveDsl.g:4176:7: 
+            	    // InternalPerspectiveDsl.g:4203:6: ()
+            	    // InternalPerspectiveDsl.g:4204:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11884,11 +11962,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4182:6: ( ( ruleOpMulti ) )
-            	    // InternalPerspectiveDsl.g:4183:7: ( ruleOpMulti )
+            	    // InternalPerspectiveDsl.g:4210:6: ( ( ruleOpMulti ) )
+            	    // InternalPerspectiveDsl.g:4211:7: ( ruleOpMulti )
             	    {
-            	    // InternalPerspectiveDsl.g:4183:7: ( ruleOpMulti )
-            	    // InternalPerspectiveDsl.g:4184:8: ruleOpMulti
+            	    // InternalPerspectiveDsl.g:4211:7: ( ruleOpMulti )
+            	    // InternalPerspectiveDsl.g:4212:8: ruleOpMulti
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11924,11 +12002,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4200:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
-            	    // InternalPerspectiveDsl.g:4201:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalPerspectiveDsl.g:4228:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalPerspectiveDsl.g:4229:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
             	    {
-            	    // InternalPerspectiveDsl.g:4201:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
-            	    // InternalPerspectiveDsl.g:4202:6: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    // InternalPerspectiveDsl.g:4229:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalPerspectiveDsl.g:4230:6: lv_rightOperand_3_0= ruleXUnaryOperation
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11993,7 +12071,7 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // InternalPerspectiveDsl.g:4224:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    // InternalPerspectiveDsl.g:4252:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
     public final String entryRuleOpMulti() throws RecognitionException {
         String current = null;
 
@@ -12001,8 +12079,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4224:47: (iv_ruleOpMulti= ruleOpMulti EOF )
-            // InternalPerspectiveDsl.g:4225:2: iv_ruleOpMulti= ruleOpMulti EOF
+            // InternalPerspectiveDsl.g:4252:47: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // InternalPerspectiveDsl.g:4253:2: iv_ruleOpMulti= ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiRule()); 
@@ -12033,7 +12111,7 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // InternalPerspectiveDsl.g:4231:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
+    // InternalPerspectiveDsl.g:4259:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
     public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -12043,28 +12121,28 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4237:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
-            // InternalPerspectiveDsl.g:4238:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            // InternalPerspectiveDsl.g:4265:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // InternalPerspectiveDsl.g:4266:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
             {
-            // InternalPerspectiveDsl.g:4238:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            // InternalPerspectiveDsl.g:4266:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
             int alt53=4;
             switch ( input.LA(1) ) {
-            case 59:
+            case 61:
                 {
                 alt53=1;
                 }
                 break;
-            case 93:
+            case 95:
                 {
                 alt53=2;
                 }
                 break;
-            case 94:
+            case 96:
                 {
                 alt53=3;
                 }
                 break;
-            case 95:
+            case 97:
                 {
                 alt53=4;
                 }
@@ -12079,9 +12157,9 @@
 
             switch (alt53) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4239:3: kw= '*'
+                    // InternalPerspectiveDsl.g:4267:3: kw= '*'
                     {
-                    kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -12092,9 +12170,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4245:3: kw= '**'
+                    // InternalPerspectiveDsl.g:4273:3: kw= '**'
                     {
-                    kw=(Token)match(input,93,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,95,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -12105,9 +12183,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:4251:3: kw= '/'
+                    // InternalPerspectiveDsl.g:4279:3: kw= '/'
                     {
-                    kw=(Token)match(input,94,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,96,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -12118,9 +12196,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:4257:3: kw= '%'
+                    // InternalPerspectiveDsl.g:4285:3: kw= '%'
                     {
-                    kw=(Token)match(input,95,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,97,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -12155,7 +12233,7 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // InternalPerspectiveDsl.g:4266:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    // InternalPerspectiveDsl.g:4294:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
     public final EObject entryRuleXUnaryOperation() throws RecognitionException {
         EObject current = null;
 
@@ -12163,8 +12241,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4266:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
-            // InternalPerspectiveDsl.g:4267:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
+            // InternalPerspectiveDsl.g:4294:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // InternalPerspectiveDsl.g:4295:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
@@ -12195,7 +12273,7 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // InternalPerspectiveDsl.g:4273:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
+    // InternalPerspectiveDsl.g:4301:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
     public final EObject ruleXUnaryOperation() throws RecognitionException {
         EObject current = null;
 
@@ -12208,17 +12286,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4279:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
-            // InternalPerspectiveDsl.g:4280:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            // InternalPerspectiveDsl.g:4307:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // InternalPerspectiveDsl.g:4308:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
             {
-            // InternalPerspectiveDsl.g:4280:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            // InternalPerspectiveDsl.g:4308:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
             int alt54=2;
             int LA54_0 = input.LA(1);
 
-            if ( ((LA54_0>=91 && LA54_0<=92)||LA54_0==96) ) {
+            if ( ((LA54_0>=93 && LA54_0<=94)||LA54_0==98) ) {
                 alt54=1;
             }
-            else if ( ((LA54_0>=RULE_ID && LA54_0<=RULE_DECIMAL)||LA54_0==14||(LA54_0>=56 && LA54_0<=58)||LA54_0==63||(LA54_0>=67 && LA54_0<=68)||LA54_0==75||LA54_0==104||LA54_0==106||(LA54_0>=110 && LA54_0<=112)||(LA54_0>=115 && LA54_0<=124)||LA54_0==126) ) {
+            else if ( ((LA54_0>=RULE_ID && LA54_0<=RULE_DECIMAL)||LA54_0==14||(LA54_0>=58 && LA54_0<=60)||LA54_0==65||(LA54_0>=69 && LA54_0<=70)||LA54_0==77||LA54_0==106||LA54_0==108||(LA54_0>=112 && LA54_0<=114)||(LA54_0>=117 && LA54_0<=126)||LA54_0==128) ) {
                 alt54=2;
             }
             else {
@@ -12230,13 +12308,13 @@
             }
             switch (alt54) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4281:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalPerspectiveDsl.g:4309:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
                     {
-                    // InternalPerspectiveDsl.g:4281:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
-                    // InternalPerspectiveDsl.g:4282:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalPerspectiveDsl.g:4309:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalPerspectiveDsl.g:4310:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
                     {
-                    // InternalPerspectiveDsl.g:4282:4: ()
-                    // InternalPerspectiveDsl.g:4283:5: 
+                    // InternalPerspectiveDsl.g:4310:4: ()
+                    // InternalPerspectiveDsl.g:4311:5: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -12248,11 +12326,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:4289:4: ( ( ruleOpUnary ) )
-                    // InternalPerspectiveDsl.g:4290:5: ( ruleOpUnary )
+                    // InternalPerspectiveDsl.g:4317:4: ( ( ruleOpUnary ) )
+                    // InternalPerspectiveDsl.g:4318:5: ( ruleOpUnary )
                     {
-                    // InternalPerspectiveDsl.g:4290:5: ( ruleOpUnary )
-                    // InternalPerspectiveDsl.g:4291:6: ruleOpUnary
+                    // InternalPerspectiveDsl.g:4318:5: ( ruleOpUnary )
+                    // InternalPerspectiveDsl.g:4319:6: ruleOpUnary
                     {
                     if ( state.backtracking==0 ) {
 
@@ -12282,11 +12360,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:4305:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
-                    // InternalPerspectiveDsl.g:4306:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalPerspectiveDsl.g:4333:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalPerspectiveDsl.g:4334:5: (lv_operand_2_0= ruleXUnaryOperation )
                     {
-                    // InternalPerspectiveDsl.g:4306:5: (lv_operand_2_0= ruleXUnaryOperation )
-                    // InternalPerspectiveDsl.g:4307:6: lv_operand_2_0= ruleXUnaryOperation
+                    // InternalPerspectiveDsl.g:4334:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalPerspectiveDsl.g:4335:6: lv_operand_2_0= ruleXUnaryOperation
                     {
                     if ( state.backtracking==0 ) {
 
@@ -12324,7 +12402,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4326:3: this_XCastedExpression_3= ruleXCastedExpression
+                    // InternalPerspectiveDsl.g:4354:3: this_XCastedExpression_3= ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -12370,7 +12448,7 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // InternalPerspectiveDsl.g:4338:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    // InternalPerspectiveDsl.g:4366:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
     public final String entryRuleOpUnary() throws RecognitionException {
         String current = null;
 
@@ -12378,8 +12456,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4338:47: (iv_ruleOpUnary= ruleOpUnary EOF )
-            // InternalPerspectiveDsl.g:4339:2: iv_ruleOpUnary= ruleOpUnary EOF
+            // InternalPerspectiveDsl.g:4366:47: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // InternalPerspectiveDsl.g:4367:2: iv_ruleOpUnary= ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpUnaryRule()); 
@@ -12410,7 +12488,7 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // InternalPerspectiveDsl.g:4345:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
+    // InternalPerspectiveDsl.g:4373:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
     public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -12420,23 +12498,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4351:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
-            // InternalPerspectiveDsl.g:4352:2: (kw= '!' | kw= '-' | kw= '+' )
+            // InternalPerspectiveDsl.g:4379:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // InternalPerspectiveDsl.g:4380:2: (kw= '!' | kw= '-' | kw= '+' )
             {
-            // InternalPerspectiveDsl.g:4352:2: (kw= '!' | kw= '-' | kw= '+' )
+            // InternalPerspectiveDsl.g:4380:2: (kw= '!' | kw= '-' | kw= '+' )
             int alt55=3;
             switch ( input.LA(1) ) {
-            case 96:
+            case 98:
                 {
                 alt55=1;
                 }
                 break;
-            case 92:
+            case 94:
                 {
                 alt55=2;
                 }
                 break;
-            case 91:
+            case 93:
                 {
                 alt55=3;
                 }
@@ -12451,9 +12529,9 @@
 
             switch (alt55) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4353:3: kw= '!'
+                    // InternalPerspectiveDsl.g:4381:3: kw= '!'
                     {
-                    kw=(Token)match(input,96,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,98,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -12464,9 +12542,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4359:3: kw= '-'
+                    // InternalPerspectiveDsl.g:4387:3: kw= '-'
                     {
-                    kw=(Token)match(input,92,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,94,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -12477,9 +12555,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:4365:3: kw= '+'
+                    // InternalPerspectiveDsl.g:4393:3: kw= '+'
                     {
-                    kw=(Token)match(input,91,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,93,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -12514,7 +12592,7 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // InternalPerspectiveDsl.g:4374:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    // InternalPerspectiveDsl.g:4402:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
     public final EObject entryRuleXCastedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12522,8 +12600,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4374:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
-            // InternalPerspectiveDsl.g:4375:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
+            // InternalPerspectiveDsl.g:4402:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // InternalPerspectiveDsl.g:4403:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
@@ -12554,7 +12632,7 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // InternalPerspectiveDsl.g:4381:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
+    // InternalPerspectiveDsl.g:4409:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
     public final EObject ruleXCastedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12568,11 +12646,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4387:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
-            // InternalPerspectiveDsl.g:4388:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalPerspectiveDsl.g:4415:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // InternalPerspectiveDsl.g:4416:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
             {
-            // InternalPerspectiveDsl.g:4388:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
-            // InternalPerspectiveDsl.g:4389:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            // InternalPerspectiveDsl.g:4416:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalPerspectiveDsl.g:4417:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -12590,13 +12668,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:4397:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            // InternalPerspectiveDsl.g:4425:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
             loop56:
             do {
                 int alt56=2;
                 int LA56_0 = input.LA(1);
 
-                if ( (LA56_0==97) ) {
+                if ( (LA56_0==99) ) {
                     int LA56_2 = input.LA(2);
 
                     if ( (synpred18_InternalPerspectiveDsl()) ) {
@@ -12609,16 +12687,16 @@
 
                 switch (alt56) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4398:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:4426:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4398:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
-            	    // InternalPerspectiveDsl.g:4399:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    // InternalPerspectiveDsl.g:4426:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // InternalPerspectiveDsl.g:4427:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
             	    {
-            	    // InternalPerspectiveDsl.g:4405:5: ( () otherlv_2= 'as' )
-            	    // InternalPerspectiveDsl.g:4406:6: () otherlv_2= 'as'
+            	    // InternalPerspectiveDsl.g:4433:5: ( () otherlv_2= 'as' )
+            	    // InternalPerspectiveDsl.g:4434:6: () otherlv_2= 'as'
             	    {
-            	    // InternalPerspectiveDsl.g:4406:6: ()
-            	    // InternalPerspectiveDsl.g:4407:7: 
+            	    // InternalPerspectiveDsl.g:4434:6: ()
+            	    // InternalPerspectiveDsl.g:4435:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -12630,7 +12708,7 @@
 
             	    }
 
-            	    otherlv_2=(Token)match(input,97,FOLLOW_53); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,99,FOLLOW_53); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
@@ -12642,11 +12720,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4419:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // InternalPerspectiveDsl.g:4420:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:4447:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalPerspectiveDsl.g:4448:5: (lv_type_3_0= ruleJvmTypeReference )
             	    {
-            	    // InternalPerspectiveDsl.g:4420:5: (lv_type_3_0= ruleJvmTypeReference )
-            	    // InternalPerspectiveDsl.g:4421:6: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalPerspectiveDsl.g:4448:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalPerspectiveDsl.g:4449:6: lv_type_3_0= ruleJvmTypeReference
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -12711,7 +12789,7 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // InternalPerspectiveDsl.g:4443:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    // InternalPerspectiveDsl.g:4471:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
     public final EObject entryRuleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
@@ -12719,8 +12797,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4443:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
-            // InternalPerspectiveDsl.g:4444:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
+            // InternalPerspectiveDsl.g:4471:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
+            // InternalPerspectiveDsl.g:4472:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXPostfixOperationRule()); 
@@ -12751,7 +12829,7 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // InternalPerspectiveDsl.g:4450:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
+    // InternalPerspectiveDsl.g:4478:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
     public final EObject ruleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
@@ -12762,11 +12840,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4456:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
-            // InternalPerspectiveDsl.g:4457:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalPerspectiveDsl.g:4484:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
+            // InternalPerspectiveDsl.g:4485:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
             {
-            // InternalPerspectiveDsl.g:4457:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
-            // InternalPerspectiveDsl.g:4458:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            // InternalPerspectiveDsl.g:4485:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalPerspectiveDsl.g:4486:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
             {
             if ( state.backtracking==0 ) {
 
@@ -12784,18 +12862,18 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:4466:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            // InternalPerspectiveDsl.g:4494:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
             int alt57=2;
             int LA57_0 = input.LA(1);
 
-            if ( (LA57_0==98) ) {
+            if ( (LA57_0==100) ) {
                 int LA57_1 = input.LA(2);
 
                 if ( (synpred19_InternalPerspectiveDsl()) ) {
                     alt57=1;
                 }
             }
-            else if ( (LA57_0==99) ) {
+            else if ( (LA57_0==101) ) {
                 int LA57_2 = input.LA(2);
 
                 if ( (synpred19_InternalPerspectiveDsl()) ) {
@@ -12804,13 +12882,13 @@
             }
             switch (alt57) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4467:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
+                    // InternalPerspectiveDsl.g:4495:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
                     {
-                    // InternalPerspectiveDsl.g:4477:4: ( () ( ( ruleOpPostfix ) ) )
-                    // InternalPerspectiveDsl.g:4478:5: () ( ( ruleOpPostfix ) )
+                    // InternalPerspectiveDsl.g:4505:4: ( () ( ( ruleOpPostfix ) ) )
+                    // InternalPerspectiveDsl.g:4506:5: () ( ( ruleOpPostfix ) )
                     {
-                    // InternalPerspectiveDsl.g:4478:5: ()
-                    // InternalPerspectiveDsl.g:4479:6: 
+                    // InternalPerspectiveDsl.g:4506:5: ()
+                    // InternalPerspectiveDsl.g:4507:6: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -12822,11 +12900,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:4485:5: ( ( ruleOpPostfix ) )
-                    // InternalPerspectiveDsl.g:4486:6: ( ruleOpPostfix )
+                    // InternalPerspectiveDsl.g:4513:5: ( ( ruleOpPostfix ) )
+                    // InternalPerspectiveDsl.g:4514:6: ( ruleOpPostfix )
                     {
-                    // InternalPerspectiveDsl.g:4486:6: ( ruleOpPostfix )
-                    // InternalPerspectiveDsl.g:4487:7: ruleOpPostfix
+                    // InternalPerspectiveDsl.g:4514:6: ( ruleOpPostfix )
+                    // InternalPerspectiveDsl.g:4515:7: ruleOpPostfix
                     {
                     if ( state.backtracking==0 ) {
 
@@ -12890,7 +12968,7 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // InternalPerspectiveDsl.g:4507:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
+    // InternalPerspectiveDsl.g:4535:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
     public final String entryRuleOpPostfix() throws RecognitionException {
         String current = null;
 
@@ -12898,8 +12976,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4507:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
-            // InternalPerspectiveDsl.g:4508:2: iv_ruleOpPostfix= ruleOpPostfix EOF
+            // InternalPerspectiveDsl.g:4535:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
+            // InternalPerspectiveDsl.g:4536:2: iv_ruleOpPostfix= ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpPostfixRule()); 
@@ -12930,7 +13008,7 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // InternalPerspectiveDsl.g:4514:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
+    // InternalPerspectiveDsl.g:4542:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
     public final AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -12940,17 +13018,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4520:2: ( (kw= '++' | kw= '--' ) )
-            // InternalPerspectiveDsl.g:4521:2: (kw= '++' | kw= '--' )
+            // InternalPerspectiveDsl.g:4548:2: ( (kw= '++' | kw= '--' ) )
+            // InternalPerspectiveDsl.g:4549:2: (kw= '++' | kw= '--' )
             {
-            // InternalPerspectiveDsl.g:4521:2: (kw= '++' | kw= '--' )
+            // InternalPerspectiveDsl.g:4549:2: (kw= '++' | kw= '--' )
             int alt58=2;
             int LA58_0 = input.LA(1);
 
-            if ( (LA58_0==98) ) {
+            if ( (LA58_0==100) ) {
                 alt58=1;
             }
-            else if ( (LA58_0==99) ) {
+            else if ( (LA58_0==101) ) {
                 alt58=2;
             }
             else {
@@ -12962,9 +13040,9 @@
             }
             switch (alt58) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4522:3: kw= '++'
+                    // InternalPerspectiveDsl.g:4550:3: kw= '++'
                     {
-                    kw=(Token)match(input,98,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,100,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -12975,9 +13053,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4528:3: kw= '--'
+                    // InternalPerspectiveDsl.g:4556:3: kw= '--'
                     {
-                    kw=(Token)match(input,99,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,101,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -13012,7 +13090,7 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // InternalPerspectiveDsl.g:4537:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
+    // InternalPerspectiveDsl.g:4565:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
     public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -13020,8 +13098,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4537:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
-            // InternalPerspectiveDsl.g:4538:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
+            // InternalPerspectiveDsl.g:4565:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
+            // InternalPerspectiveDsl.g:4566:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); 
@@ -13052,7 +13130,7 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // InternalPerspectiveDsl.g:4544:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) ;
+    // InternalPerspectiveDsl.g:4572:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) ;
     public final EObject ruleXMemberFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -13088,11 +13166,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4550:2: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) )
-            // InternalPerspectiveDsl.g:4551:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
+            // InternalPerspectiveDsl.g:4578:2: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) )
+            // InternalPerspectiveDsl.g:4579:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
             {
-            // InternalPerspectiveDsl.g:4551:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
-            // InternalPerspectiveDsl.g:4552:3: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
+            // InternalPerspectiveDsl.g:4579:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
+            // InternalPerspectiveDsl.g:4580:3: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -13110,12 +13188,12 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:4560:3: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
+            // InternalPerspectiveDsl.g:4588:3: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
             loop67:
             do {
                 int alt67=3;
                 switch ( input.LA(1) ) {
-                case 100:
+                case 102:
                     {
                     int LA67_2 = input.LA(2);
 
@@ -13129,7 +13207,7 @@
 
                     }
                     break;
-                case 101:
+                case 103:
                     {
                     int LA67_3 = input.LA(2);
 
@@ -13143,7 +13221,7 @@
 
                     }
                     break;
-                case 102:
+                case 104:
                     {
                     int LA67_4 = input.LA(2);
 
@@ -13159,19 +13237,19 @@
 
                 switch (alt67) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:4561:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalPerspectiveDsl.g:4589:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4561:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
-            	    // InternalPerspectiveDsl.g:4562:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalPerspectiveDsl.g:4589:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalPerspectiveDsl.g:4590:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4562:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
-            	    // InternalPerspectiveDsl.g:4563:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalPerspectiveDsl.g:4590:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+            	    // InternalPerspectiveDsl.g:4591:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
             	    {
-            	    // InternalPerspectiveDsl.g:4583:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
-            	    // InternalPerspectiveDsl.g:4584:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+            	    // InternalPerspectiveDsl.g:4611:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalPerspectiveDsl.g:4612:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
             	    {
-            	    // InternalPerspectiveDsl.g:4584:7: ()
-            	    // InternalPerspectiveDsl.g:4585:8: 
+            	    // InternalPerspectiveDsl.g:4612:7: ()
+            	    // InternalPerspectiveDsl.g:4613:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -13183,14 +13261,14 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4591:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
+            	    // InternalPerspectiveDsl.g:4619:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
             	    int alt59=2;
             	    int LA59_0 = input.LA(1);
 
-            	    if ( (LA59_0==100) ) {
+            	    if ( (LA59_0==102) ) {
             	        alt59=1;
             	    }
-            	    else if ( (LA59_0==101) ) {
+            	    else if ( (LA59_0==103) ) {
             	        alt59=2;
             	    }
             	    else {
@@ -13202,9 +13280,9 @@
             	    }
             	    switch (alt59) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4592:8: otherlv_2= '.'
+            	            // InternalPerspectiveDsl.g:4620:8: otherlv_2= '.'
             	            {
-            	            otherlv_2=(Token)match(input,100,FOLLOW_63); if (state.failed) return current;
+            	            otherlv_2=(Token)match(input,102,FOLLOW_63); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
@@ -13214,15 +13292,15 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalPerspectiveDsl.g:4597:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4625:8: ( (lv_explicitStatic_3_0= '::' ) )
             	            {
-            	            // InternalPerspectiveDsl.g:4597:8: ( (lv_explicitStatic_3_0= '::' ) )
-            	            // InternalPerspectiveDsl.g:4598:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalPerspectiveDsl.g:4625:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4626:9: (lv_explicitStatic_3_0= '::' )
             	            {
-            	            // InternalPerspectiveDsl.g:4598:9: (lv_explicitStatic_3_0= '::' )
-            	            // InternalPerspectiveDsl.g:4599:10: lv_explicitStatic_3_0= '::'
+            	            // InternalPerspectiveDsl.g:4626:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalPerspectiveDsl.g:4627:10: lv_explicitStatic_3_0= '::'
             	            {
-            	            lv_explicitStatic_3_0=(Token)match(input,101,FOLLOW_63); if (state.failed) return current;
+            	            lv_explicitStatic_3_0=(Token)match(input,103,FOLLOW_63); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
@@ -13248,11 +13326,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4612:7: ( ( ruleFeatureCallID ) )
-            	    // InternalPerspectiveDsl.g:4613:8: ( ruleFeatureCallID )
+            	    // InternalPerspectiveDsl.g:4640:7: ( ( ruleFeatureCallID ) )
+            	    // InternalPerspectiveDsl.g:4641:8: ( ruleFeatureCallID )
             	    {
-            	    // InternalPerspectiveDsl.g:4613:8: ( ruleFeatureCallID )
-            	    // InternalPerspectiveDsl.g:4614:9: ruleFeatureCallID
+            	    // InternalPerspectiveDsl.g:4641:8: ( ruleFeatureCallID )
+            	    // InternalPerspectiveDsl.g:4642:9: ruleFeatureCallID
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -13303,11 +13381,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4637:5: ( (lv_value_6_0= ruleXAssignment ) )
-            	    // InternalPerspectiveDsl.g:4638:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalPerspectiveDsl.g:4665:5: ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalPerspectiveDsl.g:4666:6: (lv_value_6_0= ruleXAssignment )
             	    {
-            	    // InternalPerspectiveDsl.g:4638:6: (lv_value_6_0= ruleXAssignment )
-            	    // InternalPerspectiveDsl.g:4639:7: lv_value_6_0= ruleXAssignment
+            	    // InternalPerspectiveDsl.g:4666:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalPerspectiveDsl.g:4667:7: lv_value_6_0= ruleXAssignment
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -13345,19 +13423,19 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalPerspectiveDsl.g:4658:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
+            	    // InternalPerspectiveDsl.g:4686:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
             	    {
-            	    // InternalPerspectiveDsl.g:4658:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
-            	    // InternalPerspectiveDsl.g:4659:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    // InternalPerspectiveDsl.g:4686:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
+            	    // InternalPerspectiveDsl.g:4687:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
             	    {
-            	    // InternalPerspectiveDsl.g:4659:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
-            	    // InternalPerspectiveDsl.g:4660:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalPerspectiveDsl.g:4687:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
+            	    // InternalPerspectiveDsl.g:4688:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4680:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
-            	    // InternalPerspectiveDsl.g:4681:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    // InternalPerspectiveDsl.g:4708:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalPerspectiveDsl.g:4709:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
             	    {
-            	    // InternalPerspectiveDsl.g:4681:7: ()
-            	    // InternalPerspectiveDsl.g:4682:8: 
+            	    // InternalPerspectiveDsl.g:4709:7: ()
+            	    // InternalPerspectiveDsl.g:4710:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -13369,20 +13447,20 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4688:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    // InternalPerspectiveDsl.g:4716:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
             	    int alt60=3;
             	    switch ( input.LA(1) ) {
-            	    case 100:
+            	    case 102:
             	        {
             	        alt60=1;
             	        }
             	        break;
-            	    case 102:
+            	    case 104:
             	        {
             	        alt60=2;
             	        }
             	        break;
-            	    case 101:
+            	    case 103:
             	        {
             	        alt60=3;
             	        }
@@ -13397,9 +13475,9 @@
 
             	    switch (alt60) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4689:8: otherlv_8= '.'
+            	            // InternalPerspectiveDsl.g:4717:8: otherlv_8= '.'
             	            {
-            	            otherlv_8=(Token)match(input,100,FOLLOW_64); if (state.failed) return current;
+            	            otherlv_8=(Token)match(input,102,FOLLOW_64); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
@@ -13409,15 +13487,15 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalPerspectiveDsl.g:4694:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalPerspectiveDsl.g:4722:8: ( (lv_nullSafe_9_0= '?.' ) )
             	            {
-            	            // InternalPerspectiveDsl.g:4694:8: ( (lv_nullSafe_9_0= '?.' ) )
-            	            // InternalPerspectiveDsl.g:4695:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalPerspectiveDsl.g:4722:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalPerspectiveDsl.g:4723:9: (lv_nullSafe_9_0= '?.' )
             	            {
-            	            // InternalPerspectiveDsl.g:4695:9: (lv_nullSafe_9_0= '?.' )
-            	            // InternalPerspectiveDsl.g:4696:10: lv_nullSafe_9_0= '?.'
+            	            // InternalPerspectiveDsl.g:4723:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalPerspectiveDsl.g:4724:10: lv_nullSafe_9_0= '?.'
             	            {
-            	            lv_nullSafe_9_0=(Token)match(input,102,FOLLOW_64); if (state.failed) return current;
+            	            lv_nullSafe_9_0=(Token)match(input,104,FOLLOW_64); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
@@ -13441,15 +13519,15 @@
             	            }
             	            break;
             	        case 3 :
-            	            // InternalPerspectiveDsl.g:4709:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4737:8: ( (lv_explicitStatic_10_0= '::' ) )
             	            {
-            	            // InternalPerspectiveDsl.g:4709:8: ( (lv_explicitStatic_10_0= '::' ) )
-            	            // InternalPerspectiveDsl.g:4710:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalPerspectiveDsl.g:4737:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalPerspectiveDsl.g:4738:9: (lv_explicitStatic_10_0= '::' )
             	            {
-            	            // InternalPerspectiveDsl.g:4710:9: (lv_explicitStatic_10_0= '::' )
-            	            // InternalPerspectiveDsl.g:4711:10: lv_explicitStatic_10_0= '::'
+            	            // InternalPerspectiveDsl.g:4738:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalPerspectiveDsl.g:4739:10: lv_explicitStatic_10_0= '::'
             	            {
-            	            lv_explicitStatic_10_0=(Token)match(input,101,FOLLOW_64); if (state.failed) return current;
+            	            lv_explicitStatic_10_0=(Token)match(input,103,FOLLOW_64); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
@@ -13481,28 +13559,28 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4726:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
+            	    // InternalPerspectiveDsl.g:4754:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
             	    int alt62=2;
             	    int LA62_0 = input.LA(1);
 
-            	    if ( (LA62_0==75) ) {
+            	    if ( (LA62_0==77) ) {
             	        alt62=1;
             	    }
             	    switch (alt62) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4727:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
+            	            // InternalPerspectiveDsl.g:4755:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
             	            {
-            	            otherlv_11=(Token)match(input,75,FOLLOW_65); if (state.failed) return current;
+            	            otherlv_11=(Token)match(input,77,FOLLOW_65); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
             	              					
             	            }
-            	            // InternalPerspectiveDsl.g:4731:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
-            	            // InternalPerspectiveDsl.g:4732:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalPerspectiveDsl.g:4759:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
+            	            // InternalPerspectiveDsl.g:4760:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
             	            {
-            	            // InternalPerspectiveDsl.g:4732:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
-            	            // InternalPerspectiveDsl.g:4733:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
+            	            // InternalPerspectiveDsl.g:4760:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalPerspectiveDsl.g:4761:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
             	            {
             	            if ( state.backtracking==0 ) {
 
@@ -13533,32 +13611,32 @@
 
             	            }
 
-            	            // InternalPerspectiveDsl.g:4750:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
+            	            // InternalPerspectiveDsl.g:4778:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
             	            loop61:
             	            do {
             	                int alt61=2;
             	                int LA61_0 = input.LA(1);
 
-            	                if ( (LA61_0==64) ) {
+            	                if ( (LA61_0==66) ) {
             	                    alt61=1;
             	                }
 
 
             	                switch (alt61) {
             	            	case 1 :
-            	            	    // InternalPerspectiveDsl.g:4751:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalPerspectiveDsl.g:4779:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
             	            	    {
-            	            	    otherlv_13=(Token)match(input,64,FOLLOW_65); if (state.failed) return current;
+            	            	    otherlv_13=(Token)match(input,66,FOLLOW_65); if (state.failed) return current;
             	            	    if ( state.backtracking==0 ) {
 
             	            	      							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
             	            	      						
             	            	    }
-            	            	    // InternalPerspectiveDsl.g:4755:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
-            	            	    // InternalPerspectiveDsl.g:4756:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalPerspectiveDsl.g:4783:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalPerspectiveDsl.g:4784:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
             	            	    {
-            	            	    // InternalPerspectiveDsl.g:4756:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
-            	            	    // InternalPerspectiveDsl.g:4757:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
+            	            	    // InternalPerspectiveDsl.g:4784:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalPerspectiveDsl.g:4785:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
             	            	    {
             	            	    if ( state.backtracking==0 ) {
 
@@ -13598,7 +13676,7 @@
             	                }
             	            } while (true);
 
-            	            otherlv_15=(Token)match(input,76,FOLLOW_64); if (state.failed) return current;
+            	            otherlv_15=(Token)match(input,78,FOLLOW_64); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
@@ -13610,11 +13688,11 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4780:5: ( ( ruleIdOrSuper ) )
-            	    // InternalPerspectiveDsl.g:4781:6: ( ruleIdOrSuper )
+            	    // InternalPerspectiveDsl.g:4808:5: ( ( ruleIdOrSuper ) )
+            	    // InternalPerspectiveDsl.g:4809:6: ( ruleIdOrSuper )
             	    {
-            	    // InternalPerspectiveDsl.g:4781:6: ( ruleIdOrSuper )
-            	    // InternalPerspectiveDsl.g:4782:7: ruleIdOrSuper
+            	    // InternalPerspectiveDsl.g:4809:6: ( ruleIdOrSuper )
+            	    // InternalPerspectiveDsl.g:4810:7: ruleIdOrSuper
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -13644,20 +13722,20 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4796:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?
+            	    // InternalPerspectiveDsl.g:4824:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?
             	    int alt65=2;
             	    alt65 = dfa65.predict(input);
             	    switch (alt65) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4797:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')'
+            	            // InternalPerspectiveDsl.g:4825:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')'
             	            {
-            	            // InternalPerspectiveDsl.g:4797:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
-            	            // InternalPerspectiveDsl.g:4798:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalPerspectiveDsl.g:4825:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
+            	            // InternalPerspectiveDsl.g:4826:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
             	            {
-            	            // InternalPerspectiveDsl.g:4802:7: (lv_explicitOperationCall_17_0= '(' )
-            	            // InternalPerspectiveDsl.g:4803:8: lv_explicitOperationCall_17_0= '('
+            	            // InternalPerspectiveDsl.g:4830:7: (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalPerspectiveDsl.g:4831:8: lv_explicitOperationCall_17_0= '('
             	            {
-            	            lv_explicitOperationCall_17_0=(Token)match(input,63,FOLLOW_68); if (state.failed) return current;
+            	            lv_explicitOperationCall_17_0=(Token)match(input,65,FOLLOW_68); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
@@ -13677,18 +13755,18 @@
 
             	            }
 
-            	            // InternalPerspectiveDsl.g:4815:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
+            	            // InternalPerspectiveDsl.g:4843:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
             	            int alt64=3;
             	            alt64 = dfa64.predict(input);
             	            switch (alt64) {
             	                case 1 :
-            	                    // InternalPerspectiveDsl.g:4816:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalPerspectiveDsl.g:4844:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
             	                    {
-            	                    // InternalPerspectiveDsl.g:4816:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
-            	                    // InternalPerspectiveDsl.g:4817:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalPerspectiveDsl.g:4844:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalPerspectiveDsl.g:4845:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
             	                    {
-            	                    // InternalPerspectiveDsl.g:4842:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
-            	                    // InternalPerspectiveDsl.g:4843:9: lv_memberCallArguments_18_0= ruleXShortClosure
+            	                    // InternalPerspectiveDsl.g:4870:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalPerspectiveDsl.g:4871:9: lv_memberCallArguments_18_0= ruleXShortClosure
             	                    {
             	                    if ( state.backtracking==0 ) {
 
@@ -13723,16 +13801,16 @@
             	                    }
             	                    break;
             	                case 2 :
-            	                    // InternalPerspectiveDsl.g:4861:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalPerspectiveDsl.g:4889:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
             	                    {
-            	                    // InternalPerspectiveDsl.g:4861:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
-            	                    // InternalPerspectiveDsl.g:4862:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    // InternalPerspectiveDsl.g:4889:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalPerspectiveDsl.g:4890:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
             	                    {
-            	                    // InternalPerspectiveDsl.g:4862:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
-            	                    // InternalPerspectiveDsl.g:4863:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalPerspectiveDsl.g:4890:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
+            	                    // InternalPerspectiveDsl.g:4891:9: (lv_memberCallArguments_19_0= ruleXExpression )
             	                    {
-            	                    // InternalPerspectiveDsl.g:4863:9: (lv_memberCallArguments_19_0= ruleXExpression )
-            	                    // InternalPerspectiveDsl.g:4864:10: lv_memberCallArguments_19_0= ruleXExpression
+            	                    // InternalPerspectiveDsl.g:4891:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalPerspectiveDsl.g:4892:10: lv_memberCallArguments_19_0= ruleXExpression
             	                    {
             	                    if ( state.backtracking==0 ) {
 
@@ -13763,32 +13841,32 @@
 
             	                    }
 
-            	                    // InternalPerspectiveDsl.g:4881:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    // InternalPerspectiveDsl.g:4909:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
             	                    loop63:
             	                    do {
             	                        int alt63=2;
             	                        int LA63_0 = input.LA(1);
 
-            	                        if ( (LA63_0==64) ) {
+            	                        if ( (LA63_0==66) ) {
             	                            alt63=1;
             	                        }
 
 
             	                        switch (alt63) {
             	                    	case 1 :
-            	                    	    // InternalPerspectiveDsl.g:4882:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalPerspectiveDsl.g:4910:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
             	                    	    {
-            	                    	    otherlv_20=(Token)match(input,64,FOLLOW_40); if (state.failed) return current;
+            	                    	    otherlv_20=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
             	                    	    if ( state.backtracking==0 ) {
 
             	                    	      									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
             	                    	      								
             	                    	    }
-            	                    	    // InternalPerspectiveDsl.g:4886:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
-            	                    	    // InternalPerspectiveDsl.g:4887:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalPerspectiveDsl.g:4914:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalPerspectiveDsl.g:4915:10: (lv_memberCallArguments_21_0= ruleXExpression )
             	                    	    {
-            	                    	    // InternalPerspectiveDsl.g:4887:10: (lv_memberCallArguments_21_0= ruleXExpression )
-            	                    	    // InternalPerspectiveDsl.g:4888:11: lv_memberCallArguments_21_0= ruleXExpression
+            	                    	    // InternalPerspectiveDsl.g:4915:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalPerspectiveDsl.g:4916:11: lv_memberCallArguments_21_0= ruleXExpression
             	                    	    {
             	                    	    if ( state.backtracking==0 ) {
 
@@ -13837,7 +13915,7 @@
 
             	            }
 
-            	            otherlv_22=(Token)match(input,65,FOLLOW_69); if (state.failed) return current;
+            	            otherlv_22=(Token)match(input,67,FOLLOW_69); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
@@ -13849,15 +13927,15 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:4913:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    // InternalPerspectiveDsl.g:4941:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
             	    int alt66=2;
             	    alt66 = dfa66.predict(input);
             	    switch (alt66) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:4914:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalPerspectiveDsl.g:4942:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
             	            {
-            	            // InternalPerspectiveDsl.g:4920:6: (lv_memberCallArguments_23_0= ruleXClosure )
-            	            // InternalPerspectiveDsl.g:4921:7: lv_memberCallArguments_23_0= ruleXClosure
+            	            // InternalPerspectiveDsl.g:4948:6: (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalPerspectiveDsl.g:4949:7: lv_memberCallArguments_23_0= ruleXClosure
             	            {
             	            if ( state.backtracking==0 ) {
 
@@ -13928,7 +14006,7 @@
 
 
     // $ANTLR start "entryRuleXPrimaryExpression"
-    // InternalPerspectiveDsl.g:4944:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
+    // InternalPerspectiveDsl.g:4972:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
     public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13936,8 +14014,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:4944:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
-            // InternalPerspectiveDsl.g:4945:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
+            // InternalPerspectiveDsl.g:4972:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
+            // InternalPerspectiveDsl.g:4973:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); 
@@ -13968,7 +14046,7 @@
 
 
     // $ANTLR start "ruleXPrimaryExpression"
-    // InternalPerspectiveDsl.g:4951:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) ;
+    // InternalPerspectiveDsl.g:4979:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) ;
     public final EObject ruleXPrimaryExpression() throws RecognitionException {
         EObject current = null;
 
@@ -14007,15 +14085,15 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:4957:2: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) )
-            // InternalPerspectiveDsl.g:4958:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
+            // InternalPerspectiveDsl.g:4985:2: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) )
+            // InternalPerspectiveDsl.g:4986:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
             {
-            // InternalPerspectiveDsl.g:4958:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
+            // InternalPerspectiveDsl.g:4986:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
             int alt68=15;
             alt68 = dfa68.predict(input);
             switch (alt68) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:4959:3: this_XConstructorCall_0= ruleXConstructorCall
+                    // InternalPerspectiveDsl.g:4987:3: this_XConstructorCall_0= ruleXConstructorCall
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14037,7 +14115,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:4968:3: this_XBlockExpression_1= ruleXBlockExpression
+                    // InternalPerspectiveDsl.g:4996:3: this_XBlockExpression_1= ruleXBlockExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14059,7 +14137,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:4977:3: this_XSwitchExpression_2= ruleXSwitchExpression
+                    // InternalPerspectiveDsl.g:5005:3: this_XSwitchExpression_2= ruleXSwitchExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14081,10 +14159,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:4986:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:5014:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
                     {
-                    // InternalPerspectiveDsl.g:4986:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
-                    // InternalPerspectiveDsl.g:4987:4: ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression
+                    // InternalPerspectiveDsl.g:5014:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalPerspectiveDsl.g:5015:4: ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14109,7 +14187,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:5004:3: this_XFeatureCall_4= ruleXFeatureCall
+                    // InternalPerspectiveDsl.g:5032:3: this_XFeatureCall_4= ruleXFeatureCall
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14131,7 +14209,7 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:5013:3: this_XLiteral_5= ruleXLiteral
+                    // InternalPerspectiveDsl.g:5041:3: this_XLiteral_5= ruleXLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14153,7 +14231,7 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:5022:3: this_XIfExpression_6= ruleXIfExpression
+                    // InternalPerspectiveDsl.g:5050:3: this_XIfExpression_6= ruleXIfExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14175,10 +14253,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalPerspectiveDsl.g:5031:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:5059:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
                     {
-                    // InternalPerspectiveDsl.g:5031:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
-                    // InternalPerspectiveDsl.g:5032:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression
+                    // InternalPerspectiveDsl.g:5059:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalPerspectiveDsl.g:5060:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14203,7 +14281,7 @@
                     }
                     break;
                 case 9 :
-                    // InternalPerspectiveDsl.g:5055:3: this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression
+                    // InternalPerspectiveDsl.g:5083:3: this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14225,7 +14303,7 @@
                     }
                     break;
                 case 10 :
-                    // InternalPerspectiveDsl.g:5064:3: this_XWhileExpression_9= ruleXWhileExpression
+                    // InternalPerspectiveDsl.g:5092:3: this_XWhileExpression_9= ruleXWhileExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14247,7 +14325,7 @@
                     }
                     break;
                 case 11 :
-                    // InternalPerspectiveDsl.g:5073:3: this_XDoWhileExpression_10= ruleXDoWhileExpression
+                    // InternalPerspectiveDsl.g:5101:3: this_XDoWhileExpression_10= ruleXDoWhileExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14269,7 +14347,7 @@
                     }
                     break;
                 case 12 :
-                    // InternalPerspectiveDsl.g:5082:3: this_XThrowExpression_11= ruleXThrowExpression
+                    // InternalPerspectiveDsl.g:5110:3: this_XThrowExpression_11= ruleXThrowExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14291,7 +14369,7 @@
                     }
                     break;
                 case 13 :
-                    // InternalPerspectiveDsl.g:5091:3: this_XReturnExpression_12= ruleXReturnExpression
+                    // InternalPerspectiveDsl.g:5119:3: this_XReturnExpression_12= ruleXReturnExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14313,7 +14391,7 @@
                     }
                     break;
                 case 14 :
-                    // InternalPerspectiveDsl.g:5100:3: this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression
+                    // InternalPerspectiveDsl.g:5128:3: this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14335,7 +14413,7 @@
                     }
                     break;
                 case 15 :
-                    // InternalPerspectiveDsl.g:5109:3: this_XParenthesizedExpression_14= ruleXParenthesizedExpression
+                    // InternalPerspectiveDsl.g:5137:3: this_XParenthesizedExpression_14= ruleXParenthesizedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14381,7 +14459,7 @@
 
 
     // $ANTLR start "entryRuleXLiteral"
-    // InternalPerspectiveDsl.g:5121:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
+    // InternalPerspectiveDsl.g:5149:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
     public final EObject entryRuleXLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -14389,8 +14467,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5121:49: (iv_ruleXLiteral= ruleXLiteral EOF )
-            // InternalPerspectiveDsl.g:5122:2: iv_ruleXLiteral= ruleXLiteral EOF
+            // InternalPerspectiveDsl.g:5149:49: (iv_ruleXLiteral= ruleXLiteral EOF )
+            // InternalPerspectiveDsl.g:5150:2: iv_ruleXLiteral= ruleXLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXLiteralRule()); 
@@ -14421,7 +14499,7 @@
 
 
     // $ANTLR start "ruleXLiteral"
-    // InternalPerspectiveDsl.g:5128:1: ruleXLiteral returns [EObject current=null] : (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) ;
+    // InternalPerspectiveDsl.g:5156:1: ruleXLiteral returns [EObject current=null] : (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) ;
     public final EObject ruleXLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -14444,32 +14522,32 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5134:2: ( (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) )
-            // InternalPerspectiveDsl.g:5135:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
+            // InternalPerspectiveDsl.g:5162:2: ( (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) )
+            // InternalPerspectiveDsl.g:5163:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
             {
-            // InternalPerspectiveDsl.g:5135:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
+            // InternalPerspectiveDsl.g:5163:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
             int alt69=7;
             int LA69_0 = input.LA(1);
 
-            if ( (LA69_0==67) ) {
+            if ( (LA69_0==69) ) {
                 alt69=1;
             }
-            else if ( (LA69_0==68) && (synpred27_InternalPerspectiveDsl())) {
+            else if ( (LA69_0==70) && (synpred27_InternalPerspectiveDsl())) {
                 alt69=2;
             }
-            else if ( ((LA69_0>=118 && LA69_0<=119)) ) {
+            else if ( ((LA69_0>=120 && LA69_0<=121)) ) {
                 alt69=3;
             }
             else if ( ((LA69_0>=RULE_INT && LA69_0<=RULE_DECIMAL)) ) {
                 alt69=4;
             }
-            else if ( (LA69_0==120) ) {
+            else if ( (LA69_0==122) ) {
                 alt69=5;
             }
             else if ( (LA69_0==RULE_STRING) ) {
                 alt69=6;
             }
-            else if ( (LA69_0==121) ) {
+            else if ( (LA69_0==123) ) {
                 alt69=7;
             }
             else {
@@ -14481,7 +14559,7 @@
             }
             switch (alt69) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5136:3: this_XCollectionLiteral_0= ruleXCollectionLiteral
+                    // InternalPerspectiveDsl.g:5164:3: this_XCollectionLiteral_0= ruleXCollectionLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14503,10 +14581,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:5145:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalPerspectiveDsl.g:5173:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
                     {
-                    // InternalPerspectiveDsl.g:5145:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
-                    // InternalPerspectiveDsl.g:5146:4: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
+                    // InternalPerspectiveDsl.g:5173:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalPerspectiveDsl.g:5174:4: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14531,7 +14609,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:5162:3: this_XBooleanLiteral_2= ruleXBooleanLiteral
+                    // InternalPerspectiveDsl.g:5190:3: this_XBooleanLiteral_2= ruleXBooleanLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14553,7 +14631,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:5171:3: this_XNumberLiteral_3= ruleXNumberLiteral
+                    // InternalPerspectiveDsl.g:5199:3: this_XNumberLiteral_3= ruleXNumberLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14575,7 +14653,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:5180:3: this_XNullLiteral_4= ruleXNullLiteral
+                    // InternalPerspectiveDsl.g:5208:3: this_XNullLiteral_4= ruleXNullLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14597,7 +14675,7 @@
                     }
                     break;
                 case 6 :
-                    // InternalPerspectiveDsl.g:5189:3: this_XStringLiteral_5= ruleXStringLiteral
+                    // InternalPerspectiveDsl.g:5217:3: this_XStringLiteral_5= ruleXStringLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14619,7 +14697,7 @@
                     }
                     break;
                 case 7 :
-                    // InternalPerspectiveDsl.g:5198:3: this_XTypeLiteral_6= ruleXTypeLiteral
+                    // InternalPerspectiveDsl.g:5226:3: this_XTypeLiteral_6= ruleXTypeLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14665,7 +14743,7 @@
 
 
     // $ANTLR start "entryRuleXCollectionLiteral"
-    // InternalPerspectiveDsl.g:5210:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
+    // InternalPerspectiveDsl.g:5238:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
     public final EObject entryRuleXCollectionLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -14673,8 +14751,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5210:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
-            // InternalPerspectiveDsl.g:5211:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
+            // InternalPerspectiveDsl.g:5238:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
+            // InternalPerspectiveDsl.g:5239:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCollectionLiteralRule()); 
@@ -14705,7 +14783,7 @@
 
 
     // $ANTLR start "ruleXCollectionLiteral"
-    // InternalPerspectiveDsl.g:5217:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
+    // InternalPerspectiveDsl.g:5245:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
     public final EObject ruleXCollectionLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -14718,22 +14796,22 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5223:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
-            // InternalPerspectiveDsl.g:5224:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            // InternalPerspectiveDsl.g:5251:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
+            // InternalPerspectiveDsl.g:5252:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
             {
-            // InternalPerspectiveDsl.g:5224:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            // InternalPerspectiveDsl.g:5252:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
             int alt70=2;
             int LA70_0 = input.LA(1);
 
-            if ( (LA70_0==67) ) {
+            if ( (LA70_0==69) ) {
                 int LA70_1 = input.LA(2);
 
-                if ( (LA70_1==68) ) {
-                    alt70=2;
-                }
-                else if ( (LA70_1==14) ) {
+                if ( (LA70_1==14) ) {
                     alt70=1;
                 }
+                else if ( (LA70_1==70) ) {
+                    alt70=2;
+                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
@@ -14751,7 +14829,7 @@
             }
             switch (alt70) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5225:3: this_XSetLiteral_0= ruleXSetLiteral
+                    // InternalPerspectiveDsl.g:5253:3: this_XSetLiteral_0= ruleXSetLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14773,7 +14851,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:5234:3: this_XListLiteral_1= ruleXListLiteral
+                    // InternalPerspectiveDsl.g:5262:3: this_XListLiteral_1= ruleXListLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14819,7 +14897,7 @@
 
 
     // $ANTLR start "entryRuleXSetLiteral"
-    // InternalPerspectiveDsl.g:5246:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
+    // InternalPerspectiveDsl.g:5274:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
     public final EObject entryRuleXSetLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -14827,8 +14905,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5246:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
-            // InternalPerspectiveDsl.g:5247:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
+            // InternalPerspectiveDsl.g:5274:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
+            // InternalPerspectiveDsl.g:5275:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSetLiteralRule()); 
@@ -14859,7 +14937,7 @@
 
 
     // $ANTLR start "ruleXSetLiteral"
-    // InternalPerspectiveDsl.g:5253:1: ruleXSetLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) ;
+    // InternalPerspectiveDsl.g:5281:1: ruleXSetLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) ;
     public final EObject ruleXSetLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -14876,14 +14954,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5259:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
-            // InternalPerspectiveDsl.g:5260:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalPerspectiveDsl.g:5287:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
+            // InternalPerspectiveDsl.g:5288:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
             {
-            // InternalPerspectiveDsl.g:5260:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
-            // InternalPerspectiveDsl.g:5261:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
+            // InternalPerspectiveDsl.g:5288:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalPerspectiveDsl.g:5289:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
             {
-            // InternalPerspectiveDsl.g:5261:3: ()
-            // InternalPerspectiveDsl.g:5262:4: 
+            // InternalPerspectiveDsl.g:5289:3: ()
+            // InternalPerspectiveDsl.g:5290:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14895,7 +14973,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,67,FOLLOW_20); if (state.failed) return current;
+            otherlv_1=(Token)match(input,69,FOLLOW_20); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
@@ -14907,22 +14985,22 @@
               			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:5276:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            // InternalPerspectiveDsl.g:5304:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
             int alt72=2;
             int LA72_0 = input.LA(1);
 
-            if ( ((LA72_0>=RULE_ID && LA72_0<=RULE_DECIMAL)||LA72_0==14||(LA72_0>=56 && LA72_0<=58)||LA72_0==63||(LA72_0>=67 && LA72_0<=68)||LA72_0==75||(LA72_0>=91 && LA72_0<=92)||LA72_0==96||LA72_0==104||LA72_0==106||(LA72_0>=110 && LA72_0<=112)||(LA72_0>=115 && LA72_0<=124)||LA72_0==126) ) {
+            if ( ((LA72_0>=RULE_ID && LA72_0<=RULE_DECIMAL)||LA72_0==14||(LA72_0>=58 && LA72_0<=60)||LA72_0==65||(LA72_0>=69 && LA72_0<=70)||LA72_0==77||(LA72_0>=93 && LA72_0<=94)||LA72_0==98||LA72_0==106||LA72_0==108||(LA72_0>=112 && LA72_0<=114)||(LA72_0>=117 && LA72_0<=126)||LA72_0==128) ) {
                 alt72=1;
             }
             switch (alt72) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5277:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:5305:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:5277:4: ( (lv_elements_3_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5278:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5305:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5306:5: (lv_elements_3_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5278:5: (lv_elements_3_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5279:6: lv_elements_3_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5306:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5307:6: lv_elements_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14953,32 +15031,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5296:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:5324:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     loop71:
                     do {
                         int alt71=2;
                         int LA71_0 = input.LA(1);
 
-                        if ( (LA71_0==64) ) {
+                        if ( (LA71_0==66) ) {
                             alt71=1;
                         }
 
 
                         switch (alt71) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:5297:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5325:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,64,FOLLOW_40); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:5301:5: ( (lv_elements_5_0= ruleXExpression ) )
-                    	    // InternalPerspectiveDsl.g:5302:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5329:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5330:6: (lv_elements_5_0= ruleXExpression )
                     	    {
-                    	    // InternalPerspectiveDsl.g:5302:6: (lv_elements_5_0= ruleXExpression )
-                    	    // InternalPerspectiveDsl.g:5303:7: lv_elements_5_0= ruleXExpression
+                    	    // InternalPerspectiveDsl.g:5330:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5331:7: lv_elements_5_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -15055,7 +15133,7 @@
 
 
     // $ANTLR start "entryRuleXListLiteral"
-    // InternalPerspectiveDsl.g:5330:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
+    // InternalPerspectiveDsl.g:5358:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
     public final EObject entryRuleXListLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -15063,8 +15141,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5330:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
-            // InternalPerspectiveDsl.g:5331:2: iv_ruleXListLiteral= ruleXListLiteral EOF
+            // InternalPerspectiveDsl.g:5358:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
+            // InternalPerspectiveDsl.g:5359:2: iv_ruleXListLiteral= ruleXListLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXListLiteralRule()); 
@@ -15095,7 +15173,7 @@
 
 
     // $ANTLR start "ruleXListLiteral"
-    // InternalPerspectiveDsl.g:5337:1: ruleXListLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) ;
+    // InternalPerspectiveDsl.g:5365:1: ruleXListLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) ;
     public final EObject ruleXListLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -15112,14 +15190,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5343:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
-            // InternalPerspectiveDsl.g:5344:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalPerspectiveDsl.g:5371:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
+            // InternalPerspectiveDsl.g:5372:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
             {
-            // InternalPerspectiveDsl.g:5344:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
-            // InternalPerspectiveDsl.g:5345:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
+            // InternalPerspectiveDsl.g:5372:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalPerspectiveDsl.g:5373:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
             {
-            // InternalPerspectiveDsl.g:5345:3: ()
-            // InternalPerspectiveDsl.g:5346:4: 
+            // InternalPerspectiveDsl.g:5373:3: ()
+            // InternalPerspectiveDsl.g:5374:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -15131,34 +15209,34 @@
 
             }
 
-            otherlv_1=(Token)match(input,67,FOLLOW_41); if (state.failed) return current;
+            otherlv_1=(Token)match(input,69,FOLLOW_41); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,68,FOLLOW_42); if (state.failed) return current;
+            otherlv_2=(Token)match(input,70,FOLLOW_42); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:5360:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            // InternalPerspectiveDsl.g:5388:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
             int alt74=2;
             int LA74_0 = input.LA(1);
 
-            if ( ((LA74_0>=RULE_ID && LA74_0<=RULE_DECIMAL)||LA74_0==14||(LA74_0>=56 && LA74_0<=58)||LA74_0==63||(LA74_0>=67 && LA74_0<=68)||LA74_0==75||(LA74_0>=91 && LA74_0<=92)||LA74_0==96||LA74_0==104||LA74_0==106||(LA74_0>=110 && LA74_0<=112)||(LA74_0>=115 && LA74_0<=124)||LA74_0==126) ) {
+            if ( ((LA74_0>=RULE_ID && LA74_0<=RULE_DECIMAL)||LA74_0==14||(LA74_0>=58 && LA74_0<=60)||LA74_0==65||(LA74_0>=69 && LA74_0<=70)||LA74_0==77||(LA74_0>=93 && LA74_0<=94)||LA74_0==98||LA74_0==106||LA74_0==108||(LA74_0>=112 && LA74_0<=114)||(LA74_0>=117 && LA74_0<=126)||LA74_0==128) ) {
                 alt74=1;
             }
             switch (alt74) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5361:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:5389:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:5361:4: ( (lv_elements_3_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5362:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5389:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5390:5: (lv_elements_3_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5362:5: (lv_elements_3_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5363:6: lv_elements_3_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5390:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5391:6: lv_elements_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15189,32 +15267,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5380:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:5408:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     loop73:
                     do {
                         int alt73=2;
                         int LA73_0 = input.LA(1);
 
-                        if ( (LA73_0==64) ) {
+                        if ( (LA73_0==66) ) {
                             alt73=1;
                         }
 
 
                         switch (alt73) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:5381:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5409:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,64,FOLLOW_40); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:5385:5: ( (lv_elements_5_0= ruleXExpression ) )
-                    	    // InternalPerspectiveDsl.g:5386:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5413:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:5414:6: (lv_elements_5_0= ruleXExpression )
                     	    {
-                    	    // InternalPerspectiveDsl.g:5386:6: (lv_elements_5_0= ruleXExpression )
-                    	    // InternalPerspectiveDsl.g:5387:7: lv_elements_5_0= ruleXExpression
+                    	    // InternalPerspectiveDsl.g:5414:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:5415:7: lv_elements_5_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -15260,7 +15338,7 @@
 
             }
 
-            otherlv_6=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
+            otherlv_6=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
@@ -15291,7 +15369,7 @@
 
 
     // $ANTLR start "entryRuleXClosure"
-    // InternalPerspectiveDsl.g:5414:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
+    // InternalPerspectiveDsl.g:5442:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
     public final EObject entryRuleXClosure() throws RecognitionException {
         EObject current = null;
 
@@ -15299,8 +15377,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5414:49: (iv_ruleXClosure= ruleXClosure EOF )
-            // InternalPerspectiveDsl.g:5415:2: iv_ruleXClosure= ruleXClosure EOF
+            // InternalPerspectiveDsl.g:5442:49: (iv_ruleXClosure= ruleXClosure EOF )
+            // InternalPerspectiveDsl.g:5443:2: iv_ruleXClosure= ruleXClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXClosureRule()); 
@@ -15331,7 +15409,7 @@
 
 
     // $ANTLR start "ruleXClosure"
-    // InternalPerspectiveDsl.g:5421:1: ruleXClosure returns [EObject current=null] : ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) ;
+    // InternalPerspectiveDsl.g:5449:1: ruleXClosure returns [EObject current=null] : ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) ;
     public final EObject ruleXClosure() throws RecognitionException {
         EObject current = null;
 
@@ -15350,20 +15428,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5427:2: ( ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) )
-            // InternalPerspectiveDsl.g:5428:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
+            // InternalPerspectiveDsl.g:5455:2: ( ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) )
+            // InternalPerspectiveDsl.g:5456:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
             {
-            // InternalPerspectiveDsl.g:5428:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
-            // InternalPerspectiveDsl.g:5429:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']'
+            // InternalPerspectiveDsl.g:5456:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
+            // InternalPerspectiveDsl.g:5457:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']'
             {
-            // InternalPerspectiveDsl.g:5429:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
-            // InternalPerspectiveDsl.g:5430:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
+            // InternalPerspectiveDsl.g:5457:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
+            // InternalPerspectiveDsl.g:5458:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
             {
-            // InternalPerspectiveDsl.g:5436:4: ( () otherlv_1= '[' )
-            // InternalPerspectiveDsl.g:5437:5: () otherlv_1= '['
+            // InternalPerspectiveDsl.g:5464:4: ( () otherlv_1= '[' )
+            // InternalPerspectiveDsl.g:5465:5: () otherlv_1= '['
             {
-            // InternalPerspectiveDsl.g:5437:5: ()
-            // InternalPerspectiveDsl.g:5438:6: 
+            // InternalPerspectiveDsl.g:5465:5: ()
+            // InternalPerspectiveDsl.g:5466:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -15375,7 +15453,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,68,FOLLOW_72); if (state.failed) return current;
+            otherlv_1=(Token)match(input,70,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
@@ -15387,32 +15465,32 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5450:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
+            // InternalPerspectiveDsl.g:5478:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
             int alt77=2;
             alt77 = dfa77.predict(input);
             switch (alt77) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5451:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalPerspectiveDsl.g:5479:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
                     {
-                    // InternalPerspectiveDsl.g:5474:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
-                    // InternalPerspectiveDsl.g:5475:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalPerspectiveDsl.g:5502:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalPerspectiveDsl.g:5503:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
                     {
-                    // InternalPerspectiveDsl.g:5475:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
+                    // InternalPerspectiveDsl.g:5503:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
                     int alt76=2;
                     int LA76_0 = input.LA(1);
 
-                    if ( (LA76_0==RULE_ID||LA76_0==63||LA76_0==88) ) {
+                    if ( (LA76_0==RULE_ID||LA76_0==65||LA76_0==90) ) {
                         alt76=1;
                     }
                     switch (alt76) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:5476:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            // InternalPerspectiveDsl.g:5504:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:5476:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
-                            // InternalPerspectiveDsl.g:5477:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:5504:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
+                            // InternalPerspectiveDsl.g:5505:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
                             {
-                            // InternalPerspectiveDsl.g:5477:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
-                            // InternalPerspectiveDsl.g:5478:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
+                            // InternalPerspectiveDsl.g:5505:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:5506:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
                             {
                             if ( state.backtracking==0 ) {
 
@@ -15443,32 +15521,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:5495:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            // InternalPerspectiveDsl.g:5523:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                             loop75:
                             do {
                                 int alt75=2;
                                 int LA75_0 = input.LA(1);
 
-                                if ( (LA75_0==64) ) {
+                                if ( (LA75_0==66) ) {
                                     alt75=1;
                                 }
 
 
                                 switch (alt75) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:5496:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalPerspectiveDsl.g:5524:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
                             	    {
-                            	    otherlv_3=(Token)match(input,64,FOLLOW_53); if (state.failed) return current;
+                            	    otherlv_3=(Token)match(input,66,FOLLOW_53); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
                             	      						
                             	    }
-                            	    // InternalPerspectiveDsl.g:5500:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
-                            	    // InternalPerspectiveDsl.g:5501:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalPerspectiveDsl.g:5528:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalPerspectiveDsl.g:5529:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
                             	    {
-                            	    // InternalPerspectiveDsl.g:5501:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
-                            	    // InternalPerspectiveDsl.g:5502:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
+                            	    // InternalPerspectiveDsl.g:5529:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalPerspectiveDsl.g:5530:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -15514,13 +15592,13 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5521:5: ( (lv_explicitSyntax_5_0= '|' ) )
-                    // InternalPerspectiveDsl.g:5522:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalPerspectiveDsl.g:5549:5: ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalPerspectiveDsl.g:5550:6: (lv_explicitSyntax_5_0= '|' )
                     {
-                    // InternalPerspectiveDsl.g:5522:6: (lv_explicitSyntax_5_0= '|' )
-                    // InternalPerspectiveDsl.g:5523:7: lv_explicitSyntax_5_0= '|'
+                    // InternalPerspectiveDsl.g:5550:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalPerspectiveDsl.g:5551:7: lv_explicitSyntax_5_0= '|'
                     {
-                    lv_explicitSyntax_5_0=(Token)match(input,103,FOLLOW_74); if (state.failed) return current;
+                    lv_explicitSyntax_5_0=(Token)match(input,105,FOLLOW_74); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
@@ -15549,11 +15627,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5537:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
-            // InternalPerspectiveDsl.g:5538:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:5565:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
+            // InternalPerspectiveDsl.g:5566:4: (lv_expression_6_0= ruleXExpressionInClosure )
             {
-            // InternalPerspectiveDsl.g:5538:4: (lv_expression_6_0= ruleXExpressionInClosure )
-            // InternalPerspectiveDsl.g:5539:5: lv_expression_6_0= ruleXExpressionInClosure
+            // InternalPerspectiveDsl.g:5566:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalPerspectiveDsl.g:5567:5: lv_expression_6_0= ruleXExpressionInClosure
             {
             if ( state.backtracking==0 ) {
 
@@ -15584,7 +15662,7 @@
 
             }
 
-            otherlv_7=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
+            otherlv_7=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
@@ -15615,7 +15693,7 @@
 
 
     // $ANTLR start "entryRuleXExpressionInClosure"
-    // InternalPerspectiveDsl.g:5564:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
+    // InternalPerspectiveDsl.g:5592:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
     public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
         EObject current = null;
 
@@ -15623,8 +15701,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5564:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
-            // InternalPerspectiveDsl.g:5565:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
+            // InternalPerspectiveDsl.g:5592:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
+            // InternalPerspectiveDsl.g:5593:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionInClosureRule()); 
@@ -15655,7 +15733,7 @@
 
 
     // $ANTLR start "ruleXExpressionInClosure"
-    // InternalPerspectiveDsl.g:5571:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) ;
+    // InternalPerspectiveDsl.g:5599:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) ;
     public final EObject ruleXExpressionInClosure() throws RecognitionException {
         EObject current = null;
 
@@ -15667,14 +15745,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5577:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
-            // InternalPerspectiveDsl.g:5578:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalPerspectiveDsl.g:5605:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
+            // InternalPerspectiveDsl.g:5606:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
             {
-            // InternalPerspectiveDsl.g:5578:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
-            // InternalPerspectiveDsl.g:5579:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            // InternalPerspectiveDsl.g:5606:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalPerspectiveDsl.g:5607:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
             {
-            // InternalPerspectiveDsl.g:5579:3: ()
-            // InternalPerspectiveDsl.g:5580:4: 
+            // InternalPerspectiveDsl.g:5607:3: ()
+            // InternalPerspectiveDsl.g:5608:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -15686,26 +15764,26 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5586:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            // InternalPerspectiveDsl.g:5614:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
             loop79:
             do {
                 int alt79=2;
                 int LA79_0 = input.LA(1);
 
-                if ( ((LA79_0>=RULE_ID && LA79_0<=RULE_DECIMAL)||LA79_0==14||(LA79_0>=56 && LA79_0<=58)||LA79_0==63||(LA79_0>=67 && LA79_0<=68)||LA79_0==75||(LA79_0>=91 && LA79_0<=92)||LA79_0==96||LA79_0==104||LA79_0==106||(LA79_0>=110 && LA79_0<=124)||LA79_0==126) ) {
+                if ( ((LA79_0>=RULE_ID && LA79_0<=RULE_DECIMAL)||LA79_0==14||(LA79_0>=58 && LA79_0<=60)||LA79_0==65||(LA79_0>=69 && LA79_0<=70)||LA79_0==77||(LA79_0>=93 && LA79_0<=94)||LA79_0==98||LA79_0==106||LA79_0==108||(LA79_0>=112 && LA79_0<=126)||LA79_0==128) ) {
                     alt79=1;
                 }
 
 
                 switch (alt79) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:5587:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
+            	    // InternalPerspectiveDsl.g:5615:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
             	    {
-            	    // InternalPerspectiveDsl.g:5587:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
-            	    // InternalPerspectiveDsl.g:5588:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:5615:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalPerspectiveDsl.g:5616:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
             	    {
-            	    // InternalPerspectiveDsl.g:5588:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
-            	    // InternalPerspectiveDsl.g:5589:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
+            	    // InternalPerspectiveDsl.g:5616:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:5617:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -15736,18 +15814,18 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:5606:4: (otherlv_2= ';' )?
+            	    // InternalPerspectiveDsl.g:5634:4: (otherlv_2= ';' )?
             	    int alt78=2;
             	    int LA78_0 = input.LA(1);
 
-            	    if ( (LA78_0==61) ) {
+            	    if ( (LA78_0==63) ) {
             	        alt78=1;
             	    }
             	    switch (alt78) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:5607:5: otherlv_2= ';'
+            	            // InternalPerspectiveDsl.g:5635:5: otherlv_2= ';'
             	            {
-            	            otherlv_2=(Token)match(input,61,FOLLOW_77); if (state.failed) return current;
+            	            otherlv_2=(Token)match(input,63,FOLLOW_77); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
@@ -15793,7 +15871,7 @@
 
 
     // $ANTLR start "entryRuleXShortClosure"
-    // InternalPerspectiveDsl.g:5617:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
+    // InternalPerspectiveDsl.g:5645:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
     public final EObject entryRuleXShortClosure() throws RecognitionException {
         EObject current = null;
 
@@ -15801,8 +15879,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5617:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
-            // InternalPerspectiveDsl.g:5618:2: iv_ruleXShortClosure= ruleXShortClosure EOF
+            // InternalPerspectiveDsl.g:5645:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
+            // InternalPerspectiveDsl.g:5646:2: iv_ruleXShortClosure= ruleXShortClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXShortClosureRule()); 
@@ -15833,7 +15911,7 @@
 
 
     // $ANTLR start "ruleXShortClosure"
-    // InternalPerspectiveDsl.g:5624:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
+    // InternalPerspectiveDsl.g:5652:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
     public final EObject ruleXShortClosure() throws RecognitionException {
         EObject current = null;
 
@@ -15850,20 +15928,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5630:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:5631:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:5658:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:5659:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:5631:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:5632:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5659:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:5660:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:5632:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
-            // InternalPerspectiveDsl.g:5633:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalPerspectiveDsl.g:5660:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
+            // InternalPerspectiveDsl.g:5661:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
             {
-            // InternalPerspectiveDsl.g:5658:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
-            // InternalPerspectiveDsl.g:5659:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalPerspectiveDsl.g:5686:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalPerspectiveDsl.g:5687:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
             {
-            // InternalPerspectiveDsl.g:5659:5: ()
-            // InternalPerspectiveDsl.g:5660:6: 
+            // InternalPerspectiveDsl.g:5687:5: ()
+            // InternalPerspectiveDsl.g:5688:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -15875,22 +15953,22 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5666:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
+            // InternalPerspectiveDsl.g:5694:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
             int alt81=2;
             int LA81_0 = input.LA(1);
 
-            if ( (LA81_0==RULE_ID||LA81_0==63||LA81_0==88) ) {
+            if ( (LA81_0==RULE_ID||LA81_0==65||LA81_0==90) ) {
                 alt81=1;
             }
             switch (alt81) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5667:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    // InternalPerspectiveDsl.g:5695:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:5667:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
-                    // InternalPerspectiveDsl.g:5668:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5695:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
+                    // InternalPerspectiveDsl.g:5696:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                     {
-                    // InternalPerspectiveDsl.g:5668:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
-                    // InternalPerspectiveDsl.g:5669:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
+                    // InternalPerspectiveDsl.g:5696:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5697:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15921,32 +15999,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5686:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    // InternalPerspectiveDsl.g:5714:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                     loop80:
                     do {
                         int alt80=2;
                         int LA80_0 = input.LA(1);
 
-                        if ( (LA80_0==64) ) {
+                        if ( (LA80_0==66) ) {
                             alt80=1;
                         }
 
 
                         switch (alt80) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:5687:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalPerspectiveDsl.g:5715:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                     	    {
-                    	    otherlv_2=(Token)match(input,64,FOLLOW_53); if (state.failed) return current;
+                    	    otherlv_2=(Token)match(input,66,FOLLOW_53); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
                     	      						
                     	    }
-                    	    // InternalPerspectiveDsl.g:5691:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
-                    	    // InternalPerspectiveDsl.g:5692:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalPerspectiveDsl.g:5719:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalPerspectiveDsl.g:5720:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                     	    {
-                    	    // InternalPerspectiveDsl.g:5692:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
-                    	    // InternalPerspectiveDsl.g:5693:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
+                    	    // InternalPerspectiveDsl.g:5720:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalPerspectiveDsl.g:5721:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -15992,13 +16070,13 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5712:5: ( (lv_explicitSyntax_4_0= '|' ) )
-            // InternalPerspectiveDsl.g:5713:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalPerspectiveDsl.g:5740:5: ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalPerspectiveDsl.g:5741:6: (lv_explicitSyntax_4_0= '|' )
             {
-            // InternalPerspectiveDsl.g:5713:6: (lv_explicitSyntax_4_0= '|' )
-            // InternalPerspectiveDsl.g:5714:7: lv_explicitSyntax_4_0= '|'
+            // InternalPerspectiveDsl.g:5741:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalPerspectiveDsl.g:5742:7: lv_explicitSyntax_4_0= '|'
             {
-            lv_explicitSyntax_4_0=(Token)match(input,103,FOLLOW_40); if (state.failed) return current;
+            lv_explicitSyntax_4_0=(Token)match(input,105,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               							newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
@@ -16024,11 +16102,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5728:3: ( (lv_expression_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:5729:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5756:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5757:4: (lv_expression_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:5729:4: (lv_expression_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:5730:5: lv_expression_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:5757:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5758:5: lv_expression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -16084,7 +16162,7 @@
 
 
     // $ANTLR start "entryRuleXParenthesizedExpression"
-    // InternalPerspectiveDsl.g:5751:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
+    // InternalPerspectiveDsl.g:5779:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
     public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16092,8 +16170,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5751:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
-            // InternalPerspectiveDsl.g:5752:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
+            // InternalPerspectiveDsl.g:5779:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
+            // InternalPerspectiveDsl.g:5780:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
@@ -16124,7 +16202,7 @@
 
 
     // $ANTLR start "ruleXParenthesizedExpression"
-    // InternalPerspectiveDsl.g:5758:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
+    // InternalPerspectiveDsl.g:5786:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
     public final EObject ruleXParenthesizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16137,13 +16215,13 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5764:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
-            // InternalPerspectiveDsl.g:5765:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalPerspectiveDsl.g:5792:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
+            // InternalPerspectiveDsl.g:5793:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
             {
-            // InternalPerspectiveDsl.g:5765:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
-            // InternalPerspectiveDsl.g:5766:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
+            // InternalPerspectiveDsl.g:5793:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalPerspectiveDsl.g:5794:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
             {
-            otherlv_0=(Token)match(input,63,FOLLOW_40); if (state.failed) return current;
+            otherlv_0=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
@@ -16165,7 +16243,7 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            otherlv_2=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
+            otherlv_2=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
@@ -16196,7 +16274,7 @@
 
 
     // $ANTLR start "entryRuleXIfExpression"
-    // InternalPerspectiveDsl.g:5786:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
+    // InternalPerspectiveDsl.g:5814:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
     public final EObject entryRuleXIfExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16204,8 +16282,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5786:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
-            // InternalPerspectiveDsl.g:5787:2: iv_ruleXIfExpression= ruleXIfExpression EOF
+            // InternalPerspectiveDsl.g:5814:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
+            // InternalPerspectiveDsl.g:5815:2: iv_ruleXIfExpression= ruleXIfExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXIfExpressionRule()); 
@@ -16236,7 +16314,7 @@
 
 
     // $ANTLR start "ruleXIfExpression"
-    // InternalPerspectiveDsl.g:5793:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
+    // InternalPerspectiveDsl.g:5821:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
     public final EObject ruleXIfExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16255,14 +16333,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5799:2: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
-            // InternalPerspectiveDsl.g:5800:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
+            // InternalPerspectiveDsl.g:5827:2: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
+            // InternalPerspectiveDsl.g:5828:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
             {
-            // InternalPerspectiveDsl.g:5800:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
-            // InternalPerspectiveDsl.g:5801:3: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:5828:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
+            // InternalPerspectiveDsl.g:5829:3: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
             {
-            // InternalPerspectiveDsl.g:5801:3: ()
-            // InternalPerspectiveDsl.g:5802:4: 
+            // InternalPerspectiveDsl.g:5829:3: ()
+            // InternalPerspectiveDsl.g:5830:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16274,23 +16352,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,104,FOLLOW_78); if (state.failed) return current;
+            otherlv_1=(Token)match(input,106,FOLLOW_78); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,63,FOLLOW_40); if (state.failed) return current;
+            otherlv_2=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:5816:3: ( (lv_if_3_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:5817:4: (lv_if_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5844:3: ( (lv_if_3_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5845:4: (lv_if_3_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:5817:4: (lv_if_3_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:5818:5: lv_if_3_0= ruleXExpression
+            // InternalPerspectiveDsl.g:5845:4: (lv_if_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5846:5: lv_if_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -16321,17 +16399,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
+            otherlv_4=(Token)match(input,67,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:5839:3: ( (lv_then_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:5840:4: (lv_then_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5867:3: ( (lv_then_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:5868:4: (lv_then_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:5840:4: (lv_then_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:5841:5: lv_then_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:5868:4: (lv_then_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:5869:5: lv_then_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -16362,11 +16440,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:5858:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:5886:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
             int alt82=2;
             int LA82_0 = input.LA(1);
 
-            if ( (LA82_0==105) ) {
+            if ( (LA82_0==107) ) {
                 int LA82_1 = input.LA(2);
 
                 if ( (synpred31_InternalPerspectiveDsl()) ) {
@@ -16375,12 +16453,12 @@
             }
             switch (alt82) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5859:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5887:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
                     {
-                    // InternalPerspectiveDsl.g:5859:4: ( ( 'else' )=>otherlv_6= 'else' )
-                    // InternalPerspectiveDsl.g:5860:5: ( 'else' )=>otherlv_6= 'else'
+                    // InternalPerspectiveDsl.g:5887:4: ( ( 'else' )=>otherlv_6= 'else' )
+                    // InternalPerspectiveDsl.g:5888:5: ( 'else' )=>otherlv_6= 'else'
                     {
-                    otherlv_6=(Token)match(input,105,FOLLOW_40); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,107,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
@@ -16389,11 +16467,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5866:4: ( (lv_else_7_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5867:5: (lv_else_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5894:4: ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5895:5: (lv_else_7_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5867:5: (lv_else_7_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5868:6: lv_else_7_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5895:5: (lv_else_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5896:6: lv_else_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16455,7 +16533,7 @@
 
 
     // $ANTLR start "entryRuleXSwitchExpression"
-    // InternalPerspectiveDsl.g:5890:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
+    // InternalPerspectiveDsl.g:5918:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
     public final EObject entryRuleXSwitchExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16463,8 +16541,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:5890:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
-            // InternalPerspectiveDsl.g:5891:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
+            // InternalPerspectiveDsl.g:5918:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
+            // InternalPerspectiveDsl.g:5919:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSwitchExpressionRule()); 
@@ -16495,7 +16573,7 @@
 
 
     // $ANTLR start "ruleXSwitchExpression"
-    // InternalPerspectiveDsl.g:5897:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) ;
+    // InternalPerspectiveDsl.g:5925:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) ;
     public final EObject ruleXSwitchExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16525,14 +16603,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:5903:2: ( ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) )
-            // InternalPerspectiveDsl.g:5904:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
+            // InternalPerspectiveDsl.g:5931:2: ( ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) )
+            // InternalPerspectiveDsl.g:5932:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
             {
-            // InternalPerspectiveDsl.g:5904:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
-            // InternalPerspectiveDsl.g:5905:3: () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}'
+            // InternalPerspectiveDsl.g:5932:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
+            // InternalPerspectiveDsl.g:5933:3: () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}'
             {
-            // InternalPerspectiveDsl.g:5905:3: ()
-            // InternalPerspectiveDsl.g:5906:4: 
+            // InternalPerspectiveDsl.g:5933:3: ()
+            // InternalPerspectiveDsl.g:5934:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16544,39 +16622,39 @@
 
             }
 
-            otherlv_1=(Token)match(input,106,FOLLOW_80); if (state.failed) return current;
+            otherlv_1=(Token)match(input,108,FOLLOW_80); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:5916:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:5944:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )
             int alt84=2;
             alt84 = dfa84.predict(input);
             switch (alt84) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:5917:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalPerspectiveDsl.g:5945:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
                     {
-                    // InternalPerspectiveDsl.g:5917:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
-                    // InternalPerspectiveDsl.g:5918:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
+                    // InternalPerspectiveDsl.g:5945:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalPerspectiveDsl.g:5946:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
                     {
-                    // InternalPerspectiveDsl.g:5918:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
-                    // InternalPerspectiveDsl.g:5919:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalPerspectiveDsl.g:5946:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+                    // InternalPerspectiveDsl.g:5947:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
                     {
-                    // InternalPerspectiveDsl.g:5929:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
-                    // InternalPerspectiveDsl.g:5930:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+                    // InternalPerspectiveDsl.g:5957:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalPerspectiveDsl.g:5958:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
                     {
-                    otherlv_2=(Token)match(input,63,FOLLOW_53); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,65,FOLLOW_53); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
                       						
                     }
-                    // InternalPerspectiveDsl.g:5934:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
-                    // InternalPerspectiveDsl.g:5935:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5962:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+                    // InternalPerspectiveDsl.g:5963:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
                     {
-                    // InternalPerspectiveDsl.g:5935:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
-                    // InternalPerspectiveDsl.g:5936:9: lv_declaredParam_3_0= ruleJvmFormalParameter
+                    // InternalPerspectiveDsl.g:5963:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalPerspectiveDsl.g:5964:9: lv_declaredParam_3_0= ruleJvmFormalParameter
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16607,7 +16685,7 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,107,FOLLOW_40); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,109,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
@@ -16619,11 +16697,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:5959:5: ( (lv_switch_5_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:5960:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5987:5: ( (lv_switch_5_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:5988:6: (lv_switch_5_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:5960:6: (lv_switch_5_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:5961:7: lv_switch_5_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:5988:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:5989:7: lv_switch_5_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16654,7 +16732,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,65,FOLLOW_20); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,67,FOLLOW_20); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
@@ -16667,26 +16745,26 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:5984:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:6012:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
                     {
-                    // InternalPerspectiveDsl.g:5984:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
-                    // InternalPerspectiveDsl.g:5985:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6012:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:6013:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
                     {
-                    // InternalPerspectiveDsl.g:5985:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
+                    // InternalPerspectiveDsl.g:6013:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
                     int alt83=2;
                     alt83 = dfa83.predict(input);
                     switch (alt83) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:5986:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalPerspectiveDsl.g:6014:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
                             {
-                            // InternalPerspectiveDsl.g:5995:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
-                            // InternalPerspectiveDsl.g:5996:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
+                            // InternalPerspectiveDsl.g:6023:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalPerspectiveDsl.g:6024:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
                             {
-                            // InternalPerspectiveDsl.g:5996:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
-                            // InternalPerspectiveDsl.g:5997:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:6024:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
+                            // InternalPerspectiveDsl.g:6025:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
                             {
-                            // InternalPerspectiveDsl.g:5997:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
-                            // InternalPerspectiveDsl.g:5998:9: lv_declaredParam_7_0= ruleJvmFormalParameter
+                            // InternalPerspectiveDsl.g:6025:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalPerspectiveDsl.g:6026:9: lv_declaredParam_7_0= ruleJvmFormalParameter
                             {
                             if ( state.backtracking==0 ) {
 
@@ -16717,7 +16795,7 @@
 
                             }
 
-                            otherlv_8=(Token)match(input,107,FOLLOW_40); if (state.failed) return current;
+                            otherlv_8=(Token)match(input,109,FOLLOW_40); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
@@ -16732,11 +16810,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:6021:5: ( (lv_switch_9_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:6022:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6049:5: ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6050:6: (lv_switch_9_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6022:6: (lv_switch_9_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6023:7: lv_switch_9_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6050:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6051:7: lv_switch_9_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16782,23 +16860,23 @@
               			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
               		
             }
-            // InternalPerspectiveDsl.g:6046:3: ( (lv_cases_11_0= ruleXCasePart ) )*
+            // InternalPerspectiveDsl.g:6074:3: ( (lv_cases_11_0= ruleXCasePart ) )*
             loop85:
             do {
                 int alt85=2;
                 int LA85_0 = input.LA(1);
 
-                if ( (LA85_0==RULE_ID||(LA85_0>=63 && LA85_0<=64)||LA85_0==88||LA85_0==107||LA85_0==109) ) {
+                if ( (LA85_0==RULE_ID||(LA85_0>=65 && LA85_0<=66)||LA85_0==90||LA85_0==109||LA85_0==111) ) {
                     alt85=1;
                 }
 
 
                 switch (alt85) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:6047:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalPerspectiveDsl.g:6075:4: (lv_cases_11_0= ruleXCasePart )
             	    {
-            	    // InternalPerspectiveDsl.g:6047:4: (lv_cases_11_0= ruleXCasePart )
-            	    // InternalPerspectiveDsl.g:6048:5: lv_cases_11_0= ruleXCasePart
+            	    // InternalPerspectiveDsl.g:6075:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalPerspectiveDsl.g:6076:5: lv_cases_11_0= ruleXCasePart
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -16835,34 +16913,34 @@
                 }
             } while (true);
 
-            // InternalPerspectiveDsl.g:6065:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:6093:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
             int alt86=2;
             int LA86_0 = input.LA(1);
 
-            if ( (LA86_0==108) ) {
+            if ( (LA86_0==110) ) {
                 alt86=1;
             }
             switch (alt86) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6066:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6094:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
                     {
-                    otherlv_12=(Token)match(input,108,FOLLOW_81); if (state.failed) return current;
+                    otherlv_12=(Token)match(input,110,FOLLOW_81); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
                       			
                     }
-                    otherlv_13=(Token)match(input,107,FOLLOW_40); if (state.failed) return current;
+                    otherlv_13=(Token)match(input,109,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
                       			
                     }
-                    // InternalPerspectiveDsl.g:6074:4: ( (lv_default_14_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:6075:5: (lv_default_14_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6102:4: ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6103:5: (lv_default_14_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6075:5: (lv_default_14_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6076:6: lv_default_14_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6103:5: (lv_default_14_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6104:6: lv_default_14_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16930,7 +17008,7 @@
 
 
     // $ANTLR start "entryRuleXCasePart"
-    // InternalPerspectiveDsl.g:6102:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
+    // InternalPerspectiveDsl.g:6130:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
     public final EObject entryRuleXCasePart() throws RecognitionException {
         EObject current = null;
 
@@ -16938,8 +17016,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6102:50: (iv_ruleXCasePart= ruleXCasePart EOF )
-            // InternalPerspectiveDsl.g:6103:2: iv_ruleXCasePart= ruleXCasePart EOF
+            // InternalPerspectiveDsl.g:6130:50: (iv_ruleXCasePart= ruleXCasePart EOF )
+            // InternalPerspectiveDsl.g:6131:2: iv_ruleXCasePart= ruleXCasePart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCasePartRule()); 
@@ -16970,7 +17048,7 @@
 
 
     // $ANTLR start "ruleXCasePart"
-    // InternalPerspectiveDsl.g:6109:1: ruleXCasePart returns [EObject current=null] : ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) ;
+    // InternalPerspectiveDsl.g:6137:1: ruleXCasePart returns [EObject current=null] : ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) ;
     public final EObject ruleXCasePart() throws RecognitionException {
         EObject current = null;
 
@@ -16988,14 +17066,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6115:2: ( ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) )
-            // InternalPerspectiveDsl.g:6116:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
+            // InternalPerspectiveDsl.g:6143:2: ( ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) )
+            // InternalPerspectiveDsl.g:6144:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
             {
-            // InternalPerspectiveDsl.g:6116:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
-            // InternalPerspectiveDsl.g:6117:3: () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            // InternalPerspectiveDsl.g:6144:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
+            // InternalPerspectiveDsl.g:6145:3: () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
             {
-            // InternalPerspectiveDsl.g:6117:3: ()
-            // InternalPerspectiveDsl.g:6118:4: 
+            // InternalPerspectiveDsl.g:6145:3: ()
+            // InternalPerspectiveDsl.g:6146:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17007,19 +17085,19 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6124:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
+            // InternalPerspectiveDsl.g:6152:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
             int alt87=2;
             int LA87_0 = input.LA(1);
 
-            if ( (LA87_0==RULE_ID||LA87_0==63||LA87_0==88) ) {
+            if ( (LA87_0==RULE_ID||LA87_0==65||LA87_0==90) ) {
                 alt87=1;
             }
             switch (alt87) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6125:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6153:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:6125:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
-                    // InternalPerspectiveDsl.g:6126:5: lv_typeGuard_1_0= ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:6153:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6154:5: lv_typeGuard_1_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17053,28 +17131,28 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6143:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:6171:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
             int alt88=2;
             int LA88_0 = input.LA(1);
 
-            if ( (LA88_0==109) ) {
+            if ( (LA88_0==111) ) {
                 alt88=1;
             }
             switch (alt88) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6144:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6172:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
                     {
-                    otherlv_2=(Token)match(input,109,FOLLOW_40); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,111,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:6148:4: ( (lv_case_3_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:6149:5: (lv_case_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6176:4: ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6177:5: (lv_case_3_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6149:5: (lv_case_3_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6150:6: lv_case_3_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6177:5: (lv_case_3_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6178:6: lv_case_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17111,14 +17189,14 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6168:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            // InternalPerspectiveDsl.g:6196:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
             int alt89=2;
             int LA89_0 = input.LA(1);
 
-            if ( (LA89_0==107) ) {
+            if ( (LA89_0==109) ) {
                 alt89=1;
             }
-            else if ( (LA89_0==64) ) {
+            else if ( (LA89_0==66) ) {
                 alt89=2;
             }
             else {
@@ -17130,22 +17208,22 @@
             }
             switch (alt89) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6169:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:6197:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
                     {
-                    // InternalPerspectiveDsl.g:6169:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
-                    // InternalPerspectiveDsl.g:6170:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6197:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:6198:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
                     {
-                    otherlv_4=(Token)match(input,107,FOLLOW_40); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,109,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
                       				
                     }
-                    // InternalPerspectiveDsl.g:6174:5: ( (lv_then_5_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:6175:6: (lv_then_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6202:5: ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6203:6: (lv_then_5_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6175:6: (lv_then_5_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6176:7: lv_then_5_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6203:6: (lv_then_5_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6204:7: lv_then_5_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17183,15 +17261,15 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:6195:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalPerspectiveDsl.g:6223:4: ( (lv_fallThrough_6_0= ',' ) )
                     {
-                    // InternalPerspectiveDsl.g:6195:4: ( (lv_fallThrough_6_0= ',' ) )
-                    // InternalPerspectiveDsl.g:6196:5: (lv_fallThrough_6_0= ',' )
+                    // InternalPerspectiveDsl.g:6223:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalPerspectiveDsl.g:6224:5: (lv_fallThrough_6_0= ',' )
                     {
-                    // InternalPerspectiveDsl.g:6196:5: (lv_fallThrough_6_0= ',' )
-                    // InternalPerspectiveDsl.g:6197:6: lv_fallThrough_6_0= ','
+                    // InternalPerspectiveDsl.g:6224:5: (lv_fallThrough_6_0= ',' )
+                    // InternalPerspectiveDsl.g:6225:6: lv_fallThrough_6_0= ','
                     {
-                    lv_fallThrough_6_0=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
+                    lv_fallThrough_6_0=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
@@ -17242,7 +17320,7 @@
 
 
     // $ANTLR start "entryRuleXForLoopExpression"
-    // InternalPerspectiveDsl.g:6214:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
+    // InternalPerspectiveDsl.g:6242:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
     public final EObject entryRuleXForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17250,8 +17328,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6214:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
-            // InternalPerspectiveDsl.g:6215:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
+            // InternalPerspectiveDsl.g:6242:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:6243:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXForLoopExpressionRule()); 
@@ -17282,7 +17360,7 @@
 
 
     // $ANTLR start "ruleXForLoopExpression"
-    // InternalPerspectiveDsl.g:6221:1: ruleXForLoopExpression returns [EObject current=null] : ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
+    // InternalPerspectiveDsl.g:6249:1: ruleXForLoopExpression returns [EObject current=null] : ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
     public final EObject ruleXForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17301,20 +17379,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6227:2: ( ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:6228:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:6255:2: ( ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:6256:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:6228:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:6229:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6256:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:6257:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:6229:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
-            // InternalPerspectiveDsl.g:6230:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalPerspectiveDsl.g:6257:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+            // InternalPerspectiveDsl.g:6258:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
             {
-            // InternalPerspectiveDsl.g:6243:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
-            // InternalPerspectiveDsl.g:6244:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+            // InternalPerspectiveDsl.g:6271:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalPerspectiveDsl.g:6272:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
             {
-            // InternalPerspectiveDsl.g:6244:5: ()
-            // InternalPerspectiveDsl.g:6245:6: 
+            // InternalPerspectiveDsl.g:6272:5: ()
+            // InternalPerspectiveDsl.g:6273:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17326,23 +17404,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,110,FOLLOW_78); if (state.failed) return current;
+            otherlv_1=(Token)match(input,112,FOLLOW_78); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
               				
             }
-            otherlv_2=(Token)match(input,63,FOLLOW_53); if (state.failed) return current;
+            otherlv_2=(Token)match(input,65,FOLLOW_53); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
               				
             }
-            // InternalPerspectiveDsl.g:6259:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:6260:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:6287:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:6288:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:6260:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
-            // InternalPerspectiveDsl.g:6261:7: lv_declaredParam_3_0= ruleJvmFormalParameter
+            // InternalPerspectiveDsl.g:6288:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalPerspectiveDsl.g:6289:7: lv_declaredParam_3_0= ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
 
@@ -17373,7 +17451,7 @@
 
             }
 
-            otherlv_4=(Token)match(input,107,FOLLOW_40); if (state.failed) return current;
+            otherlv_4=(Token)match(input,109,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
@@ -17385,11 +17463,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6284:3: ( (lv_forExpression_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6285:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6312:3: ( (lv_forExpression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6313:4: (lv_forExpression_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6285:4: (lv_forExpression_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6286:5: lv_forExpression_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6313:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6314:5: lv_forExpression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17420,17 +17498,17 @@
 
             }
 
-            otherlv_6=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
+            otherlv_6=(Token)match(input,67,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:6307:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6308:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6335:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6336:4: (lv_eachExpression_7_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6308:4: (lv_eachExpression_7_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6309:5: lv_eachExpression_7_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6336:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6337:5: lv_eachExpression_7_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17486,7 +17564,7 @@
 
 
     // $ANTLR start "entryRuleXBasicForLoopExpression"
-    // InternalPerspectiveDsl.g:6330:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
+    // InternalPerspectiveDsl.g:6358:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
     public final EObject entryRuleXBasicForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17494,8 +17572,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6330:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
-            // InternalPerspectiveDsl.g:6331:2: iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF
+            // InternalPerspectiveDsl.g:6358:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
+            // InternalPerspectiveDsl.g:6359:2: iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); 
@@ -17526,7 +17604,7 @@
 
 
     // $ANTLR start "ruleXBasicForLoopExpression"
-    // InternalPerspectiveDsl.g:6337:1: ruleXBasicForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) ;
+    // InternalPerspectiveDsl.g:6365:1: ruleXBasicForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) ;
     public final EObject ruleXBasicForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17554,14 +17632,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6343:2: ( ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:6344:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:6371:2: ( ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:6372:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:6344:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:6345:3: () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6372:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:6373:3: () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:6345:3: ()
-            // InternalPerspectiveDsl.g:6346:4: 
+            // InternalPerspectiveDsl.g:6373:3: ()
+            // InternalPerspectiveDsl.g:6374:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17573,34 +17651,34 @@
 
             }
 
-            otherlv_1=(Token)match(input,110,FOLLOW_78); if (state.failed) return current;
+            otherlv_1=(Token)match(input,112,FOLLOW_78); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,63,FOLLOW_85); if (state.failed) return current;
+            otherlv_2=(Token)match(input,65,FOLLOW_85); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:6360:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
+            // InternalPerspectiveDsl.g:6388:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
             int alt91=2;
             int LA91_0 = input.LA(1);
 
-            if ( ((LA91_0>=RULE_ID && LA91_0<=RULE_DECIMAL)||LA91_0==14||(LA91_0>=56 && LA91_0<=58)||LA91_0==63||(LA91_0>=67 && LA91_0<=68)||LA91_0==75||(LA91_0>=91 && LA91_0<=92)||LA91_0==96||LA91_0==104||LA91_0==106||(LA91_0>=110 && LA91_0<=124)||LA91_0==126) ) {
+            if ( ((LA91_0>=RULE_ID && LA91_0<=RULE_DECIMAL)||LA91_0==14||(LA91_0>=58 && LA91_0<=60)||LA91_0==65||(LA91_0>=69 && LA91_0<=70)||LA91_0==77||(LA91_0>=93 && LA91_0<=94)||LA91_0==98||LA91_0==106||LA91_0==108||(LA91_0>=112 && LA91_0<=126)||LA91_0==128) ) {
                 alt91=1;
             }
             switch (alt91) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6361:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    // InternalPerspectiveDsl.g:6389:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:6361:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
-                    // InternalPerspectiveDsl.g:6362:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalPerspectiveDsl.g:6389:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
+                    // InternalPerspectiveDsl.g:6390:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
                     {
-                    // InternalPerspectiveDsl.g:6362:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
-                    // InternalPerspectiveDsl.g:6363:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
+                    // InternalPerspectiveDsl.g:6390:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalPerspectiveDsl.g:6391:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17631,32 +17709,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:6380:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    // InternalPerspectiveDsl.g:6408:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
                     loop90:
                     do {
                         int alt90=2;
                         int LA90_0 = input.LA(1);
 
-                        if ( (LA90_0==64) ) {
+                        if ( (LA90_0==66) ) {
                             alt90=1;
                         }
 
 
                         switch (alt90) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:6381:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalPerspectiveDsl.g:6409:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,64,FOLLOW_87); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,66,FOLLOW_87); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:6385:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
-                    	    // InternalPerspectiveDsl.g:6386:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalPerspectiveDsl.g:6413:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalPerspectiveDsl.g:6414:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
                     	    {
-                    	    // InternalPerspectiveDsl.g:6386:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
-                    	    // InternalPerspectiveDsl.g:6387:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
+                    	    // InternalPerspectiveDsl.g:6414:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalPerspectiveDsl.g:6415:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -17702,25 +17780,25 @@
 
             }
 
-            otherlv_6=(Token)match(input,61,FOLLOW_88); if (state.failed) return current;
+            otherlv_6=(Token)match(input,63,FOLLOW_88); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:6410:3: ( (lv_expression_7_0= ruleXExpression ) )?
+            // InternalPerspectiveDsl.g:6438:3: ( (lv_expression_7_0= ruleXExpression ) )?
             int alt92=2;
             int LA92_0 = input.LA(1);
 
-            if ( ((LA92_0>=RULE_ID && LA92_0<=RULE_DECIMAL)||LA92_0==14||(LA92_0>=56 && LA92_0<=58)||LA92_0==63||(LA92_0>=67 && LA92_0<=68)||LA92_0==75||(LA92_0>=91 && LA92_0<=92)||LA92_0==96||LA92_0==104||LA92_0==106||(LA92_0>=110 && LA92_0<=112)||(LA92_0>=115 && LA92_0<=124)||LA92_0==126) ) {
+            if ( ((LA92_0>=RULE_ID && LA92_0<=RULE_DECIMAL)||LA92_0==14||(LA92_0>=58 && LA92_0<=60)||LA92_0==65||(LA92_0>=69 && LA92_0<=70)||LA92_0==77||(LA92_0>=93 && LA92_0<=94)||LA92_0==98||LA92_0==106||LA92_0==108||(LA92_0>=112 && LA92_0<=114)||(LA92_0>=117 && LA92_0<=126)||LA92_0==128) ) {
                 alt92=1;
             }
             switch (alt92) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6411:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6439:4: (lv_expression_7_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6411:4: (lv_expression_7_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6412:5: lv_expression_7_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6439:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6440:5: lv_expression_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17754,28 +17832,28 @@
 
             }
 
-            otherlv_8=(Token)match(input,61,FOLLOW_36); if (state.failed) return current;
+            otherlv_8=(Token)match(input,63,FOLLOW_36); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
               		
             }
-            // InternalPerspectiveDsl.g:6433:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
+            // InternalPerspectiveDsl.g:6461:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
             int alt94=2;
             int LA94_0 = input.LA(1);
 
-            if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_DECIMAL)||LA94_0==14||(LA94_0>=56 && LA94_0<=58)||LA94_0==63||(LA94_0>=67 && LA94_0<=68)||LA94_0==75||(LA94_0>=91 && LA94_0<=92)||LA94_0==96||LA94_0==104||LA94_0==106||(LA94_0>=110 && LA94_0<=112)||(LA94_0>=115 && LA94_0<=124)||LA94_0==126) ) {
+            if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_DECIMAL)||LA94_0==14||(LA94_0>=58 && LA94_0<=60)||LA94_0==65||(LA94_0>=69 && LA94_0<=70)||LA94_0==77||(LA94_0>=93 && LA94_0<=94)||LA94_0==98||LA94_0==106||LA94_0==108||(LA94_0>=112 && LA94_0<=114)||(LA94_0>=117 && LA94_0<=126)||LA94_0==128) ) {
                 alt94=1;
             }
             switch (alt94) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6434:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:6462:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
                     {
-                    // InternalPerspectiveDsl.g:6434:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:6435:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6462:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6463:5: (lv_updateExpressions_9_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6435:5: (lv_updateExpressions_9_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6436:6: lv_updateExpressions_9_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6463:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6464:6: lv_updateExpressions_9_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17806,32 +17884,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:6453:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    // InternalPerspectiveDsl.g:6481:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
                     loop93:
                     do {
                         int alt93=2;
                         int LA93_0 = input.LA(1);
 
-                        if ( (LA93_0==64) ) {
+                        if ( (LA93_0==66) ) {
                             alt93=1;
                         }
 
 
                         switch (alt93) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:6454:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:6482:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_10=(Token)match(input,64,FOLLOW_40); if (state.failed) return current;
+                    	    otherlv_10=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:6458:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
-                    	    // InternalPerspectiveDsl.g:6459:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:6486:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalPerspectiveDsl.g:6487:6: (lv_updateExpressions_11_0= ruleXExpression )
                     	    {
-                    	    // InternalPerspectiveDsl.g:6459:6: (lv_updateExpressions_11_0= ruleXExpression )
-                    	    // InternalPerspectiveDsl.g:6460:7: lv_updateExpressions_11_0= ruleXExpression
+                    	    // InternalPerspectiveDsl.g:6487:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalPerspectiveDsl.g:6488:7: lv_updateExpressions_11_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -17877,17 +17955,17 @@
 
             }
 
-            otherlv_12=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
+            otherlv_12=(Token)match(input,67,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
               		
             }
-            // InternalPerspectiveDsl.g:6483:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6484:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6511:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6512:4: (lv_eachExpression_13_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6484:4: (lv_eachExpression_13_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6485:5: lv_eachExpression_13_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6512:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6513:5: lv_eachExpression_13_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17943,7 +18021,7 @@
 
 
     // $ANTLR start "entryRuleXWhileExpression"
-    // InternalPerspectiveDsl.g:6506:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
+    // InternalPerspectiveDsl.g:6534:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
     public final EObject entryRuleXWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17951,8 +18029,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6506:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
-            // InternalPerspectiveDsl.g:6507:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
+            // InternalPerspectiveDsl.g:6534:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
+            // InternalPerspectiveDsl.g:6535:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXWhileExpressionRule()); 
@@ -17983,7 +18061,7 @@
 
 
     // $ANTLR start "ruleXWhileExpression"
-    // InternalPerspectiveDsl.g:6513:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
+    // InternalPerspectiveDsl.g:6541:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
     public final EObject ruleXWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17999,14 +18077,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6519:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:6520:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:6547:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:6548:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:6520:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:6521:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6548:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:6549:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:6521:3: ()
-            // InternalPerspectiveDsl.g:6522:4: 
+            // InternalPerspectiveDsl.g:6549:3: ()
+            // InternalPerspectiveDsl.g:6550:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -18018,23 +18096,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,111,FOLLOW_78); if (state.failed) return current;
+            otherlv_1=(Token)match(input,113,FOLLOW_78); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,63,FOLLOW_40); if (state.failed) return current;
+            otherlv_2=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:6536:3: ( (lv_predicate_3_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6537:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6564:3: ( (lv_predicate_3_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6565:4: (lv_predicate_3_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6537:4: (lv_predicate_3_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6538:5: lv_predicate_3_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6565:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6566:5: lv_predicate_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -18065,17 +18143,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
+            otherlv_4=(Token)match(input,67,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:6559:3: ( (lv_body_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6560:4: (lv_body_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6587:3: ( (lv_body_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6588:4: (lv_body_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6560:4: (lv_body_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6561:5: lv_body_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6588:4: (lv_body_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6589:5: lv_body_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -18131,7 +18209,7 @@
 
 
     // $ANTLR start "entryRuleXDoWhileExpression"
-    // InternalPerspectiveDsl.g:6582:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
+    // InternalPerspectiveDsl.g:6610:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
     public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -18139,8 +18217,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6582:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
-            // InternalPerspectiveDsl.g:6583:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
+            // InternalPerspectiveDsl.g:6610:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
+            // InternalPerspectiveDsl.g:6611:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); 
@@ -18171,7 +18249,7 @@
 
 
     // $ANTLR start "ruleXDoWhileExpression"
-    // InternalPerspectiveDsl.g:6589:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
+    // InternalPerspectiveDsl.g:6617:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
     public final EObject ruleXDoWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -18188,14 +18266,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6595:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
-            // InternalPerspectiveDsl.g:6596:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalPerspectiveDsl.g:6623:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
+            // InternalPerspectiveDsl.g:6624:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
             {
-            // InternalPerspectiveDsl.g:6596:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
-            // InternalPerspectiveDsl.g:6597:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
+            // InternalPerspectiveDsl.g:6624:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalPerspectiveDsl.g:6625:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
             {
-            // InternalPerspectiveDsl.g:6597:3: ()
-            // InternalPerspectiveDsl.g:6598:4: 
+            // InternalPerspectiveDsl.g:6625:3: ()
+            // InternalPerspectiveDsl.g:6626:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -18207,17 +18285,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,112,FOLLOW_40); if (state.failed) return current;
+            otherlv_1=(Token)match(input,114,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:6608:3: ( (lv_body_2_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6609:4: (lv_body_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6636:3: ( (lv_body_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6637:4: (lv_body_2_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6609:4: (lv_body_2_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6610:5: lv_body_2_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6637:4: (lv_body_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6638:5: lv_body_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -18248,23 +18326,23 @@
 
             }
 
-            otherlv_3=(Token)match(input,111,FOLLOW_78); if (state.failed) return current;
+            otherlv_3=(Token)match(input,113,FOLLOW_78); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
               		
             }
-            otherlv_4=(Token)match(input,63,FOLLOW_40); if (state.failed) return current;
+            otherlv_4=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
               		
             }
-            // InternalPerspectiveDsl.g:6635:3: ( (lv_predicate_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6636:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6663:3: ( (lv_predicate_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6664:4: (lv_predicate_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6636:4: (lv_predicate_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:6637:5: lv_predicate_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:6664:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:6665:5: lv_predicate_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -18295,7 +18373,7 @@
 
             }
 
-            otherlv_6=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
+            otherlv_6=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
@@ -18326,7 +18404,7 @@
 
 
     // $ANTLR start "entryRuleXBlockExpression"
-    // InternalPerspectiveDsl.g:6662:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
+    // InternalPerspectiveDsl.g:6690:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
     public final EObject entryRuleXBlockExpression() throws RecognitionException {
         EObject current = null;
 
@@ -18334,8 +18412,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6662:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
-            // InternalPerspectiveDsl.g:6663:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
+            // InternalPerspectiveDsl.g:6690:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
+            // InternalPerspectiveDsl.g:6691:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBlockExpressionRule()); 
@@ -18366,7 +18444,7 @@
 
 
     // $ANTLR start "ruleXBlockExpression"
-    // InternalPerspectiveDsl.g:6669:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
+    // InternalPerspectiveDsl.g:6697:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
     public final EObject ruleXBlockExpression() throws RecognitionException {
         EObject current = null;
 
@@ -18380,14 +18458,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6675:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
-            // InternalPerspectiveDsl.g:6676:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalPerspectiveDsl.g:6703:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
+            // InternalPerspectiveDsl.g:6704:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
             {
-            // InternalPerspectiveDsl.g:6676:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
-            // InternalPerspectiveDsl.g:6677:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
+            // InternalPerspectiveDsl.g:6704:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalPerspectiveDsl.g:6705:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
             {
-            // InternalPerspectiveDsl.g:6677:3: ()
-            // InternalPerspectiveDsl.g:6678:4: 
+            // InternalPerspectiveDsl.g:6705:3: ()
+            // InternalPerspectiveDsl.g:6706:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -18405,26 +18483,26 @@
               			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:6688:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
+            // InternalPerspectiveDsl.g:6716:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
             loop96:
             do {
                 int alt96=2;
                 int LA96_0 = input.LA(1);
 
-                if ( ((LA96_0>=RULE_ID && LA96_0<=RULE_DECIMAL)||LA96_0==14||(LA96_0>=56 && LA96_0<=58)||LA96_0==63||(LA96_0>=67 && LA96_0<=68)||LA96_0==75||(LA96_0>=91 && LA96_0<=92)||LA96_0==96||LA96_0==104||LA96_0==106||(LA96_0>=110 && LA96_0<=124)||LA96_0==126) ) {
+                if ( ((LA96_0>=RULE_ID && LA96_0<=RULE_DECIMAL)||LA96_0==14||(LA96_0>=58 && LA96_0<=60)||LA96_0==65||(LA96_0>=69 && LA96_0<=70)||LA96_0==77||(LA96_0>=93 && LA96_0<=94)||LA96_0==98||LA96_0==106||LA96_0==108||(LA96_0>=112 && LA96_0<=126)||LA96_0==128) ) {
                     alt96=1;
                 }
 
 
                 switch (alt96) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:6689:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
+            	    // InternalPerspectiveDsl.g:6717:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
             	    {
-            	    // InternalPerspectiveDsl.g:6689:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
-            	    // InternalPerspectiveDsl.g:6690:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:6717:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalPerspectiveDsl.g:6718:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
             	    {
-            	    // InternalPerspectiveDsl.g:6690:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
-            	    // InternalPerspectiveDsl.g:6691:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
+            	    // InternalPerspectiveDsl.g:6718:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalPerspectiveDsl.g:6719:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -18455,18 +18533,18 @@
 
             	    }
 
-            	    // InternalPerspectiveDsl.g:6708:4: (otherlv_3= ';' )?
+            	    // InternalPerspectiveDsl.g:6736:4: (otherlv_3= ';' )?
             	    int alt95=2;
             	    int LA95_0 = input.LA(1);
 
-            	    if ( (LA95_0==61) ) {
+            	    if ( (LA95_0==63) ) {
             	        alt95=1;
             	    }
             	    switch (alt95) {
             	        case 1 :
-            	            // InternalPerspectiveDsl.g:6709:5: otherlv_3= ';'
+            	            // InternalPerspectiveDsl.g:6737:5: otherlv_3= ';'
             	            {
-            	            otherlv_3=(Token)match(input,61,FOLLOW_91); if (state.failed) return current;
+            	            otherlv_3=(Token)match(input,63,FOLLOW_91); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
@@ -18518,7 +18596,7 @@
 
 
     // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
-    // InternalPerspectiveDsl.g:6723:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
+    // InternalPerspectiveDsl.g:6751:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
     public final EObject entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -18526,8 +18604,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6723:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
-            // InternalPerspectiveDsl.g:6724:2: iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF
+            // InternalPerspectiveDsl.g:6751:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
+            // InternalPerspectiveDsl.g:6752:2: iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); 
@@ -18558,7 +18636,7 @@
 
 
     // $ANTLR start "ruleXExpressionOrVarDeclaration"
-    // InternalPerspectiveDsl.g:6730:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
+    // InternalPerspectiveDsl.g:6758:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXExpressionOrVarDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -18571,17 +18649,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6736:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:6737:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            // InternalPerspectiveDsl.g:6764:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:6765:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:6737:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            // InternalPerspectiveDsl.g:6765:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
             int alt97=2;
             int LA97_0 = input.LA(1);
 
-            if ( ((LA97_0>=113 && LA97_0<=114)) ) {
+            if ( ((LA97_0>=115 && LA97_0<=116)) ) {
                 alt97=1;
             }
-            else if ( ((LA97_0>=RULE_ID && LA97_0<=RULE_DECIMAL)||LA97_0==14||(LA97_0>=56 && LA97_0<=58)||LA97_0==63||(LA97_0>=67 && LA97_0<=68)||LA97_0==75||(LA97_0>=91 && LA97_0<=92)||LA97_0==96||LA97_0==104||LA97_0==106||(LA97_0>=110 && LA97_0<=112)||(LA97_0>=115 && LA97_0<=124)||LA97_0==126) ) {
+            else if ( ((LA97_0>=RULE_ID && LA97_0<=RULE_DECIMAL)||LA97_0==14||(LA97_0>=58 && LA97_0<=60)||LA97_0==65||(LA97_0>=69 && LA97_0<=70)||LA97_0==77||(LA97_0>=93 && LA97_0<=94)||LA97_0==98||LA97_0==106||LA97_0==108||(LA97_0>=112 && LA97_0<=114)||(LA97_0>=117 && LA97_0<=126)||LA97_0==128) ) {
                 alt97=2;
             }
             else {
@@ -18593,7 +18671,7 @@
             }
             switch (alt97) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6738:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
+                    // InternalPerspectiveDsl.g:6766:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18615,7 +18693,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:6747:3: this_XExpression_1= ruleXExpression
+                    // InternalPerspectiveDsl.g:6775:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18661,7 +18739,7 @@
 
 
     // $ANTLR start "entryRuleXVariableDeclaration"
-    // InternalPerspectiveDsl.g:6759:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
+    // InternalPerspectiveDsl.g:6787:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
     public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -18669,8 +18747,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6759:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
-            // InternalPerspectiveDsl.g:6760:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
+            // InternalPerspectiveDsl.g:6787:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
+            // InternalPerspectiveDsl.g:6788:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXVariableDeclarationRule()); 
@@ -18701,7 +18779,7 @@
 
 
     // $ANTLR start "ruleXVariableDeclaration"
-    // InternalPerspectiveDsl.g:6766:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
+    // InternalPerspectiveDsl.g:6794:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
     public final EObject ruleXVariableDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -18721,14 +18799,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6772:2: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
-            // InternalPerspectiveDsl.g:6773:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
+            // InternalPerspectiveDsl.g:6800:2: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
+            // InternalPerspectiveDsl.g:6801:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
             {
-            // InternalPerspectiveDsl.g:6773:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
-            // InternalPerspectiveDsl.g:6774:3: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:6801:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
+            // InternalPerspectiveDsl.g:6802:3: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
             {
-            // InternalPerspectiveDsl.g:6774:3: ()
-            // InternalPerspectiveDsl.g:6775:4: 
+            // InternalPerspectiveDsl.g:6802:3: ()
+            // InternalPerspectiveDsl.g:6803:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -18740,14 +18818,14 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6781:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
+            // InternalPerspectiveDsl.g:6809:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
             int alt98=2;
             int LA98_0 = input.LA(1);
 
-            if ( (LA98_0==113) ) {
+            if ( (LA98_0==115) ) {
                 alt98=1;
             }
-            else if ( (LA98_0==114) ) {
+            else if ( (LA98_0==116) ) {
                 alt98=2;
             }
             else {
@@ -18759,15 +18837,15 @@
             }
             switch (alt98) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6782:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalPerspectiveDsl.g:6810:4: ( (lv_writeable_1_0= 'var' ) )
                     {
-                    // InternalPerspectiveDsl.g:6782:4: ( (lv_writeable_1_0= 'var' ) )
-                    // InternalPerspectiveDsl.g:6783:5: (lv_writeable_1_0= 'var' )
+                    // InternalPerspectiveDsl.g:6810:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalPerspectiveDsl.g:6811:5: (lv_writeable_1_0= 'var' )
                     {
-                    // InternalPerspectiveDsl.g:6783:5: (lv_writeable_1_0= 'var' )
-                    // InternalPerspectiveDsl.g:6784:6: lv_writeable_1_0= 'var'
+                    // InternalPerspectiveDsl.g:6811:5: (lv_writeable_1_0= 'var' )
+                    // InternalPerspectiveDsl.g:6812:6: lv_writeable_1_0= 'var'
                     {
-                    lv_writeable_1_0=(Token)match(input,113,FOLLOW_53); if (state.failed) return current;
+                    lv_writeable_1_0=(Token)match(input,115,FOLLOW_53); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
@@ -18791,9 +18869,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:6797:4: otherlv_2= 'val'
+                    // InternalPerspectiveDsl.g:6825:4: otherlv_2= 'val'
                     {
-                    otherlv_2=(Token)match(input,114,FOLLOW_53); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,116,FOLLOW_53); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
@@ -18805,7 +18883,7 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6802:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6830:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
             int alt99=2;
             int LA99_0 = input.LA(1);
 
@@ -18826,10 +18904,10 @@
                     throw nvae;
                 }
             }
-            else if ( (LA99_0==63) && (synpred35_InternalPerspectiveDsl())) {
+            else if ( (LA99_0==65) && (synpred35_InternalPerspectiveDsl())) {
                 alt99=1;
             }
-            else if ( (LA99_0==88) && (synpred35_InternalPerspectiveDsl())) {
+            else if ( (LA99_0==90) && (synpred35_InternalPerspectiveDsl())) {
                 alt99=1;
             }
             else {
@@ -18841,19 +18919,19 @@
             }
             switch (alt99) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6803:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:6831:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                     {
-                    // InternalPerspectiveDsl.g:6803:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
-                    // InternalPerspectiveDsl.g:6804:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalPerspectiveDsl.g:6831:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalPerspectiveDsl.g:6832:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                     {
-                    // InternalPerspectiveDsl.g:6817:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
-                    // InternalPerspectiveDsl.g:6818:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6845:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalPerspectiveDsl.g:6846:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
                     {
-                    // InternalPerspectiveDsl.g:6818:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
-                    // InternalPerspectiveDsl.g:6819:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6846:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
+                    // InternalPerspectiveDsl.g:6847:7: (lv_type_3_0= ruleJvmTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:6819:7: (lv_type_3_0= ruleJvmTypeReference )
-                    // InternalPerspectiveDsl.g:6820:8: lv_type_3_0= ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:6847:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6848:8: lv_type_3_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18884,11 +18962,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:6837:6: ( (lv_name_4_0= ruleValidID ) )
-                    // InternalPerspectiveDsl.g:6838:7: (lv_name_4_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6865:6: ( (lv_name_4_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6866:7: (lv_name_4_0= ruleValidID )
                     {
-                    // InternalPerspectiveDsl.g:6838:7: (lv_name_4_0= ruleValidID )
-                    // InternalPerspectiveDsl.g:6839:8: lv_name_4_0= ruleValidID
+                    // InternalPerspectiveDsl.g:6866:7: (lv_name_4_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6867:8: lv_name_4_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18929,13 +19007,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:6859:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6887:4: ( (lv_name_5_0= ruleValidID ) )
                     {
-                    // InternalPerspectiveDsl.g:6859:4: ( (lv_name_5_0= ruleValidID ) )
-                    // InternalPerspectiveDsl.g:6860:5: (lv_name_5_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6887:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalPerspectiveDsl.g:6888:5: (lv_name_5_0= ruleValidID )
                     {
-                    // InternalPerspectiveDsl.g:6860:5: (lv_name_5_0= ruleValidID )
-                    // InternalPerspectiveDsl.g:6861:6: lv_name_5_0= ruleValidID
+                    // InternalPerspectiveDsl.g:6888:5: (lv_name_5_0= ruleValidID )
+                    // InternalPerspectiveDsl.g:6889:6: lv_name_5_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18972,28 +19050,28 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6879:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            // InternalPerspectiveDsl.g:6907:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
             int alt100=2;
             int LA100_0 = input.LA(1);
 
-            if ( (LA100_0==66) ) {
+            if ( (LA100_0==68) ) {
                 alt100=1;
             }
             switch (alt100) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6880:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6908:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
                     {
-                    otherlv_6=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,68,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:6884:4: ( (lv_right_7_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:6885:5: (lv_right_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6912:4: ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:6913:5: (lv_right_7_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:6885:5: (lv_right_7_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:6886:6: lv_right_7_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:6913:5: (lv_right_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:6914:6: lv_right_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19055,7 +19133,7 @@
 
 
     // $ANTLR start "entryRuleJvmFormalParameter"
-    // InternalPerspectiveDsl.g:6908:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
+    // InternalPerspectiveDsl.g:6936:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
     public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -19063,8 +19141,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6908:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
-            // InternalPerspectiveDsl.g:6909:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
+            // InternalPerspectiveDsl.g:6936:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:6937:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmFormalParameterRule()); 
@@ -19095,7 +19173,7 @@
 
 
     // $ANTLR start "ruleJvmFormalParameter"
-    // InternalPerspectiveDsl.g:6915:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
+    // InternalPerspectiveDsl.g:6943:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
     public final EObject ruleJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -19108,32 +19186,32 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6921:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
-            // InternalPerspectiveDsl.g:6922:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6949:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalPerspectiveDsl.g:6950:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
             {
-            // InternalPerspectiveDsl.g:6922:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
-            // InternalPerspectiveDsl.g:6923:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:6950:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:6951:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
             {
-            // InternalPerspectiveDsl.g:6923:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
+            // InternalPerspectiveDsl.g:6951:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
             int alt101=2;
             int LA101_0 = input.LA(1);
 
             if ( (LA101_0==RULE_ID) ) {
                 int LA101_1 = input.LA(2);
 
-                if ( (LA101_1==RULE_ID||LA101_1==68||LA101_1==75||LA101_1==100) ) {
+                if ( (LA101_1==RULE_ID||LA101_1==70||LA101_1==77||LA101_1==102) ) {
                     alt101=1;
                 }
             }
-            else if ( (LA101_0==63||LA101_0==88) ) {
+            else if ( (LA101_0==65||LA101_0==90) ) {
                 alt101=1;
             }
             switch (alt101) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:6924:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6952:4: (lv_parameterType_0_0= ruleJvmTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:6924:4: (lv_parameterType_0_0= ruleJvmTypeReference )
-                    // InternalPerspectiveDsl.g:6925:5: lv_parameterType_0_0= ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:6952:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalPerspectiveDsl.g:6953:5: lv_parameterType_0_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19167,11 +19245,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6942:3: ( (lv_name_1_0= ruleValidID ) )
-            // InternalPerspectiveDsl.g:6943:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:6970:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:6971:4: (lv_name_1_0= ruleValidID )
             {
-            // InternalPerspectiveDsl.g:6943:4: (lv_name_1_0= ruleValidID )
-            // InternalPerspectiveDsl.g:6944:5: lv_name_1_0= ruleValidID
+            // InternalPerspectiveDsl.g:6971:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:6972:5: lv_name_1_0= ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -19227,7 +19305,7 @@
 
 
     // $ANTLR start "entryRuleFullJvmFormalParameter"
-    // InternalPerspectiveDsl.g:6965:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
+    // InternalPerspectiveDsl.g:6993:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
     public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -19235,8 +19313,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:6965:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
-            // InternalPerspectiveDsl.g:6966:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
+            // InternalPerspectiveDsl.g:6993:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
+            // InternalPerspectiveDsl.g:6994:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); 
@@ -19267,7 +19345,7 @@
 
 
     // $ANTLR start "ruleFullJvmFormalParameter"
-    // InternalPerspectiveDsl.g:6972:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
+    // InternalPerspectiveDsl.g:7000:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
     public final EObject ruleFullJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -19280,17 +19358,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:6978:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
-            // InternalPerspectiveDsl.g:6979:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:7006:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalPerspectiveDsl.g:7007:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
             {
-            // InternalPerspectiveDsl.g:6979:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
-            // InternalPerspectiveDsl.g:6980:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:7007:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalPerspectiveDsl.g:7008:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
             {
-            // InternalPerspectiveDsl.g:6980:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:6981:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:7008:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:7009:4: (lv_parameterType_0_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:6981:4: (lv_parameterType_0_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:6982:5: lv_parameterType_0_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:7009:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:7010:5: lv_parameterType_0_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -19321,11 +19399,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:6999:3: ( (lv_name_1_0= ruleValidID ) )
-            // InternalPerspectiveDsl.g:7000:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:7027:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalPerspectiveDsl.g:7028:4: (lv_name_1_0= ruleValidID )
             {
-            // InternalPerspectiveDsl.g:7000:4: (lv_name_1_0= ruleValidID )
-            // InternalPerspectiveDsl.g:7001:5: lv_name_1_0= ruleValidID
+            // InternalPerspectiveDsl.g:7028:4: (lv_name_1_0= ruleValidID )
+            // InternalPerspectiveDsl.g:7029:5: lv_name_1_0= ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -19381,7 +19459,7 @@
 
 
     // $ANTLR start "entryRuleXFeatureCall"
-    // InternalPerspectiveDsl.g:7022:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
+    // InternalPerspectiveDsl.g:7050:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
     public final EObject entryRuleXFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -19389,8 +19467,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7022:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
-            // InternalPerspectiveDsl.g:7023:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
+            // InternalPerspectiveDsl.g:7050:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
+            // InternalPerspectiveDsl.g:7051:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXFeatureCallRule()); 
@@ -19421,7 +19499,7 @@
 
 
     // $ANTLR start "ruleXFeatureCall"
-    // InternalPerspectiveDsl.g:7029:1: ruleXFeatureCall returns [EObject current=null] : ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) ;
+    // InternalPerspectiveDsl.g:7057:1: ruleXFeatureCall returns [EObject current=null] : ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) ;
     public final EObject ruleXFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -19448,14 +19526,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7035:2: ( ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) )
-            // InternalPerspectiveDsl.g:7036:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
+            // InternalPerspectiveDsl.g:7063:2: ( ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) )
+            // InternalPerspectiveDsl.g:7064:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
             {
-            // InternalPerspectiveDsl.g:7036:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
-            // InternalPerspectiveDsl.g:7037:3: () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            // InternalPerspectiveDsl.g:7064:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
+            // InternalPerspectiveDsl.g:7065:3: () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
             {
-            // InternalPerspectiveDsl.g:7037:3: ()
-            // InternalPerspectiveDsl.g:7038:4: 
+            // InternalPerspectiveDsl.g:7065:3: ()
+            // InternalPerspectiveDsl.g:7066:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -19467,28 +19545,28 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7044:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
+            // InternalPerspectiveDsl.g:7072:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
             int alt103=2;
             int LA103_0 = input.LA(1);
 
-            if ( (LA103_0==75) ) {
+            if ( (LA103_0==77) ) {
                 alt103=1;
             }
             switch (alt103) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7045:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
+                    // InternalPerspectiveDsl.g:7073:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
                     {
-                    otherlv_1=(Token)match(input,75,FOLLOW_65); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,77,FOLLOW_65); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:7049:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
-                    // InternalPerspectiveDsl.g:7050:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:7077:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalPerspectiveDsl.g:7078:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:7050:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
-                    // InternalPerspectiveDsl.g:7051:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
+                    // InternalPerspectiveDsl.g:7078:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:7079:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19519,32 +19597,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:7068:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    // InternalPerspectiveDsl.g:7096:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
                     loop102:
                     do {
                         int alt102=2;
                         int LA102_0 = input.LA(1);
 
-                        if ( (LA102_0==64) ) {
+                        if ( (LA102_0==66) ) {
                             alt102=1;
                         }
 
 
                         switch (alt102) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:7069:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:7097:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,64,FOLLOW_65); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,66,FOLLOW_65); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:7073:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalPerspectiveDsl.g:7074:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:7101:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:7102:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalPerspectiveDsl.g:7074:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
-                    	    // InternalPerspectiveDsl.g:7075:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    	    // InternalPerspectiveDsl.g:7102:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:7103:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -19584,7 +19662,7 @@
                         }
                     } while (true);
 
-                    otherlv_5=(Token)match(input,76,FOLLOW_64); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,78,FOLLOW_64); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
@@ -19596,11 +19674,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7098:3: ( ( ruleIdOrSuper ) )
-            // InternalPerspectiveDsl.g:7099:4: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:7126:3: ( ( ruleIdOrSuper ) )
+            // InternalPerspectiveDsl.g:7127:4: ( ruleIdOrSuper )
             {
-            // InternalPerspectiveDsl.g:7099:4: ( ruleIdOrSuper )
-            // InternalPerspectiveDsl.g:7100:5: ruleIdOrSuper
+            // InternalPerspectiveDsl.g:7127:4: ( ruleIdOrSuper )
+            // InternalPerspectiveDsl.g:7128:5: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
 
@@ -19630,20 +19708,20 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7114:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?
+            // InternalPerspectiveDsl.g:7142:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?
             int alt106=2;
             alt106 = dfa106.predict(input);
             switch (alt106) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7115:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')'
+                    // InternalPerspectiveDsl.g:7143:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')'
                     {
-                    // InternalPerspectiveDsl.g:7115:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
-                    // InternalPerspectiveDsl.g:7116:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
+                    // InternalPerspectiveDsl.g:7143:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
+                    // InternalPerspectiveDsl.g:7144:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
                     {
-                    // InternalPerspectiveDsl.g:7120:5: (lv_explicitOperationCall_7_0= '(' )
-                    // InternalPerspectiveDsl.g:7121:6: lv_explicitOperationCall_7_0= '('
+                    // InternalPerspectiveDsl.g:7148:5: (lv_explicitOperationCall_7_0= '(' )
+                    // InternalPerspectiveDsl.g:7149:6: lv_explicitOperationCall_7_0= '('
                     {
-                    lv_explicitOperationCall_7_0=(Token)match(input,63,FOLLOW_68); if (state.failed) return current;
+                    lv_explicitOperationCall_7_0=(Token)match(input,65,FOLLOW_68); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
@@ -19663,18 +19741,18 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:7133:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
+                    // InternalPerspectiveDsl.g:7161:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
                     int alt105=3;
                     alt105 = dfa105.predict(input);
                     switch (alt105) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:7134:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:7162:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
                             {
-                            // InternalPerspectiveDsl.g:7134:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
-                            // InternalPerspectiveDsl.g:7135:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:7162:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:7163:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
                             {
-                            // InternalPerspectiveDsl.g:7160:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
-                            // InternalPerspectiveDsl.g:7161:7: lv_featureCallArguments_8_0= ruleXShortClosure
+                            // InternalPerspectiveDsl.g:7188:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:7189:7: lv_featureCallArguments_8_0= ruleXShortClosure
                             {
                             if ( state.backtracking==0 ) {
 
@@ -19709,16 +19787,16 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:7179:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:7207:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
                             {
-                            // InternalPerspectiveDsl.g:7179:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
-                            // InternalPerspectiveDsl.g:7180:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            // InternalPerspectiveDsl.g:7207:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:7208:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:7180:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
-                            // InternalPerspectiveDsl.g:7181:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7208:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:7209:7: (lv_featureCallArguments_9_0= ruleXExpression )
                             {
-                            // InternalPerspectiveDsl.g:7181:7: (lv_featureCallArguments_9_0= ruleXExpression )
-                            // InternalPerspectiveDsl.g:7182:8: lv_featureCallArguments_9_0= ruleXExpression
+                            // InternalPerspectiveDsl.g:7209:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7210:8: lv_featureCallArguments_9_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -19749,32 +19827,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:7199:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            // InternalPerspectiveDsl.g:7227:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
                             loop104:
                             do {
                                 int alt104=2;
                                 int LA104_0 = input.LA(1);
 
-                                if ( (LA104_0==64) ) {
+                                if ( (LA104_0==66) ) {
                                     alt104=1;
                                 }
 
 
                                 switch (alt104) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:7200:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:7228:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
                             	    {
-                            	    otherlv_10=(Token)match(input,64,FOLLOW_40); if (state.failed) return current;
+                            	    otherlv_10=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
                             	      						
                             	    }
-                            	    // InternalPerspectiveDsl.g:7204:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
-                            	    // InternalPerspectiveDsl.g:7205:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:7232:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:7233:8: (lv_featureCallArguments_11_0= ruleXExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:7205:8: (lv_featureCallArguments_11_0= ruleXExpression )
-                            	    // InternalPerspectiveDsl.g:7206:9: lv_featureCallArguments_11_0= ruleXExpression
+                            	    // InternalPerspectiveDsl.g:7233:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:7234:9: lv_featureCallArguments_11_0= ruleXExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -19823,7 +19901,7 @@
 
                     }
 
-                    otherlv_12=(Token)match(input,65,FOLLOW_95); if (state.failed) return current;
+                    otherlv_12=(Token)match(input,67,FOLLOW_95); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
@@ -19835,15 +19913,15 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7231:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            // InternalPerspectiveDsl.g:7259:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
             int alt107=2;
             alt107 = dfa107.predict(input);
             switch (alt107) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7232:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:7260:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
                     {
-                    // InternalPerspectiveDsl.g:7238:4: (lv_featureCallArguments_13_0= ruleXClosure )
-                    // InternalPerspectiveDsl.g:7239:5: lv_featureCallArguments_13_0= ruleXClosure
+                    // InternalPerspectiveDsl.g:7266:4: (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:7267:5: lv_featureCallArguments_13_0= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19902,7 +19980,7 @@
 
 
     // $ANTLR start "entryRuleFeatureCallID"
-    // InternalPerspectiveDsl.g:7260:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
+    // InternalPerspectiveDsl.g:7288:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
     public final String entryRuleFeatureCallID() throws RecognitionException {
         String current = null;
 
@@ -19910,8 +19988,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7260:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
-            // InternalPerspectiveDsl.g:7261:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
+            // InternalPerspectiveDsl.g:7288:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
+            // InternalPerspectiveDsl.g:7289:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getFeatureCallIDRule()); 
@@ -19942,7 +20020,7 @@
 
 
     // $ANTLR start "ruleFeatureCallID"
-    // InternalPerspectiveDsl.g:7267:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) ;
+    // InternalPerspectiveDsl.g:7295:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) ;
     public final AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -19954,10 +20032,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7273:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
-            // InternalPerspectiveDsl.g:7274:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            // InternalPerspectiveDsl.g:7301:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
+            // InternalPerspectiveDsl.g:7302:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
             {
-            // InternalPerspectiveDsl.g:7274:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            // InternalPerspectiveDsl.g:7302:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
             int alt108=5;
             switch ( input.LA(1) ) {
             case RULE_ID:
@@ -19965,22 +20043,22 @@
                 alt108=1;
                 }
                 break;
-            case 115:
+            case 117:
                 {
                 alt108=2;
                 }
                 break;
-            case 57:
+            case 59:
                 {
                 alt108=3;
                 }
                 break;
-            case 56:
+            case 58:
                 {
                 alt108=4;
                 }
                 break;
-            case 58:
+            case 60:
                 {
                 alt108=5;
                 }
@@ -19995,7 +20073,7 @@
 
             switch (alt108) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7275:3: this_ValidID_0= ruleValidID
+                    // InternalPerspectiveDsl.g:7303:3: this_ValidID_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -20021,9 +20099,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:7286:3: kw= 'extends'
+                    // InternalPerspectiveDsl.g:7314:3: kw= 'extends'
                     {
-                    kw=(Token)match(input,115,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,117,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -20034,9 +20112,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalPerspectiveDsl.g:7292:3: kw= 'static'
+                    // InternalPerspectiveDsl.g:7320:3: kw= 'static'
                     {
-                    kw=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -20047,9 +20125,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalPerspectiveDsl.g:7298:3: kw= 'import'
+                    // InternalPerspectiveDsl.g:7326:3: kw= 'import'
                     {
-                    kw=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -20060,9 +20138,9 @@
                     }
                     break;
                 case 5 :
-                    // InternalPerspectiveDsl.g:7304:3: kw= 'extension'
+                    // InternalPerspectiveDsl.g:7332:3: kw= 'extension'
                     {
-                    kw=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -20097,7 +20175,7 @@
 
 
     // $ANTLR start "entryRuleIdOrSuper"
-    // InternalPerspectiveDsl.g:7313:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
+    // InternalPerspectiveDsl.g:7341:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
     public final String entryRuleIdOrSuper() throws RecognitionException {
         String current = null;
 
@@ -20105,8 +20183,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7313:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
-            // InternalPerspectiveDsl.g:7314:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
+            // InternalPerspectiveDsl.g:7341:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
+            // InternalPerspectiveDsl.g:7342:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getIdOrSuperRule()); 
@@ -20137,7 +20215,7 @@
 
 
     // $ANTLR start "ruleIdOrSuper"
-    // InternalPerspectiveDsl.g:7320:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
+    // InternalPerspectiveDsl.g:7348:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
     public final AntlrDatatypeRuleToken ruleIdOrSuper() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -20149,17 +20227,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7326:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
-            // InternalPerspectiveDsl.g:7327:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            // InternalPerspectiveDsl.g:7354:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
+            // InternalPerspectiveDsl.g:7355:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
             {
-            // InternalPerspectiveDsl.g:7327:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            // InternalPerspectiveDsl.g:7355:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
             int alt109=2;
             int LA109_0 = input.LA(1);
 
-            if ( (LA109_0==RULE_ID||(LA109_0>=56 && LA109_0<=58)||LA109_0==115) ) {
+            if ( (LA109_0==RULE_ID||(LA109_0>=58 && LA109_0<=60)||LA109_0==117) ) {
                 alt109=1;
             }
-            else if ( (LA109_0==116) ) {
+            else if ( (LA109_0==118) ) {
                 alt109=2;
             }
             else {
@@ -20171,7 +20249,7 @@
             }
             switch (alt109) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7328:3: this_FeatureCallID_0= ruleFeatureCallID
+                    // InternalPerspectiveDsl.g:7356:3: this_FeatureCallID_0= ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -20197,9 +20275,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:7339:3: kw= 'super'
+                    // InternalPerspectiveDsl.g:7367:3: kw= 'super'
                     {
-                    kw=(Token)match(input,116,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,118,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -20234,7 +20312,7 @@
 
 
     // $ANTLR start "entryRuleXConstructorCall"
-    // InternalPerspectiveDsl.g:7348:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
+    // InternalPerspectiveDsl.g:7376:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
     public final EObject entryRuleXConstructorCall() throws RecognitionException {
         EObject current = null;
 
@@ -20242,8 +20320,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7348:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
-            // InternalPerspectiveDsl.g:7349:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
+            // InternalPerspectiveDsl.g:7376:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
+            // InternalPerspectiveDsl.g:7377:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXConstructorCallRule()); 
@@ -20274,7 +20352,7 @@
 
 
     // $ANTLR start "ruleXConstructorCall"
-    // InternalPerspectiveDsl.g:7355:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) ;
+    // InternalPerspectiveDsl.g:7383:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) ;
     public final EObject ruleXConstructorCall() throws RecognitionException {
         EObject current = null;
 
@@ -20302,14 +20380,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7361:2: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) )
-            // InternalPerspectiveDsl.g:7362:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
+            // InternalPerspectiveDsl.g:7389:2: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) )
+            // InternalPerspectiveDsl.g:7390:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
             {
-            // InternalPerspectiveDsl.g:7362:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
-            // InternalPerspectiveDsl.g:7363:3: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            // InternalPerspectiveDsl.g:7390:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
+            // InternalPerspectiveDsl.g:7391:3: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
             {
-            // InternalPerspectiveDsl.g:7363:3: ()
-            // InternalPerspectiveDsl.g:7364:4: 
+            // InternalPerspectiveDsl.g:7391:3: ()
+            // InternalPerspectiveDsl.g:7392:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20321,17 +20399,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,117,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,119,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:7374:3: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:7375:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7402:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:7403:4: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:7375:4: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:7376:5: ruleQualifiedName
+            // InternalPerspectiveDsl.g:7403:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7404:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -20361,17 +20439,17 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7390:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
+            // InternalPerspectiveDsl.g:7418:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
             int alt111=2;
             alt111 = dfa111.predict(input);
             switch (alt111) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7391:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
+                    // InternalPerspectiveDsl.g:7419:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
                     {
-                    // InternalPerspectiveDsl.g:7391:4: ( ( '<' )=>otherlv_3= '<' )
-                    // InternalPerspectiveDsl.g:7392:5: ( '<' )=>otherlv_3= '<'
+                    // InternalPerspectiveDsl.g:7419:4: ( ( '<' )=>otherlv_3= '<' )
+                    // InternalPerspectiveDsl.g:7420:5: ( '<' )=>otherlv_3= '<'
                     {
-                    otherlv_3=(Token)match(input,75,FOLLOW_65); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,77,FOLLOW_65); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
@@ -20380,11 +20458,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:7398:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
-                    // InternalPerspectiveDsl.g:7399:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:7426:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    // InternalPerspectiveDsl.g:7427:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:7399:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
-                    // InternalPerspectiveDsl.g:7400:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    // InternalPerspectiveDsl.g:7427:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:7428:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -20415,32 +20493,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:7417:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
+                    // InternalPerspectiveDsl.g:7445:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
                     loop110:
                     do {
                         int alt110=2;
                         int LA110_0 = input.LA(1);
 
-                        if ( (LA110_0==64) ) {
+                        if ( (LA110_0==66) ) {
                             alt110=1;
                         }
 
 
                         switch (alt110) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:7418:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:7446:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_5=(Token)match(input,64,FOLLOW_65); if (state.failed) return current;
+                    	    otherlv_5=(Token)match(input,66,FOLLOW_65); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:7422:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalPerspectiveDsl.g:7423:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:7450:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:7451:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalPerspectiveDsl.g:7423:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
-                    	    // InternalPerspectiveDsl.g:7424:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
+                    	    // InternalPerspectiveDsl.g:7451:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:7452:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -20480,7 +20558,7 @@
                         }
                     } while (true);
 
-                    otherlv_7=(Token)match(input,76,FOLLOW_94); if (state.failed) return current;
+                    otherlv_7=(Token)match(input,78,FOLLOW_94); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
@@ -20492,20 +20570,20 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7447:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
+            // InternalPerspectiveDsl.g:7475:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
             int alt114=2;
             alt114 = dfa114.predict(input);
             switch (alt114) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7448:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
+                    // InternalPerspectiveDsl.g:7476:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
                     {
-                    // InternalPerspectiveDsl.g:7448:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
-                    // InternalPerspectiveDsl.g:7449:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalPerspectiveDsl.g:7476:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
+                    // InternalPerspectiveDsl.g:7477:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
                     {
-                    // InternalPerspectiveDsl.g:7453:5: (lv_explicitConstructorCall_8_0= '(' )
-                    // InternalPerspectiveDsl.g:7454:6: lv_explicitConstructorCall_8_0= '('
+                    // InternalPerspectiveDsl.g:7481:5: (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalPerspectiveDsl.g:7482:6: lv_explicitConstructorCall_8_0= '('
                     {
-                    lv_explicitConstructorCall_8_0=(Token)match(input,63,FOLLOW_68); if (state.failed) return current;
+                    lv_explicitConstructorCall_8_0=(Token)match(input,65,FOLLOW_68); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
@@ -20525,18 +20603,18 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:7466:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
+                    // InternalPerspectiveDsl.g:7494:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
                     int alt113=3;
                     alt113 = dfa113.predict(input);
                     switch (alt113) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:7467:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:7495:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                             {
-                            // InternalPerspectiveDsl.g:7467:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
-                            // InternalPerspectiveDsl.g:7468:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:7495:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalPerspectiveDsl.g:7496:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
                             {
-                            // InternalPerspectiveDsl.g:7493:6: (lv_arguments_9_0= ruleXShortClosure )
-                            // InternalPerspectiveDsl.g:7494:7: lv_arguments_9_0= ruleXShortClosure
+                            // InternalPerspectiveDsl.g:7521:6: (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalPerspectiveDsl.g:7522:7: lv_arguments_9_0= ruleXShortClosure
                             {
                             if ( state.backtracking==0 ) {
 
@@ -20571,16 +20649,16 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:7512:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:7540:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                             {
-                            // InternalPerspectiveDsl.g:7512:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
-                            // InternalPerspectiveDsl.g:7513:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            // InternalPerspectiveDsl.g:7540:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalPerspectiveDsl.g:7541:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:7513:6: ( (lv_arguments_10_0= ruleXExpression ) )
-                            // InternalPerspectiveDsl.g:7514:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7541:6: ( (lv_arguments_10_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:7542:7: (lv_arguments_10_0= ruleXExpression )
                             {
-                            // InternalPerspectiveDsl.g:7514:7: (lv_arguments_10_0= ruleXExpression )
-                            // InternalPerspectiveDsl.g:7515:8: lv_arguments_10_0= ruleXExpression
+                            // InternalPerspectiveDsl.g:7542:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:7543:8: lv_arguments_10_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -20611,32 +20689,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:7532:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            // InternalPerspectiveDsl.g:7560:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                             loop112:
                             do {
                                 int alt112=2;
                                 int LA112_0 = input.LA(1);
 
-                                if ( (LA112_0==64) ) {
+                                if ( (LA112_0==66) ) {
                                     alt112=1;
                                 }
 
 
                                 switch (alt112) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:7533:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:7561:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
                             	    {
-                            	    otherlv_11=(Token)match(input,64,FOLLOW_40); if (state.failed) return current;
+                            	    otherlv_11=(Token)match(input,66,FOLLOW_40); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
                             	      						
                             	    }
-                            	    // InternalPerspectiveDsl.g:7537:7: ( (lv_arguments_12_0= ruleXExpression ) )
-                            	    // InternalPerspectiveDsl.g:7538:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:7565:7: ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalPerspectiveDsl.g:7566:8: (lv_arguments_12_0= ruleXExpression )
                             	    {
-                            	    // InternalPerspectiveDsl.g:7538:8: (lv_arguments_12_0= ruleXExpression )
-                            	    // InternalPerspectiveDsl.g:7539:9: lv_arguments_12_0= ruleXExpression
+                            	    // InternalPerspectiveDsl.g:7566:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalPerspectiveDsl.g:7567:9: lv_arguments_12_0= ruleXExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -20685,7 +20763,7 @@
 
                     }
 
-                    otherlv_13=(Token)match(input,65,FOLLOW_95); if (state.failed) return current;
+                    otherlv_13=(Token)match(input,67,FOLLOW_95); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
@@ -20697,15 +20775,15 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7564:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            // InternalPerspectiveDsl.g:7592:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
             int alt115=2;
             alt115 = dfa115.predict(input);
             switch (alt115) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7565:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:7593:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
                     {
-                    // InternalPerspectiveDsl.g:7571:4: (lv_arguments_14_0= ruleXClosure )
-                    // InternalPerspectiveDsl.g:7572:5: lv_arguments_14_0= ruleXClosure
+                    // InternalPerspectiveDsl.g:7599:4: (lv_arguments_14_0= ruleXClosure )
+                    // InternalPerspectiveDsl.g:7600:5: lv_arguments_14_0= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -20764,7 +20842,7 @@
 
 
     // $ANTLR start "entryRuleXBooleanLiteral"
-    // InternalPerspectiveDsl.g:7593:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
+    // InternalPerspectiveDsl.g:7621:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
     public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20772,8 +20850,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7593:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
-            // InternalPerspectiveDsl.g:7594:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
+            // InternalPerspectiveDsl.g:7621:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
+            // InternalPerspectiveDsl.g:7622:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBooleanLiteralRule()); 
@@ -20804,7 +20882,7 @@
 
 
     // $ANTLR start "ruleXBooleanLiteral"
-    // InternalPerspectiveDsl.g:7600:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
+    // InternalPerspectiveDsl.g:7628:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
     public final EObject ruleXBooleanLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20815,14 +20893,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7606:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
-            // InternalPerspectiveDsl.g:7607:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalPerspectiveDsl.g:7634:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
+            // InternalPerspectiveDsl.g:7635:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
             {
-            // InternalPerspectiveDsl.g:7607:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
-            // InternalPerspectiveDsl.g:7608:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            // InternalPerspectiveDsl.g:7635:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalPerspectiveDsl.g:7636:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
             {
-            // InternalPerspectiveDsl.g:7608:3: ()
-            // InternalPerspectiveDsl.g:7609:4: 
+            // InternalPerspectiveDsl.g:7636:3: ()
+            // InternalPerspectiveDsl.g:7637:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20834,14 +20912,14 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7615:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            // InternalPerspectiveDsl.g:7643:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
             int alt116=2;
             int LA116_0 = input.LA(1);
 
-            if ( (LA116_0==118) ) {
+            if ( (LA116_0==120) ) {
                 alt116=1;
             }
-            else if ( (LA116_0==119) ) {
+            else if ( (LA116_0==121) ) {
                 alt116=2;
             }
             else {
@@ -20853,9 +20931,9 @@
             }
             switch (alt116) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7616:4: otherlv_1= 'false'
+                    // InternalPerspectiveDsl.g:7644:4: otherlv_1= 'false'
                     {
-                    otherlv_1=(Token)match(input,118,FOLLOW_2); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,120,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
@@ -20865,15 +20943,15 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:7621:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalPerspectiveDsl.g:7649:4: ( (lv_isTrue_2_0= 'true' ) )
                     {
-                    // InternalPerspectiveDsl.g:7621:4: ( (lv_isTrue_2_0= 'true' ) )
-                    // InternalPerspectiveDsl.g:7622:5: (lv_isTrue_2_0= 'true' )
+                    // InternalPerspectiveDsl.g:7649:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalPerspectiveDsl.g:7650:5: (lv_isTrue_2_0= 'true' )
                     {
-                    // InternalPerspectiveDsl.g:7622:5: (lv_isTrue_2_0= 'true' )
-                    // InternalPerspectiveDsl.g:7623:6: lv_isTrue_2_0= 'true'
+                    // InternalPerspectiveDsl.g:7650:5: (lv_isTrue_2_0= 'true' )
+                    // InternalPerspectiveDsl.g:7651:6: lv_isTrue_2_0= 'true'
                     {
-                    lv_isTrue_2_0=(Token)match(input,119,FOLLOW_2); if (state.failed) return current;
+                    lv_isTrue_2_0=(Token)match(input,121,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
@@ -20924,7 +21002,7 @@
 
 
     // $ANTLR start "entryRuleXNullLiteral"
-    // InternalPerspectiveDsl.g:7640:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
+    // InternalPerspectiveDsl.g:7668:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
     public final EObject entryRuleXNullLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20932,8 +21010,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7640:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
-            // InternalPerspectiveDsl.g:7641:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
+            // InternalPerspectiveDsl.g:7668:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
+            // InternalPerspectiveDsl.g:7669:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXNullLiteralRule()); 
@@ -20964,7 +21042,7 @@
 
 
     // $ANTLR start "ruleXNullLiteral"
-    // InternalPerspectiveDsl.g:7647:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
+    // InternalPerspectiveDsl.g:7675:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
     public final EObject ruleXNullLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -20974,14 +21052,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7653:2: ( ( () otherlv_1= 'null' ) )
-            // InternalPerspectiveDsl.g:7654:2: ( () otherlv_1= 'null' )
+            // InternalPerspectiveDsl.g:7681:2: ( ( () otherlv_1= 'null' ) )
+            // InternalPerspectiveDsl.g:7682:2: ( () otherlv_1= 'null' )
             {
-            // InternalPerspectiveDsl.g:7654:2: ( () otherlv_1= 'null' )
-            // InternalPerspectiveDsl.g:7655:3: () otherlv_1= 'null'
+            // InternalPerspectiveDsl.g:7682:2: ( () otherlv_1= 'null' )
+            // InternalPerspectiveDsl.g:7683:3: () otherlv_1= 'null'
             {
-            // InternalPerspectiveDsl.g:7655:3: ()
-            // InternalPerspectiveDsl.g:7656:4: 
+            // InternalPerspectiveDsl.g:7683:3: ()
+            // InternalPerspectiveDsl.g:7684:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20993,7 +21071,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,120,FOLLOW_2); if (state.failed) return current;
+            otherlv_1=(Token)match(input,122,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
@@ -21024,7 +21102,7 @@
 
 
     // $ANTLR start "entryRuleXNumberLiteral"
-    // InternalPerspectiveDsl.g:7670:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
+    // InternalPerspectiveDsl.g:7698:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
     public final EObject entryRuleXNumberLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -21032,8 +21110,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7670:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
-            // InternalPerspectiveDsl.g:7671:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
+            // InternalPerspectiveDsl.g:7698:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
+            // InternalPerspectiveDsl.g:7699:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXNumberLiteralRule()); 
@@ -21064,7 +21142,7 @@
 
 
     // $ANTLR start "ruleXNumberLiteral"
-    // InternalPerspectiveDsl.g:7677:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
+    // InternalPerspectiveDsl.g:7705:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
     public final EObject ruleXNumberLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -21075,14 +21153,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7683:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
-            // InternalPerspectiveDsl.g:7684:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalPerspectiveDsl.g:7711:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
+            // InternalPerspectiveDsl.g:7712:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
             {
-            // InternalPerspectiveDsl.g:7684:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
-            // InternalPerspectiveDsl.g:7685:3: () ( (lv_value_1_0= ruleNumber ) )
+            // InternalPerspectiveDsl.g:7712:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalPerspectiveDsl.g:7713:3: () ( (lv_value_1_0= ruleNumber ) )
             {
-            // InternalPerspectiveDsl.g:7685:3: ()
-            // InternalPerspectiveDsl.g:7686:4: 
+            // InternalPerspectiveDsl.g:7713:3: ()
+            // InternalPerspectiveDsl.g:7714:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -21094,11 +21172,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7692:3: ( (lv_value_1_0= ruleNumber ) )
-            // InternalPerspectiveDsl.g:7693:4: (lv_value_1_0= ruleNumber )
+            // InternalPerspectiveDsl.g:7720:3: ( (lv_value_1_0= ruleNumber ) )
+            // InternalPerspectiveDsl.g:7721:4: (lv_value_1_0= ruleNumber )
             {
-            // InternalPerspectiveDsl.g:7693:4: (lv_value_1_0= ruleNumber )
-            // InternalPerspectiveDsl.g:7694:5: lv_value_1_0= ruleNumber
+            // InternalPerspectiveDsl.g:7721:4: (lv_value_1_0= ruleNumber )
+            // InternalPerspectiveDsl.g:7722:5: lv_value_1_0= ruleNumber
             {
             if ( state.backtracking==0 ) {
 
@@ -21154,7 +21232,7 @@
 
 
     // $ANTLR start "entryRuleXStringLiteral"
-    // InternalPerspectiveDsl.g:7715:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
+    // InternalPerspectiveDsl.g:7743:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
     public final EObject entryRuleXStringLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -21162,8 +21240,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7715:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
-            // InternalPerspectiveDsl.g:7716:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
+            // InternalPerspectiveDsl.g:7743:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
+            // InternalPerspectiveDsl.g:7744:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXStringLiteralRule()); 
@@ -21194,7 +21272,7 @@
 
 
     // $ANTLR start "ruleXStringLiteral"
-    // InternalPerspectiveDsl.g:7722:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
+    // InternalPerspectiveDsl.g:7750:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
     public final EObject ruleXStringLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -21204,14 +21282,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7728:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
-            // InternalPerspectiveDsl.g:7729:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:7756:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
+            // InternalPerspectiveDsl.g:7757:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
             {
-            // InternalPerspectiveDsl.g:7729:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
-            // InternalPerspectiveDsl.g:7730:3: () ( (lv_value_1_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:7757:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalPerspectiveDsl.g:7758:3: () ( (lv_value_1_0= RULE_STRING ) )
             {
-            // InternalPerspectiveDsl.g:7730:3: ()
-            // InternalPerspectiveDsl.g:7731:4: 
+            // InternalPerspectiveDsl.g:7758:3: ()
+            // InternalPerspectiveDsl.g:7759:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -21223,11 +21301,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7737:3: ( (lv_value_1_0= RULE_STRING ) )
-            // InternalPerspectiveDsl.g:7738:4: (lv_value_1_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:7765:3: ( (lv_value_1_0= RULE_STRING ) )
+            // InternalPerspectiveDsl.g:7766:4: (lv_value_1_0= RULE_STRING )
             {
-            // InternalPerspectiveDsl.g:7738:4: (lv_value_1_0= RULE_STRING )
-            // InternalPerspectiveDsl.g:7739:5: lv_value_1_0= RULE_STRING
+            // InternalPerspectiveDsl.g:7766:4: (lv_value_1_0= RULE_STRING )
+            // InternalPerspectiveDsl.g:7767:5: lv_value_1_0= RULE_STRING
             {
             lv_value_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -21278,7 +21356,7 @@
 
 
     // $ANTLR start "entryRuleXTypeLiteral"
-    // InternalPerspectiveDsl.g:7759:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
+    // InternalPerspectiveDsl.g:7787:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
     public final EObject entryRuleXTypeLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -21286,8 +21364,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7759:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
-            // InternalPerspectiveDsl.g:7760:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
+            // InternalPerspectiveDsl.g:7787:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
+            // InternalPerspectiveDsl.g:7788:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXTypeLiteralRule()); 
@@ -21318,7 +21396,7 @@
 
 
     // $ANTLR start "ruleXTypeLiteral"
-    // InternalPerspectiveDsl.g:7766:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) ;
+    // InternalPerspectiveDsl.g:7794:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) ;
     public final EObject ruleXTypeLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -21332,14 +21410,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7772:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
-            // InternalPerspectiveDsl.g:7773:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalPerspectiveDsl.g:7800:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
+            // InternalPerspectiveDsl.g:7801:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
             {
-            // InternalPerspectiveDsl.g:7773:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
-            // InternalPerspectiveDsl.g:7774:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
+            // InternalPerspectiveDsl.g:7801:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalPerspectiveDsl.g:7802:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
             {
-            // InternalPerspectiveDsl.g:7774:3: ()
-            // InternalPerspectiveDsl.g:7775:4: 
+            // InternalPerspectiveDsl.g:7802:3: ()
+            // InternalPerspectiveDsl.g:7803:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -21351,23 +21429,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,121,FOLLOW_78); if (state.failed) return current;
+            otherlv_1=(Token)match(input,123,FOLLOW_78); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,63,FOLLOW_4); if (state.failed) return current;
+            otherlv_2=(Token)match(input,65,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:7789:3: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:7790:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7817:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:7818:4: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:7790:4: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:7791:5: ruleQualifiedName
+            // InternalPerspectiveDsl.g:7818:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:7819:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -21397,23 +21475,23 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7805:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
+            // InternalPerspectiveDsl.g:7833:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
             loop117:
             do {
                 int alt117=2;
                 int LA117_0 = input.LA(1);
 
-                if ( (LA117_0==68) ) {
+                if ( (LA117_0==70) ) {
                     alt117=1;
                 }
 
 
                 switch (alt117) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:7806:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalPerspectiveDsl.g:7834:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
             	    {
-            	    // InternalPerspectiveDsl.g:7806:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
-            	    // InternalPerspectiveDsl.g:7807:5: lv_arrayDimensions_4_0= ruleArrayBrackets
+            	    // InternalPerspectiveDsl.g:7834:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalPerspectiveDsl.g:7835:5: lv_arrayDimensions_4_0= ruleArrayBrackets
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -21450,7 +21528,7 @@
                 }
             } while (true);
 
-            otherlv_5=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
+            otherlv_5=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
@@ -21481,7 +21559,7 @@
 
 
     // $ANTLR start "entryRuleXThrowExpression"
-    // InternalPerspectiveDsl.g:7832:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
+    // InternalPerspectiveDsl.g:7860:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
     public final EObject entryRuleXThrowExpression() throws RecognitionException {
         EObject current = null;
 
@@ -21489,8 +21567,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7832:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
-            // InternalPerspectiveDsl.g:7833:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
+            // InternalPerspectiveDsl.g:7860:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
+            // InternalPerspectiveDsl.g:7861:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXThrowExpressionRule()); 
@@ -21521,7 +21599,7 @@
 
 
     // $ANTLR start "ruleXThrowExpression"
-    // InternalPerspectiveDsl.g:7839:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
+    // InternalPerspectiveDsl.g:7867:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
     public final EObject ruleXThrowExpression() throws RecognitionException {
         EObject current = null;
 
@@ -21533,14 +21611,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7845:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:7846:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7873:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:7874:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:7846:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:7847:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7874:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:7875:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:7847:3: ()
-            // InternalPerspectiveDsl.g:7848:4: 
+            // InternalPerspectiveDsl.g:7875:3: ()
+            // InternalPerspectiveDsl.g:7876:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -21552,17 +21630,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,122,FOLLOW_40); if (state.failed) return current;
+            otherlv_1=(Token)match(input,124,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:7858:3: ( (lv_expression_2_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:7859:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7886:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7887:4: (lv_expression_2_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:7859:4: (lv_expression_2_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:7860:5: lv_expression_2_0= ruleXExpression
+            // InternalPerspectiveDsl.g:7887:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7888:5: lv_expression_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -21618,7 +21696,7 @@
 
 
     // $ANTLR start "entryRuleXReturnExpression"
-    // InternalPerspectiveDsl.g:7881:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
+    // InternalPerspectiveDsl.g:7909:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
     public final EObject entryRuleXReturnExpression() throws RecognitionException {
         EObject current = null;
 
@@ -21626,8 +21704,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7881:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
-            // InternalPerspectiveDsl.g:7882:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
+            // InternalPerspectiveDsl.g:7909:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
+            // InternalPerspectiveDsl.g:7910:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXReturnExpressionRule()); 
@@ -21658,7 +21736,7 @@
 
 
     // $ANTLR start "ruleXReturnExpression"
-    // InternalPerspectiveDsl.g:7888:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
+    // InternalPerspectiveDsl.g:7916:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
     public final EObject ruleXReturnExpression() throws RecognitionException {
         EObject current = null;
 
@@ -21670,14 +21748,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7894:2: ( ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) )
-            // InternalPerspectiveDsl.g:7895:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
+            // InternalPerspectiveDsl.g:7922:2: ( ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) )
+            // InternalPerspectiveDsl.g:7923:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
             {
-            // InternalPerspectiveDsl.g:7895:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
-            // InternalPerspectiveDsl.g:7896:3: () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
+            // InternalPerspectiveDsl.g:7923:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
+            // InternalPerspectiveDsl.g:7924:3: () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
             {
-            // InternalPerspectiveDsl.g:7896:3: ()
-            // InternalPerspectiveDsl.g:7897:4: 
+            // InternalPerspectiveDsl.g:7924:3: ()
+            // InternalPerspectiveDsl.g:7925:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -21689,21 +21767,21 @@
 
             }
 
-            otherlv_1=(Token)match(input,123,FOLLOW_98); if (state.failed) return current;
+            otherlv_1=(Token)match(input,125,FOLLOW_98); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:7907:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
+            // InternalPerspectiveDsl.g:7935:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
             int alt118=2;
             alt118 = dfa118.predict(input);
             switch (alt118) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7908:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:7936:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:7909:4: (lv_expression_2_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:7910:5: lv_expression_2_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:7937:4: (lv_expression_2_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:7938:5: lv_expression_2_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -21762,7 +21840,7 @@
 
 
     // $ANTLR start "entryRuleXTryCatchFinallyExpression"
-    // InternalPerspectiveDsl.g:7931:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
+    // InternalPerspectiveDsl.g:7959:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
     public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
         EObject current = null;
 
@@ -21770,8 +21848,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:7931:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
-            // InternalPerspectiveDsl.g:7932:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
+            // InternalPerspectiveDsl.g:7959:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
+            // InternalPerspectiveDsl.g:7960:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); 
@@ -21802,7 +21880,7 @@
 
 
     // $ANTLR start "ruleXTryCatchFinallyExpression"
-    // InternalPerspectiveDsl.g:7938:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
+    // InternalPerspectiveDsl.g:7966:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
     public final EObject ruleXTryCatchFinallyExpression() throws RecognitionException {
         EObject current = null;
 
@@ -21822,14 +21900,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:7944:2: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
-            // InternalPerspectiveDsl.g:7945:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
+            // InternalPerspectiveDsl.g:7972:2: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
+            // InternalPerspectiveDsl.g:7973:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
             {
-            // InternalPerspectiveDsl.g:7945:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
-            // InternalPerspectiveDsl.g:7946:3: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:7973:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
+            // InternalPerspectiveDsl.g:7974:3: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
             {
-            // InternalPerspectiveDsl.g:7946:3: ()
-            // InternalPerspectiveDsl.g:7947:4: 
+            // InternalPerspectiveDsl.g:7974:3: ()
+            // InternalPerspectiveDsl.g:7975:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -21841,17 +21919,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,124,FOLLOW_40); if (state.failed) return current;
+            otherlv_1=(Token)match(input,126,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:7957:3: ( (lv_expression_2_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:7958:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7985:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:7986:4: (lv_expression_2_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:7958:4: (lv_expression_2_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:7959:5: lv_expression_2_0= ruleXExpression
+            // InternalPerspectiveDsl.g:7986:4: (lv_expression_2_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:7987:5: lv_expression_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -21882,14 +21960,14 @@
 
             }
 
-            // InternalPerspectiveDsl.g:7976:3: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:8004:3: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
             int alt121=2;
             int LA121_0 = input.LA(1);
 
-            if ( (LA121_0==127) ) {
+            if ( (LA121_0==129) ) {
                 alt121=1;
             }
-            else if ( (LA121_0==125) ) {
+            else if ( (LA121_0==127) ) {
                 alt121=2;
             }
             else {
@@ -21901,19 +21979,19 @@
             }
             switch (alt121) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:7977:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalPerspectiveDsl.g:8005:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                     {
-                    // InternalPerspectiveDsl.g:7977:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
-                    // InternalPerspectiveDsl.g:7978:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    // InternalPerspectiveDsl.g:8005:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalPerspectiveDsl.g:8006:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                     {
-                    // InternalPerspectiveDsl.g:7978:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
+                    // InternalPerspectiveDsl.g:8006:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
                     int cnt119=0;
                     loop119:
                     do {
                         int alt119=2;
                         int LA119_0 = input.LA(1);
 
-                        if ( (LA119_0==127) ) {
+                        if ( (LA119_0==129) ) {
                             int LA119_2 = input.LA(2);
 
                             if ( (synpred44_InternalPerspectiveDsl()) ) {
@@ -21926,10 +22004,10 @@
 
                         switch (alt119) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:7979:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalPerspectiveDsl.g:8007:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
                     	    {
-                    	    // InternalPerspectiveDsl.g:7980:6: (lv_catchClauses_3_0= ruleXCatchClause )
-                    	    // InternalPerspectiveDsl.g:7981:7: lv_catchClauses_3_0= ruleXCatchClause
+                    	    // InternalPerspectiveDsl.g:8008:6: (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalPerspectiveDsl.g:8009:7: lv_catchClauses_3_0= ruleXCatchClause
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -21971,11 +22049,11 @@
                         cnt119++;
                     } while (true);
 
-                    // InternalPerspectiveDsl.g:7998:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    // InternalPerspectiveDsl.g:8026:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                     int alt120=2;
                     int LA120_0 = input.LA(1);
 
-                    if ( (LA120_0==125) ) {
+                    if ( (LA120_0==127) ) {
                         int LA120_1 = input.LA(2);
 
                         if ( (synpred45_InternalPerspectiveDsl()) ) {
@@ -21984,12 +22062,12 @@
                     }
                     switch (alt120) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:7999:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:8027:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
                             {
-                            // InternalPerspectiveDsl.g:7999:6: ( ( 'finally' )=>otherlv_4= 'finally' )
-                            // InternalPerspectiveDsl.g:8000:7: ( 'finally' )=>otherlv_4= 'finally'
+                            // InternalPerspectiveDsl.g:8027:6: ( ( 'finally' )=>otherlv_4= 'finally' )
+                            // InternalPerspectiveDsl.g:8028:7: ( 'finally' )=>otherlv_4= 'finally'
                             {
-                            otherlv_4=(Token)match(input,125,FOLLOW_40); if (state.failed) return current;
+                            otherlv_4=(Token)match(input,127,FOLLOW_40); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
@@ -21998,11 +22076,11 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:8006:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
-                            // InternalPerspectiveDsl.g:8007:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:8034:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalPerspectiveDsl.g:8035:7: (lv_finallyExpression_5_0= ruleXExpression )
                             {
-                            // InternalPerspectiveDsl.g:8007:7: (lv_finallyExpression_5_0= ruleXExpression )
-                            // InternalPerspectiveDsl.g:8008:8: lv_finallyExpression_5_0= ruleXExpression
+                            // InternalPerspectiveDsl.g:8035:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalPerspectiveDsl.g:8036:8: lv_finallyExpression_5_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -22046,22 +22124,22 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8028:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:8056:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                     {
-                    // InternalPerspectiveDsl.g:8028:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
-                    // InternalPerspectiveDsl.g:8029:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:8056:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalPerspectiveDsl.g:8057:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
                     {
-                    otherlv_6=(Token)match(input,125,FOLLOW_40); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,127,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
                       				
                     }
-                    // InternalPerspectiveDsl.g:8033:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
-                    // InternalPerspectiveDsl.g:8034:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:8061:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalPerspectiveDsl.g:8062:6: (lv_finallyExpression_7_0= ruleXExpression )
                     {
-                    // InternalPerspectiveDsl.g:8034:6: (lv_finallyExpression_7_0= ruleXExpression )
-                    // InternalPerspectiveDsl.g:8035:7: lv_finallyExpression_7_0= ruleXExpression
+                    // InternalPerspectiveDsl.g:8062:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalPerspectiveDsl.g:8063:7: lv_finallyExpression_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -22126,7 +22204,7 @@
 
 
     // $ANTLR start "entryRuleXSynchronizedExpression"
-    // InternalPerspectiveDsl.g:8058:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
+    // InternalPerspectiveDsl.g:8086:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
     public final EObject entryRuleXSynchronizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -22134,8 +22212,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8058:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
-            // InternalPerspectiveDsl.g:8059:2: iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF
+            // InternalPerspectiveDsl.g:8086:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
+            // InternalPerspectiveDsl.g:8087:2: iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); 
@@ -22166,7 +22244,7 @@
 
 
     // $ANTLR start "ruleXSynchronizedExpression"
-    // InternalPerspectiveDsl.g:8065:1: ruleXSynchronizedExpression returns [EObject current=null] : ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) ;
+    // InternalPerspectiveDsl.g:8093:1: ruleXSynchronizedExpression returns [EObject current=null] : ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) ;
     public final EObject ruleXSynchronizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -22182,20 +22260,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8071:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:8072:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:8099:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:8100:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:8072:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:8073:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:8100:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:8101:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:8073:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
-            // InternalPerspectiveDsl.g:8074:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalPerspectiveDsl.g:8101:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
+            // InternalPerspectiveDsl.g:8102:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
             {
-            // InternalPerspectiveDsl.g:8081:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
-            // InternalPerspectiveDsl.g:8082:5: () otherlv_1= 'synchronized' otherlv_2= '('
+            // InternalPerspectiveDsl.g:8109:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalPerspectiveDsl.g:8110:5: () otherlv_1= 'synchronized' otherlv_2= '('
             {
-            // InternalPerspectiveDsl.g:8082:5: ()
-            // InternalPerspectiveDsl.g:8083:6: 
+            // InternalPerspectiveDsl.g:8110:5: ()
+            // InternalPerspectiveDsl.g:8111:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -22207,13 +22285,13 @@
 
             }
 
-            otherlv_1=(Token)match(input,126,FOLLOW_78); if (state.failed) return current;
+            otherlv_1=(Token)match(input,128,FOLLOW_78); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
               				
             }
-            otherlv_2=(Token)match(input,63,FOLLOW_40); if (state.failed) return current;
+            otherlv_2=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
@@ -22225,11 +22303,11 @@
 
             }
 
-            // InternalPerspectiveDsl.g:8099:3: ( (lv_param_3_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:8100:4: (lv_param_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:8127:3: ( (lv_param_3_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:8128:4: (lv_param_3_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:8100:4: (lv_param_3_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:8101:5: lv_param_3_0= ruleXExpression
+            // InternalPerspectiveDsl.g:8128:4: (lv_param_3_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:8129:5: lv_param_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -22260,17 +22338,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
+            otherlv_4=(Token)match(input,67,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
               		
             }
-            // InternalPerspectiveDsl.g:8122:3: ( (lv_expression_5_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:8123:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:8150:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:8151:4: (lv_expression_5_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:8123:4: (lv_expression_5_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:8124:5: lv_expression_5_0= ruleXExpression
+            // InternalPerspectiveDsl.g:8151:4: (lv_expression_5_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:8152:5: lv_expression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -22326,7 +22404,7 @@
 
 
     // $ANTLR start "entryRuleXCatchClause"
-    // InternalPerspectiveDsl.g:8145:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
+    // InternalPerspectiveDsl.g:8173:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
     public final EObject entryRuleXCatchClause() throws RecognitionException {
         EObject current = null;
 
@@ -22334,8 +22412,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8145:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
-            // InternalPerspectiveDsl.g:8146:2: iv_ruleXCatchClause= ruleXCatchClause EOF
+            // InternalPerspectiveDsl.g:8173:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
+            // InternalPerspectiveDsl.g:8174:2: iv_ruleXCatchClause= ruleXCatchClause EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCatchClauseRule()); 
@@ -22366,7 +22444,7 @@
 
 
     // $ANTLR start "ruleXCatchClause"
-    // InternalPerspectiveDsl.g:8152:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
+    // InternalPerspectiveDsl.g:8180:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
     public final EObject ruleXCatchClause() throws RecognitionException {
         EObject current = null;
 
@@ -22382,16 +22460,16 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8158:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
-            // InternalPerspectiveDsl.g:8159:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:8186:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
+            // InternalPerspectiveDsl.g:8187:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
             {
-            // InternalPerspectiveDsl.g:8159:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
-            // InternalPerspectiveDsl.g:8160:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:8187:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalPerspectiveDsl.g:8188:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
             {
-            // InternalPerspectiveDsl.g:8160:3: ( ( 'catch' )=>otherlv_0= 'catch' )
-            // InternalPerspectiveDsl.g:8161:4: ( 'catch' )=>otherlv_0= 'catch'
+            // InternalPerspectiveDsl.g:8188:3: ( ( 'catch' )=>otherlv_0= 'catch' )
+            // InternalPerspectiveDsl.g:8189:4: ( 'catch' )=>otherlv_0= 'catch'
             {
-            otherlv_0=(Token)match(input,127,FOLLOW_78); if (state.failed) return current;
+            otherlv_0=(Token)match(input,129,FOLLOW_78); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
@@ -22400,17 +22478,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,63,FOLLOW_53); if (state.failed) return current;
+            otherlv_1=(Token)match(input,65,FOLLOW_53); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:8171:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
-            // InternalPerspectiveDsl.g:8172:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:8199:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
+            // InternalPerspectiveDsl.g:8200:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
             {
-            // InternalPerspectiveDsl.g:8172:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
-            // InternalPerspectiveDsl.g:8173:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
+            // InternalPerspectiveDsl.g:8200:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalPerspectiveDsl.g:8201:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
 
@@ -22441,17 +22519,17 @@
 
             }
 
-            otherlv_3=(Token)match(input,65,FOLLOW_40); if (state.failed) return current;
+            otherlv_3=(Token)match(input,67,FOLLOW_40); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
               		
             }
-            // InternalPerspectiveDsl.g:8194:3: ( (lv_expression_4_0= ruleXExpression ) )
-            // InternalPerspectiveDsl.g:8195:4: (lv_expression_4_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:8222:3: ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalPerspectiveDsl.g:8223:4: (lv_expression_4_0= ruleXExpression )
             {
-            // InternalPerspectiveDsl.g:8195:4: (lv_expression_4_0= ruleXExpression )
-            // InternalPerspectiveDsl.g:8196:5: lv_expression_4_0= ruleXExpression
+            // InternalPerspectiveDsl.g:8223:4: (lv_expression_4_0= ruleXExpression )
+            // InternalPerspectiveDsl.g:8224:5: lv_expression_4_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -22507,7 +22585,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedName"
-    // InternalPerspectiveDsl.g:8217:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+    // InternalPerspectiveDsl.g:8245:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
     public final String entryRuleQualifiedName() throws RecognitionException {
         String current = null;
 
@@ -22515,8 +22593,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8217:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
-            // InternalPerspectiveDsl.g:8218:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+            // InternalPerspectiveDsl.g:8245:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+            // InternalPerspectiveDsl.g:8246:2: iv_ruleQualifiedName= ruleQualifiedName EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameRule()); 
@@ -22547,7 +22625,7 @@
 
 
     // $ANTLR start "ruleQualifiedName"
-    // InternalPerspectiveDsl.g:8224:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
+    // InternalPerspectiveDsl.g:8252:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
     public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -22561,11 +22639,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8230:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
-            // InternalPerspectiveDsl.g:8231:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalPerspectiveDsl.g:8258:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
+            // InternalPerspectiveDsl.g:8259:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
             {
-            // InternalPerspectiveDsl.g:8231:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
-            // InternalPerspectiveDsl.g:8232:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            // InternalPerspectiveDsl.g:8259:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalPerspectiveDsl.g:8260:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
             {
             if ( state.backtracking==0 ) {
 
@@ -22587,13 +22665,13 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalPerspectiveDsl.g:8242:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            // InternalPerspectiveDsl.g:8270:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
             loop122:
             do {
                 int alt122=2;
                 int LA122_0 = input.LA(1);
 
-                if ( (LA122_0==100) ) {
+                if ( (LA122_0==102) ) {
                     int LA122_2 = input.LA(2);
 
                     if ( (LA122_2==RULE_ID) ) {
@@ -22612,12 +22690,12 @@
 
                 switch (alt122) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:8243:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    // InternalPerspectiveDsl.g:8271:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
             	    {
-            	    // InternalPerspectiveDsl.g:8243:4: ( ( '.' )=>kw= '.' )
-            	    // InternalPerspectiveDsl.g:8244:5: ( '.' )=>kw= '.'
+            	    // InternalPerspectiveDsl.g:8271:4: ( ( '.' )=>kw= '.' )
+            	    // InternalPerspectiveDsl.g:8272:5: ( '.' )=>kw= '.'
             	    {
-            	    kw=(Token)match(input,100,FOLLOW_4); if (state.failed) return current;
+            	    kw=(Token)match(input,102,FOLLOW_4); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      					current.merge(kw);
@@ -22681,7 +22759,7 @@
 
 
     // $ANTLR start "entryRuleNumber"
-    // InternalPerspectiveDsl.g:8266:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
+    // InternalPerspectiveDsl.g:8294:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
     public final String entryRuleNumber() throws RecognitionException {
         String current = null;
 
@@ -22692,8 +22770,8 @@
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalPerspectiveDsl.g:8268:2: (iv_ruleNumber= ruleNumber EOF )
-            // InternalPerspectiveDsl.g:8269:2: iv_ruleNumber= ruleNumber EOF
+            // InternalPerspectiveDsl.g:8296:2: (iv_ruleNumber= ruleNumber EOF )
+            // InternalPerspectiveDsl.g:8297:2: iv_ruleNumber= ruleNumber EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNumberRule()); 
@@ -22727,7 +22805,7 @@
 
 
     // $ANTLR start "ruleNumber"
-    // InternalPerspectiveDsl.g:8278:1: ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) ;
+    // InternalPerspectiveDsl.g:8306:1: ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) ;
     public final AntlrDatatypeRuleToken ruleNumber() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -22743,10 +22821,10 @@
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalPerspectiveDsl.g:8285:2: ( (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) )
-            // InternalPerspectiveDsl.g:8286:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
+            // InternalPerspectiveDsl.g:8313:2: ( (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) )
+            // InternalPerspectiveDsl.g:8314:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
             {
-            // InternalPerspectiveDsl.g:8286:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
+            // InternalPerspectiveDsl.g:8314:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
             int alt126=2;
             int LA126_0 = input.LA(1);
 
@@ -22765,7 +22843,7 @@
             }
             switch (alt126) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8287:3: this_HEX_0= RULE_HEX
+                    // InternalPerspectiveDsl.g:8315:3: this_HEX_0= RULE_HEX
                     {
                     this_HEX_0=(Token)match(input,RULE_HEX,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -22782,12 +22860,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8295:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalPerspectiveDsl.g:8323:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
                     {
-                    // InternalPerspectiveDsl.g:8295:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
-                    // InternalPerspectiveDsl.g:8296:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    // InternalPerspectiveDsl.g:8323:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalPerspectiveDsl.g:8324:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
                     {
-                    // InternalPerspectiveDsl.g:8296:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
+                    // InternalPerspectiveDsl.g:8324:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
                     int alt123=2;
                     int LA123_0 = input.LA(1);
 
@@ -22806,7 +22884,7 @@
                     }
                     switch (alt123) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:8297:5: this_INT_1= RULE_INT
+                            // InternalPerspectiveDsl.g:8325:5: this_INT_1= RULE_INT
                             {
                             this_INT_1=(Token)match(input,RULE_INT,FOLLOW_101); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
@@ -22823,7 +22901,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalPerspectiveDsl.g:8305:5: this_DECIMAL_2= RULE_DECIMAL
+                            // InternalPerspectiveDsl.g:8333:5: this_DECIMAL_2= RULE_DECIMAL
                             {
                             this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_101); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
@@ -22842,11 +22920,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:8313:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    // InternalPerspectiveDsl.g:8341:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
                     int alt125=2;
                     int LA125_0 = input.LA(1);
 
-                    if ( (LA125_0==100) ) {
+                    if ( (LA125_0==102) ) {
                         int LA125_1 = input.LA(2);
 
                         if ( (LA125_1==RULE_INT||LA125_1==RULE_DECIMAL) ) {
@@ -22855,16 +22933,16 @@
                     }
                     switch (alt125) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:8314:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            // InternalPerspectiveDsl.g:8342:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
                             {
-                            kw=(Token)match(input,100,FOLLOW_102); if (state.failed) return current;
+                            kw=(Token)match(input,102,FOLLOW_102); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
                               					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
                               				
                             }
-                            // InternalPerspectiveDsl.g:8319:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            // InternalPerspectiveDsl.g:8347:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
                             int alt124=2;
                             int LA124_0 = input.LA(1);
 
@@ -22883,7 +22961,7 @@
                             }
                             switch (alt124) {
                                 case 1 :
-                                    // InternalPerspectiveDsl.g:8320:6: this_INT_4= RULE_INT
+                                    // InternalPerspectiveDsl.g:8348:6: this_INT_4= RULE_INT
                                     {
                                     this_INT_4=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
                                     if ( state.backtracking==0 ) {
@@ -22900,7 +22978,7 @@
                                     }
                                     break;
                                 case 2 :
-                                    // InternalPerspectiveDsl.g:8328:6: this_DECIMAL_5= RULE_DECIMAL
+                                    // InternalPerspectiveDsl.g:8356:6: this_DECIMAL_5= RULE_DECIMAL
                                     {
                                     this_DECIMAL_5=(Token)match(input,RULE_DECIMAL,FOLLOW_2); if (state.failed) return current;
                                     if ( state.backtracking==0 ) {
@@ -22959,7 +23037,7 @@
 
 
     // $ANTLR start "entryRuleJvmTypeReference"
-    // InternalPerspectiveDsl.g:8345:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+    // InternalPerspectiveDsl.g:8373:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
     public final EObject entryRuleJvmTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -22967,8 +23045,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8345:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
-            // InternalPerspectiveDsl.g:8346:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
+            // InternalPerspectiveDsl.g:8373:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+            // InternalPerspectiveDsl.g:8374:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); 
@@ -22999,7 +23077,7 @@
 
 
     // $ANTLR start "ruleJvmTypeReference"
-    // InternalPerspectiveDsl.g:8352:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
+    // InternalPerspectiveDsl.g:8380:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
     public final EObject ruleJvmTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -23012,17 +23090,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8358:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
-            // InternalPerspectiveDsl.g:8359:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            // InternalPerspectiveDsl.g:8386:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+            // InternalPerspectiveDsl.g:8387:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
             {
-            // InternalPerspectiveDsl.g:8359:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            // InternalPerspectiveDsl.g:8387:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
             int alt128=2;
             int LA128_0 = input.LA(1);
 
             if ( (LA128_0==RULE_ID) ) {
                 alt128=1;
             }
-            else if ( (LA128_0==63||LA128_0==88) ) {
+            else if ( (LA128_0==65||LA128_0==90) ) {
                 alt128=2;
             }
             else {
@@ -23034,10 +23112,10 @@
             }
             switch (alt128) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8360:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalPerspectiveDsl.g:8388:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
                     {
-                    // InternalPerspectiveDsl.g:8360:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
-                    // InternalPerspectiveDsl.g:8361:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    // InternalPerspectiveDsl.g:8388:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalPerspectiveDsl.g:8389:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
                     {
                     if ( state.backtracking==0 ) {
 
@@ -23055,16 +23133,16 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalPerspectiveDsl.g:8369:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    // InternalPerspectiveDsl.g:8397:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
                     loop127:
                     do {
                         int alt127=2;
                         int LA127_0 = input.LA(1);
 
-                        if ( (LA127_0==68) ) {
+                        if ( (LA127_0==70) ) {
                             int LA127_2 = input.LA(2);
 
-                            if ( (LA127_2==69) ) {
+                            if ( (LA127_2==71) ) {
                                 int LA127_3 = input.LA(3);
 
                                 if ( (synpred49_InternalPerspectiveDsl()) ) {
@@ -23080,13 +23158,13 @@
 
                         switch (alt127) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8370:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+                    	    // InternalPerspectiveDsl.g:8398:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8376:5: ( () ruleArrayBrackets )
-                    	    // InternalPerspectiveDsl.g:8377:6: () ruleArrayBrackets
+                    	    // InternalPerspectiveDsl.g:8404:5: ( () ruleArrayBrackets )
+                    	    // InternalPerspectiveDsl.g:8405:6: () ruleArrayBrackets
                     	    {
-                    	    // InternalPerspectiveDsl.g:8377:6: ()
-                    	    // InternalPerspectiveDsl.g:8378:7: 
+                    	    // InternalPerspectiveDsl.g:8405:6: ()
+                    	    // InternalPerspectiveDsl.g:8406:7: 
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -23132,7 +23210,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8395:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
+                    // InternalPerspectiveDsl.g:8423:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
                     {
                     if ( state.backtracking==0 ) {
 
@@ -23178,7 +23256,7 @@
 
 
     // $ANTLR start "entryRuleArrayBrackets"
-    // InternalPerspectiveDsl.g:8407:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+    // InternalPerspectiveDsl.g:8435:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
     public final String entryRuleArrayBrackets() throws RecognitionException {
         String current = null;
 
@@ -23186,8 +23264,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8407:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
-            // InternalPerspectiveDsl.g:8408:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
+            // InternalPerspectiveDsl.g:8435:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+            // InternalPerspectiveDsl.g:8436:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getArrayBracketsRule()); 
@@ -23218,7 +23296,7 @@
 
 
     // $ANTLR start "ruleArrayBrackets"
-    // InternalPerspectiveDsl.g:8414:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+    // InternalPerspectiveDsl.g:8442:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
     public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -23228,20 +23306,20 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8420:2: ( (kw= '[' kw= ']' ) )
-            // InternalPerspectiveDsl.g:8421:2: (kw= '[' kw= ']' )
+            // InternalPerspectiveDsl.g:8448:2: ( (kw= '[' kw= ']' ) )
+            // InternalPerspectiveDsl.g:8449:2: (kw= '[' kw= ']' )
             {
-            // InternalPerspectiveDsl.g:8421:2: (kw= '[' kw= ']' )
-            // InternalPerspectiveDsl.g:8422:3: kw= '[' kw= ']'
+            // InternalPerspectiveDsl.g:8449:2: (kw= '[' kw= ']' )
+            // InternalPerspectiveDsl.g:8450:3: kw= '[' kw= ']'
             {
-            kw=(Token)match(input,68,FOLLOW_75); if (state.failed) return current;
+            kw=(Token)match(input,70,FOLLOW_75); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
               			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
               		
             }
-            kw=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
@@ -23273,7 +23351,7 @@
 
 
     // $ANTLR start "entryRuleXFunctionTypeRef"
-    // InternalPerspectiveDsl.g:8436:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+    // InternalPerspectiveDsl.g:8464:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
     public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
         EObject current = null;
 
@@ -23281,8 +23359,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8436:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
-            // InternalPerspectiveDsl.g:8437:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
+            // InternalPerspectiveDsl.g:8464:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+            // InternalPerspectiveDsl.g:8465:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); 
@@ -23313,7 +23391,7 @@
 
 
     // $ANTLR start "ruleXFunctionTypeRef"
-    // InternalPerspectiveDsl.g:8443:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
+    // InternalPerspectiveDsl.g:8471:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleXFunctionTypeRef() throws RecognitionException {
         EObject current = null;
 
@@ -23332,45 +23410,45 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8449:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
-            // InternalPerspectiveDsl.g:8450:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8477:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8478:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
             {
-            // InternalPerspectiveDsl.g:8450:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
-            // InternalPerspectiveDsl.g:8451:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8478:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8479:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
             {
-            // InternalPerspectiveDsl.g:8451:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+            // InternalPerspectiveDsl.g:8479:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
             int alt131=2;
             int LA131_0 = input.LA(1);
 
-            if ( (LA131_0==63) ) {
+            if ( (LA131_0==65) ) {
                 alt131=1;
             }
             switch (alt131) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8452:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+                    // InternalPerspectiveDsl.g:8480:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
                     {
-                    otherlv_0=(Token)match(input,63,FOLLOW_103); if (state.failed) return current;
+                    otherlv_0=(Token)match(input,65,FOLLOW_103); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
                       			
                     }
-                    // InternalPerspectiveDsl.g:8456:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+                    // InternalPerspectiveDsl.g:8484:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
                     int alt130=2;
                     int LA130_0 = input.LA(1);
 
-                    if ( (LA130_0==RULE_ID||LA130_0==63||LA130_0==88) ) {
+                    if ( (LA130_0==RULE_ID||LA130_0==65||LA130_0==90) ) {
                         alt130=1;
                     }
                     switch (alt130) {
                         case 1 :
-                            // InternalPerspectiveDsl.g:8457:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            // InternalPerspectiveDsl.g:8485:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                             {
-                            // InternalPerspectiveDsl.g:8457:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
-                            // InternalPerspectiveDsl.g:8458:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalPerspectiveDsl.g:8485:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+                            // InternalPerspectiveDsl.g:8486:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
                             {
-                            // InternalPerspectiveDsl.g:8458:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
-                            // InternalPerspectiveDsl.g:8459:7: lv_paramTypes_1_0= ruleJvmTypeReference
+                            // InternalPerspectiveDsl.g:8486:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalPerspectiveDsl.g:8487:7: lv_paramTypes_1_0= ruleJvmTypeReference
                             {
                             if ( state.backtracking==0 ) {
 
@@ -23401,32 +23479,32 @@
 
                             }
 
-                            // InternalPerspectiveDsl.g:8476:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            // InternalPerspectiveDsl.g:8504:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                             loop129:
                             do {
                                 int alt129=2;
                                 int LA129_0 = input.LA(1);
 
-                                if ( (LA129_0==64) ) {
+                                if ( (LA129_0==66) ) {
                                     alt129=1;
                                 }
 
 
                                 switch (alt129) {
                             	case 1 :
-                            	    // InternalPerspectiveDsl.g:8477:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalPerspectiveDsl.g:8505:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                             	    {
-                            	    otherlv_2=(Token)match(input,64,FOLLOW_53); if (state.failed) return current;
+                            	    otherlv_2=(Token)match(input,66,FOLLOW_53); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalPerspectiveDsl.g:8481:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
-                            	    // InternalPerspectiveDsl.g:8482:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalPerspectiveDsl.g:8509:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalPerspectiveDsl.g:8510:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
                             	    {
-                            	    // InternalPerspectiveDsl.g:8482:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
-                            	    // InternalPerspectiveDsl.g:8483:8: lv_paramTypes_3_0= ruleJvmTypeReference
+                            	    // InternalPerspectiveDsl.g:8510:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalPerspectiveDsl.g:8511:8: lv_paramTypes_3_0= ruleJvmTypeReference
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -23472,7 +23550,7 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,65,FOLLOW_104); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,67,FOLLOW_104); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
@@ -23484,17 +23562,17 @@
 
             }
 
-            otherlv_5=(Token)match(input,88,FOLLOW_53); if (state.failed) return current;
+            otherlv_5=(Token)match(input,90,FOLLOW_53); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:8511:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:8512:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8539:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8540:4: (lv_returnType_6_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:8512:4: (lv_returnType_6_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:8513:5: lv_returnType_6_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:8540:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8541:5: lv_returnType_6_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -23550,7 +23628,7 @@
 
 
     // $ANTLR start "entryRuleJvmParameterizedTypeReference"
-    // InternalPerspectiveDsl.g:8534:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+    // InternalPerspectiveDsl.g:8562:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
     public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -23558,8 +23636,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8534:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
-            // InternalPerspectiveDsl.g:8535:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
+            // InternalPerspectiveDsl.g:8562:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+            // InternalPerspectiveDsl.g:8563:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
@@ -23590,7 +23668,7 @@
 
 
     // $ANTLR start "ruleJvmParameterizedTypeReference"
-    // InternalPerspectiveDsl.g:8541:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
+    // InternalPerspectiveDsl.g:8569:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
     public final EObject ruleJvmParameterizedTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -23614,17 +23692,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8547:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
-            // InternalPerspectiveDsl.g:8548:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+            // InternalPerspectiveDsl.g:8575:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
+            // InternalPerspectiveDsl.g:8576:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
             {
-            // InternalPerspectiveDsl.g:8548:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
-            // InternalPerspectiveDsl.g:8549:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+            // InternalPerspectiveDsl.g:8576:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+            // InternalPerspectiveDsl.g:8577:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
             {
-            // InternalPerspectiveDsl.g:8549:3: ( ( ruleQualifiedName ) )
-            // InternalPerspectiveDsl.g:8550:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:8577:3: ( ( ruleQualifiedName ) )
+            // InternalPerspectiveDsl.g:8578:4: ( ruleQualifiedName )
             {
-            // InternalPerspectiveDsl.g:8550:4: ( ruleQualifiedName )
-            // InternalPerspectiveDsl.g:8551:5: ruleQualifiedName
+            // InternalPerspectiveDsl.g:8578:4: ( ruleQualifiedName )
+            // InternalPerspectiveDsl.g:8579:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -23654,17 +23732,17 @@
 
             }
 
-            // InternalPerspectiveDsl.g:8565:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+            // InternalPerspectiveDsl.g:8593:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
             int alt136=2;
             alt136 = dfa136.predict(input);
             switch (alt136) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8566:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    // InternalPerspectiveDsl.g:8594:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
                     {
-                    // InternalPerspectiveDsl.g:8566:4: ( ( '<' )=>otherlv_1= '<' )
-                    // InternalPerspectiveDsl.g:8567:5: ( '<' )=>otherlv_1= '<'
+                    // InternalPerspectiveDsl.g:8594:4: ( ( '<' )=>otherlv_1= '<' )
+                    // InternalPerspectiveDsl.g:8595:5: ( '<' )=>otherlv_1= '<'
                     {
-                    otherlv_1=(Token)match(input,75,FOLLOW_65); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,77,FOLLOW_65); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
@@ -23673,11 +23751,11 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:8573:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
-                    // InternalPerspectiveDsl.g:8574:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:8601:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalPerspectiveDsl.g:8602:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalPerspectiveDsl.g:8574:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
-                    // InternalPerspectiveDsl.g:8575:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+                    // InternalPerspectiveDsl.g:8602:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalPerspectiveDsl.g:8603:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -23708,32 +23786,32 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:8592:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    // InternalPerspectiveDsl.g:8620:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
                     loop132:
                     do {
                         int alt132=2;
                         int LA132_0 = input.LA(1);
 
-                        if ( (LA132_0==64) ) {
+                        if ( (LA132_0==66) ) {
                             alt132=1;
                         }
 
 
                         switch (alt132) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8593:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:8621:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,64,FOLLOW_65); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,66,FOLLOW_65); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
                     	      				
                     	    }
-                    	    // InternalPerspectiveDsl.g:8597:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalPerspectiveDsl.g:8598:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:8625:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalPerspectiveDsl.g:8626:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8598:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
-                    	    // InternalPerspectiveDsl.g:8599:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+                    	    // InternalPerspectiveDsl.g:8626:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalPerspectiveDsl.g:8627:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -23773,19 +23851,19 @@
                         }
                     } while (true);
 
-                    otherlv_5=(Token)match(input,76,FOLLOW_101); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,78,FOLLOW_101); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
                       			
                     }
-                    // InternalPerspectiveDsl.g:8621:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    // InternalPerspectiveDsl.g:8649:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
                     loop135:
                     do {
                         int alt135=2;
                         int LA135_0 = input.LA(1);
 
-                        if ( (LA135_0==100) ) {
+                        if ( (LA135_0==102) ) {
                             int LA135_2 = input.LA(2);
 
                             if ( (LA135_2==RULE_ID) ) {
@@ -23804,16 +23882,16 @@
 
                         switch (alt135) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8622:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    // InternalPerspectiveDsl.g:8650:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
                     	    {
-                    	    // InternalPerspectiveDsl.g:8622:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
-                    	    // InternalPerspectiveDsl.g:8623:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+                    	    // InternalPerspectiveDsl.g:8650:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+                    	    // InternalPerspectiveDsl.g:8651:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8629:6: ( () otherlv_7= '.' )
-                    	    // InternalPerspectiveDsl.g:8630:7: () otherlv_7= '.'
+                    	    // InternalPerspectiveDsl.g:8657:6: ( () otherlv_7= '.' )
+                    	    // InternalPerspectiveDsl.g:8658:7: () otherlv_7= '.'
                     	    {
-                    	    // InternalPerspectiveDsl.g:8630:7: ()
-                    	    // InternalPerspectiveDsl.g:8631:8: 
+                    	    // InternalPerspectiveDsl.g:8658:7: ()
+                    	    // InternalPerspectiveDsl.g:8659:8: 
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -23825,7 +23903,7 @@
 
                     	    }
 
-                    	    otherlv_7=(Token)match(input,100,FOLLOW_4); if (state.failed) return current;
+                    	    otherlv_7=(Token)match(input,102,FOLLOW_4); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      							newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
@@ -23837,11 +23915,11 @@
 
                     	    }
 
-                    	    // InternalPerspectiveDsl.g:8643:5: ( ( ruleValidID ) )
-                    	    // InternalPerspectiveDsl.g:8644:6: ( ruleValidID )
+                    	    // InternalPerspectiveDsl.g:8671:5: ( ( ruleValidID ) )
+                    	    // InternalPerspectiveDsl.g:8672:6: ( ruleValidID )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8644:6: ( ruleValidID )
-                    	    // InternalPerspectiveDsl.g:8645:7: ruleValidID
+                    	    // InternalPerspectiveDsl.g:8672:6: ( ruleValidID )
+                    	    // InternalPerspectiveDsl.g:8673:7: ruleValidID
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -23871,17 +23949,17 @@
 
                     	    }
 
-                    	    // InternalPerspectiveDsl.g:8659:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    // InternalPerspectiveDsl.g:8687:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
                     	    int alt134=2;
                     	    alt134 = dfa134.predict(input);
                     	    switch (alt134) {
                     	        case 1 :
-                    	            // InternalPerspectiveDsl.g:8660:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+                    	            // InternalPerspectiveDsl.g:8688:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
                     	            {
-                    	            // InternalPerspectiveDsl.g:8660:6: ( ( '<' )=>otherlv_9= '<' )
-                    	            // InternalPerspectiveDsl.g:8661:7: ( '<' )=>otherlv_9= '<'
+                    	            // InternalPerspectiveDsl.g:8688:6: ( ( '<' )=>otherlv_9= '<' )
+                    	            // InternalPerspectiveDsl.g:8689:7: ( '<' )=>otherlv_9= '<'
                     	            {
-                    	            otherlv_9=(Token)match(input,75,FOLLOW_65); if (state.failed) return current;
+                    	            otherlv_9=(Token)match(input,77,FOLLOW_65); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
                     	              							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
@@ -23890,11 +23968,11 @@
 
                     	            }
 
-                    	            // InternalPerspectiveDsl.g:8667:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
-                    	            // InternalPerspectiveDsl.g:8668:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalPerspectiveDsl.g:8695:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+                    	            // InternalPerspectiveDsl.g:8696:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
                     	            {
-                    	            // InternalPerspectiveDsl.g:8668:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
-                    	            // InternalPerspectiveDsl.g:8669:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+                    	            // InternalPerspectiveDsl.g:8696:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalPerspectiveDsl.g:8697:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
                     	            {
                     	            if ( state.backtracking==0 ) {
 
@@ -23925,32 +24003,32 @@
 
                     	            }
 
-                    	            // InternalPerspectiveDsl.g:8686:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+                    	            // InternalPerspectiveDsl.g:8714:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
                     	            loop133:
                     	            do {
                     	                int alt133=2;
                     	                int LA133_0 = input.LA(1);
 
-                    	                if ( (LA133_0==64) ) {
+                    	                if ( (LA133_0==66) ) {
                     	                    alt133=1;
                     	                }
 
 
                     	                switch (alt133) {
                     	            	case 1 :
-                    	            	    // InternalPerspectiveDsl.g:8687:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalPerspectiveDsl.g:8715:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
                     	            	    {
-                    	            	    otherlv_11=(Token)match(input,64,FOLLOW_65); if (state.failed) return current;
+                    	            	    otherlv_11=(Token)match(input,66,FOLLOW_65); if (state.failed) return current;
                     	            	    if ( state.backtracking==0 ) {
 
                     	            	      							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
                     	            	      						
                     	            	    }
-                    	            	    // InternalPerspectiveDsl.g:8691:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
-                    	            	    // InternalPerspectiveDsl.g:8692:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalPerspectiveDsl.g:8719:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalPerspectiveDsl.g:8720:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
                     	            	    {
-                    	            	    // InternalPerspectiveDsl.g:8692:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
-                    	            	    // InternalPerspectiveDsl.g:8693:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+                    	            	    // InternalPerspectiveDsl.g:8720:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalPerspectiveDsl.g:8721:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
                     	            	    {
                     	            	    if ( state.backtracking==0 ) {
 
@@ -23990,7 +24068,7 @@
                     	                }
                     	            } while (true);
 
-                    	            otherlv_13=(Token)match(input,76,FOLLOW_101); if (state.failed) return current;
+                    	            otherlv_13=(Token)match(input,78,FOLLOW_101); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
                     	              						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
@@ -24042,7 +24120,7 @@
 
 
     // $ANTLR start "entryRuleJvmArgumentTypeReference"
-    // InternalPerspectiveDsl.g:8722:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+    // InternalPerspectiveDsl.g:8750:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
     public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -24050,8 +24128,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8722:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
-            // InternalPerspectiveDsl.g:8723:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
+            // InternalPerspectiveDsl.g:8750:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+            // InternalPerspectiveDsl.g:8751:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); 
@@ -24082,7 +24160,7 @@
 
 
     // $ANTLR start "ruleJvmArgumentTypeReference"
-    // InternalPerspectiveDsl.g:8729:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
+    // InternalPerspectiveDsl.g:8757:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
     public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -24095,17 +24173,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8735:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
-            // InternalPerspectiveDsl.g:8736:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            // InternalPerspectiveDsl.g:8763:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+            // InternalPerspectiveDsl.g:8764:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
             {
-            // InternalPerspectiveDsl.g:8736:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            // InternalPerspectiveDsl.g:8764:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
             int alt137=2;
             int LA137_0 = input.LA(1);
 
-            if ( (LA137_0==RULE_ID||LA137_0==63||LA137_0==88) ) {
+            if ( (LA137_0==RULE_ID||LA137_0==65||LA137_0==90) ) {
                 alt137=1;
             }
-            else if ( (LA137_0==128) ) {
+            else if ( (LA137_0==130) ) {
                 alt137=2;
             }
             else {
@@ -24117,7 +24195,7 @@
             }
             switch (alt137) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8737:3: this_JvmTypeReference_0= ruleJvmTypeReference
+                    // InternalPerspectiveDsl.g:8765:3: this_JvmTypeReference_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -24139,7 +24217,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8746:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
+                    // InternalPerspectiveDsl.g:8774:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -24185,7 +24263,7 @@
 
 
     // $ANTLR start "entryRuleJvmWildcardTypeReference"
-    // InternalPerspectiveDsl.g:8758:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+    // InternalPerspectiveDsl.g:8786:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
     public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -24193,8 +24271,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8758:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
-            // InternalPerspectiveDsl.g:8759:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
+            // InternalPerspectiveDsl.g:8786:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+            // InternalPerspectiveDsl.g:8787:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); 
@@ -24225,7 +24303,7 @@
 
 
     // $ANTLR start "ruleJvmWildcardTypeReference"
-    // InternalPerspectiveDsl.g:8765:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
+    // InternalPerspectiveDsl.g:8793:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
     public final EObject ruleJvmWildcardTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -24243,14 +24321,14 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8771:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
-            // InternalPerspectiveDsl.g:8772:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalPerspectiveDsl.g:8799:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
+            // InternalPerspectiveDsl.g:8800:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
             {
-            // InternalPerspectiveDsl.g:8772:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
-            // InternalPerspectiveDsl.g:8773:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            // InternalPerspectiveDsl.g:8800:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalPerspectiveDsl.g:8801:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
             {
-            // InternalPerspectiveDsl.g:8773:3: ()
-            // InternalPerspectiveDsl.g:8774:4: 
+            // InternalPerspectiveDsl.g:8801:3: ()
+            // InternalPerspectiveDsl.g:8802:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -24262,34 +24340,34 @@
 
             }
 
-            otherlv_1=(Token)match(input,128,FOLLOW_107); if (state.failed) return current;
+            otherlv_1=(Token)match(input,130,FOLLOW_107); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
               		
             }
-            // InternalPerspectiveDsl.g:8784:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            // InternalPerspectiveDsl.g:8812:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
             int alt140=3;
             int LA140_0 = input.LA(1);
 
-            if ( (LA140_0==115) ) {
+            if ( (LA140_0==117) ) {
                 alt140=1;
             }
-            else if ( (LA140_0==116) ) {
+            else if ( (LA140_0==118) ) {
                 alt140=2;
             }
             switch (alt140) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:8785:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8813:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
                     {
-                    // InternalPerspectiveDsl.g:8785:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
-                    // InternalPerspectiveDsl.g:8786:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    // InternalPerspectiveDsl.g:8813:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8814:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
                     {
-                    // InternalPerspectiveDsl.g:8786:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
-                    // InternalPerspectiveDsl.g:8787:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalPerspectiveDsl.g:8814:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+                    // InternalPerspectiveDsl.g:8815:6: (lv_constraints_2_0= ruleJvmUpperBound )
                     {
-                    // InternalPerspectiveDsl.g:8787:6: (lv_constraints_2_0= ruleJvmUpperBound )
-                    // InternalPerspectiveDsl.g:8788:7: lv_constraints_2_0= ruleJvmUpperBound
+                    // InternalPerspectiveDsl.g:8815:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalPerspectiveDsl.g:8816:7: lv_constraints_2_0= ruleJvmUpperBound
                     {
                     if ( state.backtracking==0 ) {
 
@@ -24320,23 +24398,23 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:8805:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    // InternalPerspectiveDsl.g:8833:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
                     loop138:
                     do {
                         int alt138=2;
                         int LA138_0 = input.LA(1);
 
-                        if ( (LA138_0==129) ) {
+                        if ( (LA138_0==131) ) {
                             alt138=1;
                         }
 
 
                         switch (alt138) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8806:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8834:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8806:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
-                    	    // InternalPerspectiveDsl.g:8807:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
+                    	    // InternalPerspectiveDsl.g:8834:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8835:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -24380,16 +24458,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:8826:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8854:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
                     {
-                    // InternalPerspectiveDsl.g:8826:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
-                    // InternalPerspectiveDsl.g:8827:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    // InternalPerspectiveDsl.g:8854:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalPerspectiveDsl.g:8855:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
                     {
-                    // InternalPerspectiveDsl.g:8827:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
-                    // InternalPerspectiveDsl.g:8828:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalPerspectiveDsl.g:8855:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+                    // InternalPerspectiveDsl.g:8856:6: (lv_constraints_4_0= ruleJvmLowerBound )
                     {
-                    // InternalPerspectiveDsl.g:8828:6: (lv_constraints_4_0= ruleJvmLowerBound )
-                    // InternalPerspectiveDsl.g:8829:7: lv_constraints_4_0= ruleJvmLowerBound
+                    // InternalPerspectiveDsl.g:8856:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalPerspectiveDsl.g:8857:7: lv_constraints_4_0= ruleJvmLowerBound
                     {
                     if ( state.backtracking==0 ) {
 
@@ -24420,23 +24498,23 @@
 
                     }
 
-                    // InternalPerspectiveDsl.g:8846:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    // InternalPerspectiveDsl.g:8874:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
                     loop139:
                     do {
                         int alt139=2;
                         int LA139_0 = input.LA(1);
 
-                        if ( (LA139_0==129) ) {
+                        if ( (LA139_0==131) ) {
                             alt139=1;
                         }
 
 
                         switch (alt139) {
                     	case 1 :
-                    	    // InternalPerspectiveDsl.g:8847:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8875:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
                     	    {
-                    	    // InternalPerspectiveDsl.g:8847:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
-                    	    // InternalPerspectiveDsl.g:8848:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
+                    	    // InternalPerspectiveDsl.g:8875:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalPerspectiveDsl.g:8876:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -24507,7 +24585,7 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBound"
-    // InternalPerspectiveDsl.g:8871:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+    // InternalPerspectiveDsl.g:8899:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
     public final EObject entryRuleJvmUpperBound() throws RecognitionException {
         EObject current = null;
 
@@ -24515,8 +24593,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8871:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
-            // InternalPerspectiveDsl.g:8872:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
+            // InternalPerspectiveDsl.g:8899:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+            // InternalPerspectiveDsl.g:8900:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmUpperBoundRule()); 
@@ -24547,7 +24625,7 @@
 
 
     // $ANTLR start "ruleJvmUpperBound"
-    // InternalPerspectiveDsl.g:8878:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalPerspectiveDsl.g:8906:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmUpperBound() throws RecognitionException {
         EObject current = null;
 
@@ -24559,23 +24637,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8884:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalPerspectiveDsl.g:8885:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8912:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8913:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalPerspectiveDsl.g:8885:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalPerspectiveDsl.g:8886:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8913:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8914:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,115,FOLLOW_53); if (state.failed) return current;
+            otherlv_0=(Token)match(input,117,FOLLOW_53); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
               		
             }
-            // InternalPerspectiveDsl.g:8890:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:8891:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8918:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8919:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:8891:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:8892:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:8919:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8920:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -24631,7 +24709,7 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBoundAnded"
-    // InternalPerspectiveDsl.g:8913:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+    // InternalPerspectiveDsl.g:8941:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
     public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -24639,8 +24717,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8913:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
-            // InternalPerspectiveDsl.g:8914:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
+            // InternalPerspectiveDsl.g:8941:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+            // InternalPerspectiveDsl.g:8942:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); 
@@ -24671,7 +24749,7 @@
 
 
     // $ANTLR start "ruleJvmUpperBoundAnded"
-    // InternalPerspectiveDsl.g:8920:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalPerspectiveDsl.g:8948:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -24683,23 +24761,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8926:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalPerspectiveDsl.g:8927:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8954:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8955:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalPerspectiveDsl.g:8927:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalPerspectiveDsl.g:8928:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8955:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8956:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,129,FOLLOW_53); if (state.failed) return current;
+            otherlv_0=(Token)match(input,131,FOLLOW_53); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
               		
             }
-            // InternalPerspectiveDsl.g:8932:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:8933:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8960:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8961:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:8933:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:8934:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:8961:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:8962:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -24755,7 +24833,7 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBound"
-    // InternalPerspectiveDsl.g:8955:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+    // InternalPerspectiveDsl.g:8983:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
     public final EObject entryRuleJvmLowerBound() throws RecognitionException {
         EObject current = null;
 
@@ -24763,8 +24841,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8955:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
-            // InternalPerspectiveDsl.g:8956:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
+            // InternalPerspectiveDsl.g:8983:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+            // InternalPerspectiveDsl.g:8984:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmLowerBoundRule()); 
@@ -24795,7 +24873,7 @@
 
 
     // $ANTLR start "ruleJvmLowerBound"
-    // InternalPerspectiveDsl.g:8962:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalPerspectiveDsl.g:8990:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmLowerBound() throws RecognitionException {
         EObject current = null;
 
@@ -24807,23 +24885,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:8968:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalPerspectiveDsl.g:8969:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8996:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:8997:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalPerspectiveDsl.g:8969:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalPerspectiveDsl.g:8970:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:8997:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:8998:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,116,FOLLOW_53); if (state.failed) return current;
+            otherlv_0=(Token)match(input,118,FOLLOW_53); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
               		
             }
-            // InternalPerspectiveDsl.g:8974:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:8975:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:9002:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:9003:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:8975:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:8976:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:9003:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:9004:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -24879,7 +24957,7 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBoundAnded"
-    // InternalPerspectiveDsl.g:8997:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+    // InternalPerspectiveDsl.g:9025:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
     public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -24887,8 +24965,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:8997:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
-            // InternalPerspectiveDsl.g:8998:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
+            // InternalPerspectiveDsl.g:9025:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+            // InternalPerspectiveDsl.g:9026:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); 
@@ -24919,7 +24997,7 @@
 
 
     // $ANTLR start "ruleJvmLowerBoundAnded"
-    // InternalPerspectiveDsl.g:9004:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalPerspectiveDsl.g:9032:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmLowerBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -24931,23 +25009,23 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:9010:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalPerspectiveDsl.g:9011:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:9038:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalPerspectiveDsl.g:9039:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalPerspectiveDsl.g:9011:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalPerspectiveDsl.g:9012:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:9039:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalPerspectiveDsl.g:9040:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,129,FOLLOW_53); if (state.failed) return current;
+            otherlv_0=(Token)match(input,131,FOLLOW_53); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
               		
             }
-            // InternalPerspectiveDsl.g:9016:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalPerspectiveDsl.g:9017:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:9044:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalPerspectiveDsl.g:9045:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalPerspectiveDsl.g:9017:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalPerspectiveDsl.g:9018:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalPerspectiveDsl.g:9045:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalPerspectiveDsl.g:9046:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -25003,7 +25081,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameWithWildcard"
-    // InternalPerspectiveDsl.g:9039:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+    // InternalPerspectiveDsl.g:9067:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
     public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
         String current = null;
 
@@ -25011,8 +25089,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:9039:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
-            // InternalPerspectiveDsl.g:9040:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
+            // InternalPerspectiveDsl.g:9067:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+            // InternalPerspectiveDsl.g:9068:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); 
@@ -25043,7 +25121,7 @@
 
 
     // $ANTLR start "ruleQualifiedNameWithWildcard"
-    // InternalPerspectiveDsl.g:9046:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
+    // InternalPerspectiveDsl.g:9074:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
     public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -25055,11 +25133,11 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:9052:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
-            // InternalPerspectiveDsl.g:9053:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalPerspectiveDsl.g:9080:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+            // InternalPerspectiveDsl.g:9081:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
             {
-            // InternalPerspectiveDsl.g:9053:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
-            // InternalPerspectiveDsl.g:9054:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
+            // InternalPerspectiveDsl.g:9081:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalPerspectiveDsl.g:9082:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
             {
             if ( state.backtracking==0 ) {
 
@@ -25081,14 +25159,14 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            kw=(Token)match(input,100,FOLLOW_110); if (state.failed) return current;
+            kw=(Token)match(input,102,FOLLOW_110); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
               			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
               		
             }
-            kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
@@ -25120,7 +25198,7 @@
 
 
     // $ANTLR start "entryRuleValidID"
-    // InternalPerspectiveDsl.g:9078:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+    // InternalPerspectiveDsl.g:9106:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
     public final String entryRuleValidID() throws RecognitionException {
         String current = null;
 
@@ -25128,8 +25206,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:9078:47: (iv_ruleValidID= ruleValidID EOF )
-            // InternalPerspectiveDsl.g:9079:2: iv_ruleValidID= ruleValidID EOF
+            // InternalPerspectiveDsl.g:9106:47: (iv_ruleValidID= ruleValidID EOF )
+            // InternalPerspectiveDsl.g:9107:2: iv_ruleValidID= ruleValidID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getValidIDRule()); 
@@ -25160,7 +25238,7 @@
 
 
     // $ANTLR start "ruleValidID"
-    // InternalPerspectiveDsl.g:9085:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalPerspectiveDsl.g:9113:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
     public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -25170,8 +25248,8 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:9091:2: (this_ID_0= RULE_ID )
-            // InternalPerspectiveDsl.g:9092:2: this_ID_0= RULE_ID
+            // InternalPerspectiveDsl.g:9119:2: (this_ID_0= RULE_ID )
+            // InternalPerspectiveDsl.g:9120:2: this_ID_0= RULE_ID
             {
             this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -25206,7 +25284,7 @@
 
 
     // $ANTLR start "entryRuleXImportSection"
-    // InternalPerspectiveDsl.g:9102:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
+    // InternalPerspectiveDsl.g:9130:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
     public final EObject entryRuleXImportSection() throws RecognitionException {
         EObject current = null;
 
@@ -25214,8 +25292,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:9102:55: (iv_ruleXImportSection= ruleXImportSection EOF )
-            // InternalPerspectiveDsl.g:9103:2: iv_ruleXImportSection= ruleXImportSection EOF
+            // InternalPerspectiveDsl.g:9130:55: (iv_ruleXImportSection= ruleXImportSection EOF )
+            // InternalPerspectiveDsl.g:9131:2: iv_ruleXImportSection= ruleXImportSection EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXImportSectionRule()); 
@@ -25246,7 +25324,7 @@
 
 
     // $ANTLR start "ruleXImportSection"
-    // InternalPerspectiveDsl.g:9109:1: ruleXImportSection returns [EObject current=null] : ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ ;
+    // InternalPerspectiveDsl.g:9137:1: ruleXImportSection returns [EObject current=null] : ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ ;
     public final EObject ruleXImportSection() throws RecognitionException {
         EObject current = null;
 
@@ -25257,27 +25335,27 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:9115:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
-            // InternalPerspectiveDsl.g:9116:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            // InternalPerspectiveDsl.g:9143:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
+            // InternalPerspectiveDsl.g:9144:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
             {
-            // InternalPerspectiveDsl.g:9116:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            // InternalPerspectiveDsl.g:9144:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
             int cnt141=0;
             loop141:
             do {
                 int alt141=2;
                 int LA141_0 = input.LA(1);
 
-                if ( (LA141_0==56) ) {
+                if ( (LA141_0==58) ) {
                     alt141=1;
                 }
 
 
                 switch (alt141) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9117:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalPerspectiveDsl.g:9145:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
             	    {
-            	    // InternalPerspectiveDsl.g:9117:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
-            	    // InternalPerspectiveDsl.g:9118:4: lv_importDeclarations_0_0= ruleXImportDeclaration
+            	    // InternalPerspectiveDsl.g:9145:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalPerspectiveDsl.g:9146:4: lv_importDeclarations_0_0= ruleXImportDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -25341,7 +25419,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameInStaticImport"
-    // InternalPerspectiveDsl.g:9138:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+    // InternalPerspectiveDsl.g:9166:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
     public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
         String current = null;
 
@@ -25349,8 +25427,8 @@
 
 
         try {
-            // InternalPerspectiveDsl.g:9138:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
-            // InternalPerspectiveDsl.g:9139:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
+            // InternalPerspectiveDsl.g:9166:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+            // InternalPerspectiveDsl.g:9167:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); 
@@ -25381,7 +25459,7 @@
 
 
     // $ANTLR start "ruleQualifiedNameInStaticImport"
-    // InternalPerspectiveDsl.g:9145:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
+    // InternalPerspectiveDsl.g:9173:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
     public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -25393,10 +25471,10 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:9151:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
-            // InternalPerspectiveDsl.g:9152:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            // InternalPerspectiveDsl.g:9179:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+            // InternalPerspectiveDsl.g:9180:2: (this_ValidID_0= ruleValidID kw= '.' )+
             {
-            // InternalPerspectiveDsl.g:9152:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            // InternalPerspectiveDsl.g:9180:2: (this_ValidID_0= ruleValidID kw= '.' )+
             int cnt142=0;
             loop142:
             do {
@@ -25406,7 +25484,7 @@
                 if ( (LA142_0==RULE_ID) ) {
                     int LA142_2 = input.LA(2);
 
-                    if ( (LA142_2==100) ) {
+                    if ( (LA142_2==102) ) {
                         alt142=1;
                     }
 
@@ -25416,7 +25494,7 @@
 
                 switch (alt142) {
             	case 1 :
-            	    // InternalPerspectiveDsl.g:9153:3: this_ValidID_0= ruleValidID kw= '.'
+            	    // InternalPerspectiveDsl.g:9181:3: this_ValidID_0= ruleValidID kw= '.'
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -25438,7 +25516,7 @@
             	      			afterParserOrEnumRuleCall();
             	      		
             	    }
-            	    kw=(Token)match(input,100,FOLLOW_112); if (state.failed) return current;
+            	    kw=(Token)match(input,102,FOLLOW_112); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      			current.merge(kw);
@@ -25481,7 +25559,7 @@
 
 
     // $ANTLR start "ruleSashOrientation"
-    // InternalPerspectiveDsl.g:9172:1: ruleSashOrientation returns [Enumerator current=null] : ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) ;
+    // InternalPerspectiveDsl.g:9200:1: ruleSashOrientation returns [Enumerator current=null] : ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) ;
     public final Enumerator ruleSashOrientation() throws RecognitionException {
         Enumerator current = null;
 
@@ -25492,17 +25570,17 @@
         	enterRule();
 
         try {
-            // InternalPerspectiveDsl.g:9178:2: ( ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) )
-            // InternalPerspectiveDsl.g:9179:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
+            // InternalPerspectiveDsl.g:9206:2: ( ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) ) )
+            // InternalPerspectiveDsl.g:9207:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
             {
-            // InternalPerspectiveDsl.g:9179:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
+            // InternalPerspectiveDsl.g:9207:2: ( (enumLiteral_0= 'horizontal' ) | (enumLiteral_1= 'vertical' ) )
             int alt143=2;
             int LA143_0 = input.LA(1);
 
-            if ( (LA143_0==130) ) {
+            if ( (LA143_0==132) ) {
                 alt143=1;
             }
-            else if ( (LA143_0==131) ) {
+            else if ( (LA143_0==133) ) {
                 alt143=2;
             }
             else {
@@ -25514,12 +25592,12 @@
             }
             switch (alt143) {
                 case 1 :
-                    // InternalPerspectiveDsl.g:9180:3: (enumLiteral_0= 'horizontal' )
+                    // InternalPerspectiveDsl.g:9208:3: (enumLiteral_0= 'horizontal' )
                     {
-                    // InternalPerspectiveDsl.g:9180:3: (enumLiteral_0= 'horizontal' )
-                    // InternalPerspectiveDsl.g:9181:4: enumLiteral_0= 'horizontal'
+                    // InternalPerspectiveDsl.g:9208:3: (enumLiteral_0= 'horizontal' )
+                    // InternalPerspectiveDsl.g:9209:4: enumLiteral_0= 'horizontal'
                     {
-                    enumLiteral_0=(Token)match(input,130,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_0=(Token)match(input,132,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSashOrientationAccess().getHORIZONTALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
@@ -25533,12 +25611,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalPerspectiveDsl.g:9188:3: (enumLiteral_1= 'vertical' )
+                    // InternalPerspectiveDsl.g:9216:3: (enumLiteral_1= 'vertical' )
                     {
-                    // InternalPerspectiveDsl.g:9188:3: (enumLiteral_1= 'vertical' )
-                    // InternalPerspectiveDsl.g:9189:4: enumLiteral_1= 'vertical'
+                    // InternalPerspectiveDsl.g:9216:3: (enumLiteral_1= 'vertical' )
+                    // InternalPerspectiveDsl.g:9217:4: enumLiteral_1= 'vertical'
                     {
-                    enumLiteral_1=(Token)match(input,131,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_1=(Token)match(input,133,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSashOrientationAccess().getVERTICALEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
@@ -25576,10 +25654,10 @@
 
     // $ANTLR start synpred1_InternalPerspectiveDsl
     public final void synpred1_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2548:5: ( '(' )
-        // InternalPerspectiveDsl.g:2548:6: '('
+        // InternalPerspectiveDsl.g:2576:5: ( '(' )
+        // InternalPerspectiveDsl.g:2576:6: '('
         {
-        match(input,63,FOLLOW_2); if (state.failed) return ;
+        match(input,65,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -25587,17 +25665,17 @@
 
     // $ANTLR start synpred2_InternalPerspectiveDsl
     public final void synpred2_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2557:7: ( ( ( ( ruleValidID ) ) '=' ) )
-        // InternalPerspectiveDsl.g:2557:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalPerspectiveDsl.g:2585:7: ( ( ( ( ruleValidID ) ) '=' ) )
+        // InternalPerspectiveDsl.g:2585:8: ( ( ( ruleValidID ) ) '=' )
         {
-        // InternalPerspectiveDsl.g:2557:8: ( ( ( ruleValidID ) ) '=' )
-        // InternalPerspectiveDsl.g:2558:8: ( ( ruleValidID ) ) '='
+        // InternalPerspectiveDsl.g:2585:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalPerspectiveDsl.g:2586:8: ( ( ruleValidID ) ) '='
         {
-        // InternalPerspectiveDsl.g:2558:8: ( ( ruleValidID ) )
-        // InternalPerspectiveDsl.g:2559:9: ( ruleValidID )
+        // InternalPerspectiveDsl.g:2586:8: ( ( ruleValidID ) )
+        // InternalPerspectiveDsl.g:2587:9: ( ruleValidID )
         {
-        // InternalPerspectiveDsl.g:2559:9: ( ruleValidID )
-        // InternalPerspectiveDsl.g:2560:10: ruleValidID
+        // InternalPerspectiveDsl.g:2587:9: ( ruleValidID )
+        // InternalPerspectiveDsl.g:2588:10: ruleValidID
         {
         pushFollow(FOLLOW_39);
         ruleValidID();
@@ -25610,7 +25688,7 @@
 
         }
 
-        match(input,66,FOLLOW_2); if (state.failed) return ;
+        match(input,68,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25621,19 +25699,19 @@
 
     // $ANTLR start synpred5_InternalPerspectiveDsl
     public final void synpred5_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2737:5: ( ( () '#' '[' ) )
-        // InternalPerspectiveDsl.g:2737:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2765:5: ( ( () '#' '[' ) )
+        // InternalPerspectiveDsl.g:2765:6: ( () '#' '[' )
         {
-        // InternalPerspectiveDsl.g:2737:6: ( () '#' '[' )
-        // InternalPerspectiveDsl.g:2738:6: () '#' '['
+        // InternalPerspectiveDsl.g:2765:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2766:6: () '#' '['
         {
-        // InternalPerspectiveDsl.g:2738:6: ()
-        // InternalPerspectiveDsl.g:2739:6: 
+        // InternalPerspectiveDsl.g:2766:6: ()
+        // InternalPerspectiveDsl.g:2767:6: 
         {
         }
 
-        match(input,67,FOLLOW_41); if (state.failed) return ;
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,69,FOLLOW_41); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25644,19 +25722,19 @@
 
     // $ANTLR start synpred6_InternalPerspectiveDsl
     public final void synpred6_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:2879:5: ( ( () '#' '[' ) )
-        // InternalPerspectiveDsl.g:2879:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2907:5: ( ( () '#' '[' ) )
+        // InternalPerspectiveDsl.g:2907:6: ( () '#' '[' )
         {
-        // InternalPerspectiveDsl.g:2879:6: ( () '#' '[' )
-        // InternalPerspectiveDsl.g:2880:6: () '#' '['
+        // InternalPerspectiveDsl.g:2907:6: ( () '#' '[' )
+        // InternalPerspectiveDsl.g:2908:6: () '#' '['
         {
-        // InternalPerspectiveDsl.g:2880:6: ()
-        // InternalPerspectiveDsl.g:2881:6: 
+        // InternalPerspectiveDsl.g:2908:6: ()
+        // InternalPerspectiveDsl.g:2909:6: 
         {
         }
 
-        match(input,67,FOLLOW_41); if (state.failed) return ;
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,69,FOLLOW_41); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25667,22 +25745,22 @@
 
     // $ANTLR start synpred7_InternalPerspectiveDsl
     public final void synpred7_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3107:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
-        // InternalPerspectiveDsl.g:3107:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalPerspectiveDsl.g:3135:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
+        // InternalPerspectiveDsl.g:3135:7: ( () ( ( ruleOpMultiAssign ) ) )
         {
-        // InternalPerspectiveDsl.g:3107:7: ( () ( ( ruleOpMultiAssign ) ) )
-        // InternalPerspectiveDsl.g:3108:7: () ( ( ruleOpMultiAssign ) )
+        // InternalPerspectiveDsl.g:3135:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalPerspectiveDsl.g:3136:7: () ( ( ruleOpMultiAssign ) )
         {
-        // InternalPerspectiveDsl.g:3108:7: ()
-        // InternalPerspectiveDsl.g:3109:7: 
+        // InternalPerspectiveDsl.g:3136:7: ()
+        // InternalPerspectiveDsl.g:3137:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3110:7: ( ( ruleOpMultiAssign ) )
-        // InternalPerspectiveDsl.g:3111:8: ( ruleOpMultiAssign )
+        // InternalPerspectiveDsl.g:3138:7: ( ( ruleOpMultiAssign ) )
+        // InternalPerspectiveDsl.g:3139:8: ( ruleOpMultiAssign )
         {
-        // InternalPerspectiveDsl.g:3111:8: ( ruleOpMultiAssign )
-        // InternalPerspectiveDsl.g:3112:9: ruleOpMultiAssign
+        // InternalPerspectiveDsl.g:3139:8: ( ruleOpMultiAssign )
+        // InternalPerspectiveDsl.g:3140:9: ruleOpMultiAssign
         {
         pushFollow(FOLLOW_2);
         ruleOpMultiAssign();
@@ -25705,22 +25783,22 @@
 
     // $ANTLR start synpred8_InternalPerspectiveDsl
     public final void synpred8_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3301:5: ( ( () ( ( ruleOpOr ) ) ) )
-        // InternalPerspectiveDsl.g:3301:6: ( () ( ( ruleOpOr ) ) )
+        // InternalPerspectiveDsl.g:3329:5: ( ( () ( ( ruleOpOr ) ) ) )
+        // InternalPerspectiveDsl.g:3329:6: ( () ( ( ruleOpOr ) ) )
         {
-        // InternalPerspectiveDsl.g:3301:6: ( () ( ( ruleOpOr ) ) )
-        // InternalPerspectiveDsl.g:3302:6: () ( ( ruleOpOr ) )
+        // InternalPerspectiveDsl.g:3329:6: ( () ( ( ruleOpOr ) ) )
+        // InternalPerspectiveDsl.g:3330:6: () ( ( ruleOpOr ) )
         {
-        // InternalPerspectiveDsl.g:3302:6: ()
-        // InternalPerspectiveDsl.g:3303:6: 
+        // InternalPerspectiveDsl.g:3330:6: ()
+        // InternalPerspectiveDsl.g:3331:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3304:6: ( ( ruleOpOr ) )
-        // InternalPerspectiveDsl.g:3305:7: ( ruleOpOr )
+        // InternalPerspectiveDsl.g:3332:6: ( ( ruleOpOr ) )
+        // InternalPerspectiveDsl.g:3333:7: ( ruleOpOr )
         {
-        // InternalPerspectiveDsl.g:3305:7: ( ruleOpOr )
-        // InternalPerspectiveDsl.g:3306:8: ruleOpOr
+        // InternalPerspectiveDsl.g:3333:7: ( ruleOpOr )
+        // InternalPerspectiveDsl.g:3334:8: ruleOpOr
         {
         pushFollow(FOLLOW_2);
         ruleOpOr();
@@ -25743,22 +25821,22 @@
 
     // $ANTLR start synpred9_InternalPerspectiveDsl
     public final void synpred9_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3408:5: ( ( () ( ( ruleOpAnd ) ) ) )
-        // InternalPerspectiveDsl.g:3408:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalPerspectiveDsl.g:3436:5: ( ( () ( ( ruleOpAnd ) ) ) )
+        // InternalPerspectiveDsl.g:3436:6: ( () ( ( ruleOpAnd ) ) )
         {
-        // InternalPerspectiveDsl.g:3408:6: ( () ( ( ruleOpAnd ) ) )
-        // InternalPerspectiveDsl.g:3409:6: () ( ( ruleOpAnd ) )
+        // InternalPerspectiveDsl.g:3436:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalPerspectiveDsl.g:3437:6: () ( ( ruleOpAnd ) )
         {
-        // InternalPerspectiveDsl.g:3409:6: ()
-        // InternalPerspectiveDsl.g:3410:6: 
+        // InternalPerspectiveDsl.g:3437:6: ()
+        // InternalPerspectiveDsl.g:3438:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3411:6: ( ( ruleOpAnd ) )
-        // InternalPerspectiveDsl.g:3412:7: ( ruleOpAnd )
+        // InternalPerspectiveDsl.g:3439:6: ( ( ruleOpAnd ) )
+        // InternalPerspectiveDsl.g:3440:7: ( ruleOpAnd )
         {
-        // InternalPerspectiveDsl.g:3412:7: ( ruleOpAnd )
-        // InternalPerspectiveDsl.g:3413:8: ruleOpAnd
+        // InternalPerspectiveDsl.g:3440:7: ( ruleOpAnd )
+        // InternalPerspectiveDsl.g:3441:8: ruleOpAnd
         {
         pushFollow(FOLLOW_2);
         ruleOpAnd();
@@ -25781,22 +25859,22 @@
 
     // $ANTLR start synpred10_InternalPerspectiveDsl
     public final void synpred10_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3515:5: ( ( () ( ( ruleOpEquality ) ) ) )
-        // InternalPerspectiveDsl.g:3515:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalPerspectiveDsl.g:3543:5: ( ( () ( ( ruleOpEquality ) ) ) )
+        // InternalPerspectiveDsl.g:3543:6: ( () ( ( ruleOpEquality ) ) )
         {
-        // InternalPerspectiveDsl.g:3515:6: ( () ( ( ruleOpEquality ) ) )
-        // InternalPerspectiveDsl.g:3516:6: () ( ( ruleOpEquality ) )
+        // InternalPerspectiveDsl.g:3543:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalPerspectiveDsl.g:3544:6: () ( ( ruleOpEquality ) )
         {
-        // InternalPerspectiveDsl.g:3516:6: ()
-        // InternalPerspectiveDsl.g:3517:6: 
+        // InternalPerspectiveDsl.g:3544:6: ()
+        // InternalPerspectiveDsl.g:3545:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3518:6: ( ( ruleOpEquality ) )
-        // InternalPerspectiveDsl.g:3519:7: ( ruleOpEquality )
+        // InternalPerspectiveDsl.g:3546:6: ( ( ruleOpEquality ) )
+        // InternalPerspectiveDsl.g:3547:7: ( ruleOpEquality )
         {
-        // InternalPerspectiveDsl.g:3519:7: ( ruleOpEquality )
-        // InternalPerspectiveDsl.g:3520:8: ruleOpEquality
+        // InternalPerspectiveDsl.g:3547:7: ( ruleOpEquality )
+        // InternalPerspectiveDsl.g:3548:8: ruleOpEquality
         {
         pushFollow(FOLLOW_2);
         ruleOpEquality();
@@ -25819,18 +25897,18 @@
 
     // $ANTLR start synpred11_InternalPerspectiveDsl
     public final void synpred11_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3643:6: ( ( () 'instanceof' ) )
-        // InternalPerspectiveDsl.g:3643:7: ( () 'instanceof' )
+        // InternalPerspectiveDsl.g:3671:6: ( ( () 'instanceof' ) )
+        // InternalPerspectiveDsl.g:3671:7: ( () 'instanceof' )
         {
-        // InternalPerspectiveDsl.g:3643:7: ( () 'instanceof' )
-        // InternalPerspectiveDsl.g:3644:7: () 'instanceof'
+        // InternalPerspectiveDsl.g:3671:7: ( () 'instanceof' )
+        // InternalPerspectiveDsl.g:3672:7: () 'instanceof'
         {
-        // InternalPerspectiveDsl.g:3644:7: ()
-        // InternalPerspectiveDsl.g:3645:7: 
+        // InternalPerspectiveDsl.g:3672:7: ()
+        // InternalPerspectiveDsl.g:3673:7: 
         {
         }
 
-        match(input,84,FOLLOW_2); if (state.failed) return ;
+        match(input,86,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25841,22 +25919,22 @@
 
     // $ANTLR start synpred12_InternalPerspectiveDsl
     public final void synpred12_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3686:6: ( ( () ( ( ruleOpCompare ) ) ) )
-        // InternalPerspectiveDsl.g:3686:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalPerspectiveDsl.g:3714:6: ( ( () ( ( ruleOpCompare ) ) ) )
+        // InternalPerspectiveDsl.g:3714:7: ( () ( ( ruleOpCompare ) ) )
         {
-        // InternalPerspectiveDsl.g:3686:7: ( () ( ( ruleOpCompare ) ) )
-        // InternalPerspectiveDsl.g:3687:7: () ( ( ruleOpCompare ) )
+        // InternalPerspectiveDsl.g:3714:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalPerspectiveDsl.g:3715:7: () ( ( ruleOpCompare ) )
         {
-        // InternalPerspectiveDsl.g:3687:7: ()
-        // InternalPerspectiveDsl.g:3688:7: 
+        // InternalPerspectiveDsl.g:3715:7: ()
+        // InternalPerspectiveDsl.g:3716:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3689:7: ( ( ruleOpCompare ) )
-        // InternalPerspectiveDsl.g:3690:8: ( ruleOpCompare )
+        // InternalPerspectiveDsl.g:3717:7: ( ( ruleOpCompare ) )
+        // InternalPerspectiveDsl.g:3718:8: ( ruleOpCompare )
         {
-        // InternalPerspectiveDsl.g:3690:8: ( ruleOpCompare )
-        // InternalPerspectiveDsl.g:3691:9: ruleOpCompare
+        // InternalPerspectiveDsl.g:3718:8: ( ruleOpCompare )
+        // InternalPerspectiveDsl.g:3719:9: ruleOpCompare
         {
         pushFollow(FOLLOW_2);
         ruleOpCompare();
@@ -25879,22 +25957,22 @@
 
     // $ANTLR start synpred13_InternalPerspectiveDsl
     public final void synpred13_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3821:5: ( ( () ( ( ruleOpOther ) ) ) )
-        // InternalPerspectiveDsl.g:3821:6: ( () ( ( ruleOpOther ) ) )
+        // InternalPerspectiveDsl.g:3849:5: ( ( () ( ( ruleOpOther ) ) ) )
+        // InternalPerspectiveDsl.g:3849:6: ( () ( ( ruleOpOther ) ) )
         {
-        // InternalPerspectiveDsl.g:3821:6: ( () ( ( ruleOpOther ) ) )
-        // InternalPerspectiveDsl.g:3822:6: () ( ( ruleOpOther ) )
+        // InternalPerspectiveDsl.g:3849:6: ( () ( ( ruleOpOther ) ) )
+        // InternalPerspectiveDsl.g:3850:6: () ( ( ruleOpOther ) )
         {
-        // InternalPerspectiveDsl.g:3822:6: ()
-        // InternalPerspectiveDsl.g:3823:6: 
+        // InternalPerspectiveDsl.g:3850:6: ()
+        // InternalPerspectiveDsl.g:3851:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:3824:6: ( ( ruleOpOther ) )
-        // InternalPerspectiveDsl.g:3825:7: ( ruleOpOther )
+        // InternalPerspectiveDsl.g:3852:6: ( ( ruleOpOther ) )
+        // InternalPerspectiveDsl.g:3853:7: ( ruleOpOther )
         {
-        // InternalPerspectiveDsl.g:3825:7: ( ruleOpOther )
-        // InternalPerspectiveDsl.g:3826:8: ruleOpOther
+        // InternalPerspectiveDsl.g:3853:7: ( ruleOpOther )
+        // InternalPerspectiveDsl.g:3854:8: ruleOpOther
         {
         pushFollow(FOLLOW_2);
         ruleOpOther();
@@ -25917,14 +25995,14 @@
 
     // $ANTLR start synpred14_InternalPerspectiveDsl
     public final void synpred14_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3941:6: ( ( '>' '>' ) )
-        // InternalPerspectiveDsl.g:3941:7: ( '>' '>' )
+        // InternalPerspectiveDsl.g:3969:6: ( ( '>' '>' ) )
+        // InternalPerspectiveDsl.g:3969:7: ( '>' '>' )
         {
-        // InternalPerspectiveDsl.g:3941:7: ( '>' '>' )
-        // InternalPerspectiveDsl.g:3942:7: '>' '>'
+        // InternalPerspectiveDsl.g:3969:7: ( '>' '>' )
+        // InternalPerspectiveDsl.g:3970:7: '>' '>'
         {
-        match(input,76,FOLLOW_56); if (state.failed) return ;
-        match(input,76,FOLLOW_2); if (state.failed) return ;
+        match(input,78,FOLLOW_56); if (state.failed) return ;
+        match(input,78,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25935,14 +26013,14 @@
 
     // $ANTLR start synpred15_InternalPerspectiveDsl
     public final void synpred15_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:3976:6: ( ( '<' '<' ) )
-        // InternalPerspectiveDsl.g:3976:7: ( '<' '<' )
+        // InternalPerspectiveDsl.g:4004:6: ( ( '<' '<' ) )
+        // InternalPerspectiveDsl.g:4004:7: ( '<' '<' )
         {
-        // InternalPerspectiveDsl.g:3976:7: ( '<' '<' )
-        // InternalPerspectiveDsl.g:3977:7: '<' '<'
+        // InternalPerspectiveDsl.g:4004:7: ( '<' '<' )
+        // InternalPerspectiveDsl.g:4005:7: '<' '<'
         {
-        match(input,75,FOLLOW_46); if (state.failed) return ;
-        match(input,75,FOLLOW_2); if (state.failed) return ;
+        match(input,77,FOLLOW_46); if (state.failed) return ;
+        match(input,77,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -25953,22 +26031,22 @@
 
     // $ANTLR start synpred16_InternalPerspectiveDsl
     public final void synpred16_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4049:5: ( ( () ( ( ruleOpAdd ) ) ) )
-        // InternalPerspectiveDsl.g:4049:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalPerspectiveDsl.g:4077:5: ( ( () ( ( ruleOpAdd ) ) ) )
+        // InternalPerspectiveDsl.g:4077:6: ( () ( ( ruleOpAdd ) ) )
         {
-        // InternalPerspectiveDsl.g:4049:6: ( () ( ( ruleOpAdd ) ) )
-        // InternalPerspectiveDsl.g:4050:6: () ( ( ruleOpAdd ) )
+        // InternalPerspectiveDsl.g:4077:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalPerspectiveDsl.g:4078:6: () ( ( ruleOpAdd ) )
         {
-        // InternalPerspectiveDsl.g:4050:6: ()
-        // InternalPerspectiveDsl.g:4051:6: 
+        // InternalPerspectiveDsl.g:4078:6: ()
+        // InternalPerspectiveDsl.g:4079:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4052:6: ( ( ruleOpAdd ) )
-        // InternalPerspectiveDsl.g:4053:7: ( ruleOpAdd )
+        // InternalPerspectiveDsl.g:4080:6: ( ( ruleOpAdd ) )
+        // InternalPerspectiveDsl.g:4081:7: ( ruleOpAdd )
         {
-        // InternalPerspectiveDsl.g:4053:7: ( ruleOpAdd )
-        // InternalPerspectiveDsl.g:4054:8: ruleOpAdd
+        // InternalPerspectiveDsl.g:4081:7: ( ruleOpAdd )
+        // InternalPerspectiveDsl.g:4082:8: ruleOpAdd
         {
         pushFollow(FOLLOW_2);
         ruleOpAdd();
@@ -25991,22 +26069,22 @@
 
     // $ANTLR start synpred17_InternalPerspectiveDsl
     public final void synpred17_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4164:5: ( ( () ( ( ruleOpMulti ) ) ) )
-        // InternalPerspectiveDsl.g:4164:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalPerspectiveDsl.g:4192:5: ( ( () ( ( ruleOpMulti ) ) ) )
+        // InternalPerspectiveDsl.g:4192:6: ( () ( ( ruleOpMulti ) ) )
         {
-        // InternalPerspectiveDsl.g:4164:6: ( () ( ( ruleOpMulti ) ) )
-        // InternalPerspectiveDsl.g:4165:6: () ( ( ruleOpMulti ) )
+        // InternalPerspectiveDsl.g:4192:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalPerspectiveDsl.g:4193:6: () ( ( ruleOpMulti ) )
         {
-        // InternalPerspectiveDsl.g:4165:6: ()
-        // InternalPerspectiveDsl.g:4166:6: 
+        // InternalPerspectiveDsl.g:4193:6: ()
+        // InternalPerspectiveDsl.g:4194:6: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4167:6: ( ( ruleOpMulti ) )
-        // InternalPerspectiveDsl.g:4168:7: ( ruleOpMulti )
+        // InternalPerspectiveDsl.g:4195:6: ( ( ruleOpMulti ) )
+        // InternalPerspectiveDsl.g:4196:7: ( ruleOpMulti )
         {
-        // InternalPerspectiveDsl.g:4168:7: ( ruleOpMulti )
-        // InternalPerspectiveDsl.g:4169:8: ruleOpMulti
+        // InternalPerspectiveDsl.g:4196:7: ( ruleOpMulti )
+        // InternalPerspectiveDsl.g:4197:8: ruleOpMulti
         {
         pushFollow(FOLLOW_2);
         ruleOpMulti();
@@ -26029,18 +26107,18 @@
 
     // $ANTLR start synpred18_InternalPerspectiveDsl
     public final void synpred18_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4399:5: ( ( () 'as' ) )
-        // InternalPerspectiveDsl.g:4399:6: ( () 'as' )
+        // InternalPerspectiveDsl.g:4427:5: ( ( () 'as' ) )
+        // InternalPerspectiveDsl.g:4427:6: ( () 'as' )
         {
-        // InternalPerspectiveDsl.g:4399:6: ( () 'as' )
-        // InternalPerspectiveDsl.g:4400:6: () 'as'
+        // InternalPerspectiveDsl.g:4427:6: ( () 'as' )
+        // InternalPerspectiveDsl.g:4428:6: () 'as'
         {
-        // InternalPerspectiveDsl.g:4400:6: ()
-        // InternalPerspectiveDsl.g:4401:6: 
+        // InternalPerspectiveDsl.g:4428:6: ()
+        // InternalPerspectiveDsl.g:4429:6: 
         {
         }
 
-        match(input,97,FOLLOW_2); if (state.failed) return ;
+        match(input,99,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26051,22 +26129,22 @@
 
     // $ANTLR start synpred19_InternalPerspectiveDsl
     public final void synpred19_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4467:4: ( ( () ( ( ruleOpPostfix ) ) ) )
-        // InternalPerspectiveDsl.g:4467:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalPerspectiveDsl.g:4495:4: ( ( () ( ( ruleOpPostfix ) ) ) )
+        // InternalPerspectiveDsl.g:4495:5: ( () ( ( ruleOpPostfix ) ) )
         {
-        // InternalPerspectiveDsl.g:4467:5: ( () ( ( ruleOpPostfix ) ) )
-        // InternalPerspectiveDsl.g:4468:5: () ( ( ruleOpPostfix ) )
+        // InternalPerspectiveDsl.g:4495:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalPerspectiveDsl.g:4496:5: () ( ( ruleOpPostfix ) )
         {
-        // InternalPerspectiveDsl.g:4468:5: ()
-        // InternalPerspectiveDsl.g:4469:5: 
+        // InternalPerspectiveDsl.g:4496:5: ()
+        // InternalPerspectiveDsl.g:4497:5: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4470:5: ( ( ruleOpPostfix ) )
-        // InternalPerspectiveDsl.g:4471:6: ( ruleOpPostfix )
+        // InternalPerspectiveDsl.g:4498:5: ( ( ruleOpPostfix ) )
+        // InternalPerspectiveDsl.g:4499:6: ( ruleOpPostfix )
         {
-        // InternalPerspectiveDsl.g:4471:6: ( ruleOpPostfix )
-        // InternalPerspectiveDsl.g:4472:7: ruleOpPostfix
+        // InternalPerspectiveDsl.g:4499:6: ( ruleOpPostfix )
+        // InternalPerspectiveDsl.g:4500:7: ruleOpPostfix
         {
         pushFollow(FOLLOW_2);
         ruleOpPostfix();
@@ -26089,25 +26167,25 @@
 
     // $ANTLR start synpred20_InternalPerspectiveDsl
     public final void synpred20_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4563:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
-        // InternalPerspectiveDsl.g:4563:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalPerspectiveDsl.g:4591:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+        // InternalPerspectiveDsl.g:4591:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
         {
-        // InternalPerspectiveDsl.g:4563:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
-        // InternalPerspectiveDsl.g:4564:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+        // InternalPerspectiveDsl.g:4591:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalPerspectiveDsl.g:4592:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
         {
-        // InternalPerspectiveDsl.g:4564:7: ()
-        // InternalPerspectiveDsl.g:4565:7: 
+        // InternalPerspectiveDsl.g:4592:7: ()
+        // InternalPerspectiveDsl.g:4593:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4566:7: ( '.' | ( ( '::' ) ) )
+        // InternalPerspectiveDsl.g:4594:7: ( '.' | ( ( '::' ) ) )
         int alt144=2;
         int LA144_0 = input.LA(1);
 
-        if ( (LA144_0==100) ) {
+        if ( (LA144_0==102) ) {
             alt144=1;
         }
-        else if ( (LA144_0==101) ) {
+        else if ( (LA144_0==103) ) {
             alt144=2;
         }
         else {
@@ -26119,22 +26197,22 @@
         }
         switch (alt144) {
             case 1 :
-                // InternalPerspectiveDsl.g:4567:8: '.'
+                // InternalPerspectiveDsl.g:4595:8: '.'
                 {
-                match(input,100,FOLLOW_63); if (state.failed) return ;
+                match(input,102,FOLLOW_63); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // InternalPerspectiveDsl.g:4569:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4597:8: ( ( '::' ) )
                 {
-                // InternalPerspectiveDsl.g:4569:8: ( ( '::' ) )
-                // InternalPerspectiveDsl.g:4570:9: ( '::' )
+                // InternalPerspectiveDsl.g:4597:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4598:9: ( '::' )
                 {
-                // InternalPerspectiveDsl.g:4570:9: ( '::' )
-                // InternalPerspectiveDsl.g:4571:10: '::'
+                // InternalPerspectiveDsl.g:4598:9: ( '::' )
+                // InternalPerspectiveDsl.g:4599:10: '::'
                 {
-                match(input,101,FOLLOW_63); if (state.failed) return ;
+                match(input,103,FOLLOW_63); if (state.failed) return ;
 
                 }
 
@@ -26147,11 +26225,11 @@
 
         }
 
-        // InternalPerspectiveDsl.g:4575:7: ( ( ruleFeatureCallID ) )
-        // InternalPerspectiveDsl.g:4576:8: ( ruleFeatureCallID )
+        // InternalPerspectiveDsl.g:4603:7: ( ( ruleFeatureCallID ) )
+        // InternalPerspectiveDsl.g:4604:8: ( ruleFeatureCallID )
         {
-        // InternalPerspectiveDsl.g:4576:8: ( ruleFeatureCallID )
-        // InternalPerspectiveDsl.g:4577:9: ruleFeatureCallID
+        // InternalPerspectiveDsl.g:4604:8: ( ruleFeatureCallID )
+        // InternalPerspectiveDsl.g:4605:9: ruleFeatureCallID
         {
         pushFollow(FOLLOW_39);
         ruleFeatureCallID();
@@ -26179,31 +26257,31 @@
 
     // $ANTLR start synpred21_InternalPerspectiveDsl
     public final void synpred21_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4660:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
-        // InternalPerspectiveDsl.g:4660:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalPerspectiveDsl.g:4688:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
+        // InternalPerspectiveDsl.g:4688:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
         {
-        // InternalPerspectiveDsl.g:4660:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
-        // InternalPerspectiveDsl.g:4661:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        // InternalPerspectiveDsl.g:4688:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalPerspectiveDsl.g:4689:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
         {
-        // InternalPerspectiveDsl.g:4661:7: ()
-        // InternalPerspectiveDsl.g:4662:7: 
+        // InternalPerspectiveDsl.g:4689:7: ()
+        // InternalPerspectiveDsl.g:4690:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4663:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        // InternalPerspectiveDsl.g:4691:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
         int alt145=3;
         switch ( input.LA(1) ) {
-        case 100:
+        case 102:
             {
             alt145=1;
             }
             break;
-        case 102:
+        case 104:
             {
             alt145=2;
             }
             break;
-        case 101:
+        case 103:
             {
             alt145=3;
             }
@@ -26218,22 +26296,22 @@
 
         switch (alt145) {
             case 1 :
-                // InternalPerspectiveDsl.g:4664:8: '.'
+                // InternalPerspectiveDsl.g:4692:8: '.'
                 {
-                match(input,100,FOLLOW_2); if (state.failed) return ;
+                match(input,102,FOLLOW_2); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // InternalPerspectiveDsl.g:4666:8: ( ( '?.' ) )
+                // InternalPerspectiveDsl.g:4694:8: ( ( '?.' ) )
                 {
-                // InternalPerspectiveDsl.g:4666:8: ( ( '?.' ) )
-                // InternalPerspectiveDsl.g:4667:9: ( '?.' )
+                // InternalPerspectiveDsl.g:4694:8: ( ( '?.' ) )
+                // InternalPerspectiveDsl.g:4695:9: ( '?.' )
                 {
-                // InternalPerspectiveDsl.g:4667:9: ( '?.' )
-                // InternalPerspectiveDsl.g:4668:10: '?.'
+                // InternalPerspectiveDsl.g:4695:9: ( '?.' )
+                // InternalPerspectiveDsl.g:4696:10: '?.'
                 {
-                match(input,102,FOLLOW_2); if (state.failed) return ;
+                match(input,104,FOLLOW_2); if (state.failed) return ;
 
                 }
 
@@ -26244,15 +26322,15 @@
                 }
                 break;
             case 3 :
-                // InternalPerspectiveDsl.g:4672:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4700:8: ( ( '::' ) )
                 {
-                // InternalPerspectiveDsl.g:4672:8: ( ( '::' ) )
-                // InternalPerspectiveDsl.g:4673:9: ( '::' )
+                // InternalPerspectiveDsl.g:4700:8: ( ( '::' ) )
+                // InternalPerspectiveDsl.g:4701:9: ( '::' )
                 {
-                // InternalPerspectiveDsl.g:4673:9: ( '::' )
-                // InternalPerspectiveDsl.g:4674:10: '::'
+                // InternalPerspectiveDsl.g:4701:9: ( '::' )
+                // InternalPerspectiveDsl.g:4702:10: '::'
                 {
-                match(input,101,FOLLOW_2); if (state.failed) return ;
+                match(input,103,FOLLOW_2); if (state.failed) return ;
 
                 }
 
@@ -26275,13 +26353,13 @@
 
     // $ANTLR start synpred22_InternalPerspectiveDsl
     public final void synpred22_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4798:7: ( ( '(' ) )
-        // InternalPerspectiveDsl.g:4798:8: ( '(' )
+        // InternalPerspectiveDsl.g:4826:7: ( ( '(' ) )
+        // InternalPerspectiveDsl.g:4826:8: ( '(' )
         {
-        // InternalPerspectiveDsl.g:4798:8: ( '(' )
-        // InternalPerspectiveDsl.g:4799:8: '('
+        // InternalPerspectiveDsl.g:4826:8: ( '(' )
+        // InternalPerspectiveDsl.g:4827:8: '('
         {
-        match(input,63,FOLLOW_2); if (state.failed) return ;
+        match(input,65,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26292,33 +26370,33 @@
 
     // $ANTLR start synpred23_InternalPerspectiveDsl
     public final void synpred23_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4817:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalPerspectiveDsl.g:4817:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:4845:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:4845:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalPerspectiveDsl.g:4817:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalPerspectiveDsl.g:4818:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalPerspectiveDsl.g:4845:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:4846:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalPerspectiveDsl.g:4818:9: ()
-        // InternalPerspectiveDsl.g:4819:9: 
+        // InternalPerspectiveDsl.g:4846:9: ()
+        // InternalPerspectiveDsl.g:4847:9: 
         {
         }
 
-        // InternalPerspectiveDsl.g:4820:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        // InternalPerspectiveDsl.g:4848:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
         int alt147=2;
         int LA147_0 = input.LA(1);
 
-        if ( (LA147_0==RULE_ID||LA147_0==63||LA147_0==88) ) {
+        if ( (LA147_0==RULE_ID||LA147_0==65||LA147_0==90) ) {
             alt147=1;
         }
         switch (alt147) {
             case 1 :
-                // InternalPerspectiveDsl.g:4821:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:4849:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalPerspectiveDsl.g:4821:10: ( ( ruleJvmFormalParameter ) )
-                // InternalPerspectiveDsl.g:4822:11: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:4849:10: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:4850:11: ( ruleJvmFormalParameter )
                 {
-                // InternalPerspectiveDsl.g:4822:11: ( ruleJvmFormalParameter )
-                // InternalPerspectiveDsl.g:4823:12: ruleJvmFormalParameter
+                // InternalPerspectiveDsl.g:4850:11: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:4851:12: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_73);
                 ruleJvmFormalParameter();
@@ -26331,27 +26409,27 @@
 
                 }
 
-                // InternalPerspectiveDsl.g:4826:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:4854:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop146:
                 do {
                     int alt146=2;
                     int LA146_0 = input.LA(1);
 
-                    if ( (LA146_0==64) ) {
+                    if ( (LA146_0==66) ) {
                         alt146=1;
                     }
 
 
                     switch (alt146) {
                 	case 1 :
-                	    // InternalPerspectiveDsl.g:4827:11: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:4855:11: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,64,FOLLOW_53); if (state.failed) return ;
-                	    // InternalPerspectiveDsl.g:4828:11: ( ( ruleJvmFormalParameter ) )
-                	    // InternalPerspectiveDsl.g:4829:12: ( ruleJvmFormalParameter )
+                	    match(input,66,FOLLOW_53); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:4856:11: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:4857:12: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalPerspectiveDsl.g:4829:12: ( ruleJvmFormalParameter )
-                	    // InternalPerspectiveDsl.g:4830:13: ruleJvmFormalParameter
+                	    // InternalPerspectiveDsl.g:4857:12: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:4858:13: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_73);
                 	    ruleJvmFormalParameter();
@@ -26379,13 +26457,13 @@
 
         }
 
-        // InternalPerspectiveDsl.g:4835:9: ( ( '|' ) )
-        // InternalPerspectiveDsl.g:4836:10: ( '|' )
+        // InternalPerspectiveDsl.g:4863:9: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:4864:10: ( '|' )
         {
-        // InternalPerspectiveDsl.g:4836:10: ( '|' )
-        // InternalPerspectiveDsl.g:4837:11: '|'
+        // InternalPerspectiveDsl.g:4864:10: ( '|' )
+        // InternalPerspectiveDsl.g:4865:11: '|'
         {
-        match(input,103,FOLLOW_2); if (state.failed) return ;
+        match(input,105,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26402,18 +26480,18 @@
 
     // $ANTLR start synpred24_InternalPerspectiveDsl
     public final void synpred24_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4914:6: ( ( () '[' ) )
-        // InternalPerspectiveDsl.g:4914:7: ( () '[' )
+        // InternalPerspectiveDsl.g:4942:6: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:4942:7: ( () '[' )
         {
-        // InternalPerspectiveDsl.g:4914:7: ( () '[' )
-        // InternalPerspectiveDsl.g:4915:7: () '['
+        // InternalPerspectiveDsl.g:4942:7: ( () '[' )
+        // InternalPerspectiveDsl.g:4943:7: () '['
         {
-        // InternalPerspectiveDsl.g:4915:7: ()
-        // InternalPerspectiveDsl.g:4916:7: 
+        // InternalPerspectiveDsl.g:4943:7: ()
+        // InternalPerspectiveDsl.g:4944:7: 
         {
         }
 
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26424,19 +26502,19 @@
 
     // $ANTLR start synpred25_InternalPerspectiveDsl
     public final void synpred25_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:4987:4: ( ( () 'synchronized' '(' ) )
-        // InternalPerspectiveDsl.g:4987:5: ( () 'synchronized' '(' )
+        // InternalPerspectiveDsl.g:5015:4: ( ( () 'synchronized' '(' ) )
+        // InternalPerspectiveDsl.g:5015:5: ( () 'synchronized' '(' )
         {
-        // InternalPerspectiveDsl.g:4987:5: ( () 'synchronized' '(' )
-        // InternalPerspectiveDsl.g:4988:5: () 'synchronized' '('
+        // InternalPerspectiveDsl.g:5015:5: ( () 'synchronized' '(' )
+        // InternalPerspectiveDsl.g:5016:5: () 'synchronized' '('
         {
-        // InternalPerspectiveDsl.g:4988:5: ()
-        // InternalPerspectiveDsl.g:4989:5: 
+        // InternalPerspectiveDsl.g:5016:5: ()
+        // InternalPerspectiveDsl.g:5017:5: 
         {
         }
 
-        match(input,126,FOLLOW_78); if (state.failed) return ;
-        match(input,63,FOLLOW_2); if (state.failed) return ;
+        match(input,128,FOLLOW_78); if (state.failed) return ;
+        match(input,65,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26447,24 +26525,24 @@
 
     // $ANTLR start synpred26_InternalPerspectiveDsl
     public final void synpred26_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5032:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalPerspectiveDsl.g:5032:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5060:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalPerspectiveDsl.g:5060:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalPerspectiveDsl.g:5032:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalPerspectiveDsl.g:5033:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalPerspectiveDsl.g:5060:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5061:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
         {
-        // InternalPerspectiveDsl.g:5033:5: ()
-        // InternalPerspectiveDsl.g:5034:5: 
+        // InternalPerspectiveDsl.g:5061:5: ()
+        // InternalPerspectiveDsl.g:5062:5: 
         {
         }
 
-        match(input,110,FOLLOW_78); if (state.failed) return ;
-        match(input,63,FOLLOW_53); if (state.failed) return ;
-        // InternalPerspectiveDsl.g:5037:5: ( ( ruleJvmFormalParameter ) )
-        // InternalPerspectiveDsl.g:5038:6: ( ruleJvmFormalParameter )
+        match(input,112,FOLLOW_78); if (state.failed) return ;
+        match(input,65,FOLLOW_53); if (state.failed) return ;
+        // InternalPerspectiveDsl.g:5065:5: ( ( ruleJvmFormalParameter ) )
+        // InternalPerspectiveDsl.g:5066:6: ( ruleJvmFormalParameter )
         {
-        // InternalPerspectiveDsl.g:5038:6: ( ruleJvmFormalParameter )
-        // InternalPerspectiveDsl.g:5039:7: ruleJvmFormalParameter
+        // InternalPerspectiveDsl.g:5066:6: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:5067:7: ruleJvmFormalParameter
         {
         pushFollow(FOLLOW_81);
         ruleJvmFormalParameter();
@@ -26477,7 +26555,7 @@
 
         }
 
-        match(input,107,FOLLOW_2); if (state.failed) return ;
+        match(input,109,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26488,18 +26566,18 @@
 
     // $ANTLR start synpred27_InternalPerspectiveDsl
     public final void synpred27_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5146:4: ( ( () '[' ) )
-        // InternalPerspectiveDsl.g:5146:5: ( () '[' )
+        // InternalPerspectiveDsl.g:5174:4: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:5174:5: ( () '[' )
         {
-        // InternalPerspectiveDsl.g:5146:5: ( () '[' )
-        // InternalPerspectiveDsl.g:5147:5: () '['
+        // InternalPerspectiveDsl.g:5174:5: ( () '[' )
+        // InternalPerspectiveDsl.g:5175:5: () '['
         {
-        // InternalPerspectiveDsl.g:5147:5: ()
-        // InternalPerspectiveDsl.g:5148:5: 
+        // InternalPerspectiveDsl.g:5175:5: ()
+        // InternalPerspectiveDsl.g:5176:5: 
         {
         }
 
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26510,28 +26588,28 @@
 
     // $ANTLR start synpred29_InternalPerspectiveDsl
     public final void synpred29_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5451:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalPerspectiveDsl.g:5451:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:5479:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:5479:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalPerspectiveDsl.g:5451:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalPerspectiveDsl.g:5452:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalPerspectiveDsl.g:5479:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:5480:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalPerspectiveDsl.g:5452:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        // InternalPerspectiveDsl.g:5480:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
         int alt149=2;
         int LA149_0 = input.LA(1);
 
-        if ( (LA149_0==RULE_ID||LA149_0==63||LA149_0==88) ) {
+        if ( (LA149_0==RULE_ID||LA149_0==65||LA149_0==90) ) {
             alt149=1;
         }
         switch (alt149) {
             case 1 :
-                // InternalPerspectiveDsl.g:5453:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:5481:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalPerspectiveDsl.g:5453:6: ( ( ruleJvmFormalParameter ) )
-                // InternalPerspectiveDsl.g:5454:7: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:5481:6: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:5482:7: ( ruleJvmFormalParameter )
                 {
-                // InternalPerspectiveDsl.g:5454:7: ( ruleJvmFormalParameter )
-                // InternalPerspectiveDsl.g:5455:8: ruleJvmFormalParameter
+                // InternalPerspectiveDsl.g:5482:7: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:5483:8: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_73);
                 ruleJvmFormalParameter();
@@ -26544,27 +26622,27 @@
 
                 }
 
-                // InternalPerspectiveDsl.g:5458:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:5486:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop148:
                 do {
                     int alt148=2;
                     int LA148_0 = input.LA(1);
 
-                    if ( (LA148_0==64) ) {
+                    if ( (LA148_0==66) ) {
                         alt148=1;
                     }
 
 
                     switch (alt148) {
                 	case 1 :
-                	    // InternalPerspectiveDsl.g:5459:7: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:5487:7: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,64,FOLLOW_53); if (state.failed) return ;
-                	    // InternalPerspectiveDsl.g:5460:7: ( ( ruleJvmFormalParameter ) )
-                	    // InternalPerspectiveDsl.g:5461:8: ( ruleJvmFormalParameter )
+                	    match(input,66,FOLLOW_53); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:5488:7: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:5489:8: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalPerspectiveDsl.g:5461:8: ( ruleJvmFormalParameter )
-                	    // InternalPerspectiveDsl.g:5462:9: ruleJvmFormalParameter
+                	    // InternalPerspectiveDsl.g:5489:8: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:5490:9: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_73);
                 	    ruleJvmFormalParameter();
@@ -26592,13 +26670,13 @@
 
         }
 
-        // InternalPerspectiveDsl.g:5467:5: ( ( '|' ) )
-        // InternalPerspectiveDsl.g:5468:6: ( '|' )
+        // InternalPerspectiveDsl.g:5495:5: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:5496:6: ( '|' )
         {
-        // InternalPerspectiveDsl.g:5468:6: ( '|' )
-        // InternalPerspectiveDsl.g:5469:7: '|'
+        // InternalPerspectiveDsl.g:5496:6: ( '|' )
+        // InternalPerspectiveDsl.g:5497:7: '|'
         {
-        match(input,103,FOLLOW_2); if (state.failed) return ;
+        match(input,105,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26615,10 +26693,10 @@
 
     // $ANTLR start synpred31_InternalPerspectiveDsl
     public final void synpred31_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5860:5: ( 'else' )
-        // InternalPerspectiveDsl.g:5860:6: 'else'
+        // InternalPerspectiveDsl.g:5888:5: ( 'else' )
+        // InternalPerspectiveDsl.g:5888:6: 'else'
         {
-        match(input,105,FOLLOW_2); if (state.failed) return ;
+        match(input,107,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -26626,18 +26704,18 @@
 
     // $ANTLR start synpred32_InternalPerspectiveDsl
     public final void synpred32_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5919:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalPerspectiveDsl.g:5919:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5947:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalPerspectiveDsl.g:5947:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalPerspectiveDsl.g:5919:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalPerspectiveDsl.g:5920:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalPerspectiveDsl.g:5947:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:5948:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
         {
-        match(input,63,FOLLOW_53); if (state.failed) return ;
-        // InternalPerspectiveDsl.g:5921:7: ( ( ruleJvmFormalParameter ) )
-        // InternalPerspectiveDsl.g:5922:8: ( ruleJvmFormalParameter )
+        match(input,65,FOLLOW_53); if (state.failed) return ;
+        // InternalPerspectiveDsl.g:5949:7: ( ( ruleJvmFormalParameter ) )
+        // InternalPerspectiveDsl.g:5950:8: ( ruleJvmFormalParameter )
         {
-        // InternalPerspectiveDsl.g:5922:8: ( ruleJvmFormalParameter )
-        // InternalPerspectiveDsl.g:5923:9: ruleJvmFormalParameter
+        // InternalPerspectiveDsl.g:5950:8: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:5951:9: ruleJvmFormalParameter
         {
         pushFollow(FOLLOW_81);
         ruleJvmFormalParameter();
@@ -26650,7 +26728,7 @@
 
         }
 
-        match(input,107,FOLLOW_2); if (state.failed) return ;
+        match(input,109,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26661,17 +26739,17 @@
 
     // $ANTLR start synpred33_InternalPerspectiveDsl
     public final void synpred33_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:5986:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalPerspectiveDsl.g:5986:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:6014:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalPerspectiveDsl.g:6014:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalPerspectiveDsl.g:5986:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalPerspectiveDsl.g:5987:7: ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalPerspectiveDsl.g:6014:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalPerspectiveDsl.g:6015:7: ( ( ruleJvmFormalParameter ) ) ':'
         {
-        // InternalPerspectiveDsl.g:5987:7: ( ( ruleJvmFormalParameter ) )
-        // InternalPerspectiveDsl.g:5988:8: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:6015:7: ( ( ruleJvmFormalParameter ) )
+        // InternalPerspectiveDsl.g:6016:8: ( ruleJvmFormalParameter )
         {
-        // InternalPerspectiveDsl.g:5988:8: ( ruleJvmFormalParameter )
-        // InternalPerspectiveDsl.g:5989:9: ruleJvmFormalParameter
+        // InternalPerspectiveDsl.g:6016:8: ( ruleJvmFormalParameter )
+        // InternalPerspectiveDsl.g:6017:9: ruleJvmFormalParameter
         {
         pushFollow(FOLLOW_81);
         ruleJvmFormalParameter();
@@ -26684,7 +26762,7 @@
 
         }
 
-        match(input,107,FOLLOW_2); if (state.failed) return ;
+        match(input,109,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26695,17 +26773,17 @@
 
     // $ANTLR start synpred35_InternalPerspectiveDsl
     public final void synpred35_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:6804:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
-        // InternalPerspectiveDsl.g:6804:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalPerspectiveDsl.g:6832:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
+        // InternalPerspectiveDsl.g:6832:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
         {
-        // InternalPerspectiveDsl.g:6804:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
-        // InternalPerspectiveDsl.g:6805:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
+        // InternalPerspectiveDsl.g:6832:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalPerspectiveDsl.g:6833:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
         {
-        // InternalPerspectiveDsl.g:6805:6: ( ( ruleJvmTypeReference ) )
-        // InternalPerspectiveDsl.g:6806:7: ( ruleJvmTypeReference )
+        // InternalPerspectiveDsl.g:6833:6: ( ( ruleJvmTypeReference ) )
+        // InternalPerspectiveDsl.g:6834:7: ( ruleJvmTypeReference )
         {
-        // InternalPerspectiveDsl.g:6806:7: ( ruleJvmTypeReference )
-        // InternalPerspectiveDsl.g:6807:8: ruleJvmTypeReference
+        // InternalPerspectiveDsl.g:6834:7: ( ruleJvmTypeReference )
+        // InternalPerspectiveDsl.g:6835:8: ruleJvmTypeReference
         {
         pushFollow(FOLLOW_4);
         ruleJvmTypeReference();
@@ -26718,11 +26796,11 @@
 
         }
 
-        // InternalPerspectiveDsl.g:6810:6: ( ( ruleValidID ) )
-        // InternalPerspectiveDsl.g:6811:7: ( ruleValidID )
+        // InternalPerspectiveDsl.g:6838:6: ( ( ruleValidID ) )
+        // InternalPerspectiveDsl.g:6839:7: ( ruleValidID )
         {
-        // InternalPerspectiveDsl.g:6811:7: ( ruleValidID )
-        // InternalPerspectiveDsl.g:6812:8: ruleValidID
+        // InternalPerspectiveDsl.g:6839:7: ( ruleValidID )
+        // InternalPerspectiveDsl.g:6840:8: ruleValidID
         {
         pushFollow(FOLLOW_2);
         ruleValidID();
@@ -26745,13 +26823,13 @@
 
     // $ANTLR start synpred36_InternalPerspectiveDsl
     public final void synpred36_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7116:5: ( ( '(' ) )
-        // InternalPerspectiveDsl.g:7116:6: ( '(' )
+        // InternalPerspectiveDsl.g:7144:5: ( ( '(' ) )
+        // InternalPerspectiveDsl.g:7144:6: ( '(' )
         {
-        // InternalPerspectiveDsl.g:7116:6: ( '(' )
-        // InternalPerspectiveDsl.g:7117:6: '('
+        // InternalPerspectiveDsl.g:7144:6: ( '(' )
+        // InternalPerspectiveDsl.g:7145:6: '('
         {
-        match(input,63,FOLLOW_2); if (state.failed) return ;
+        match(input,65,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26762,33 +26840,33 @@
 
     // $ANTLR start synpred37_InternalPerspectiveDsl
     public final void synpred37_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7135:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalPerspectiveDsl.g:7135:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:7163:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:7163:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalPerspectiveDsl.g:7135:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalPerspectiveDsl.g:7136:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalPerspectiveDsl.g:7163:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:7164:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalPerspectiveDsl.g:7136:7: ()
-        // InternalPerspectiveDsl.g:7137:7: 
+        // InternalPerspectiveDsl.g:7164:7: ()
+        // InternalPerspectiveDsl.g:7165:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:7138:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        // InternalPerspectiveDsl.g:7166:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
         int alt153=2;
         int LA153_0 = input.LA(1);
 
-        if ( (LA153_0==RULE_ID||LA153_0==63||LA153_0==88) ) {
+        if ( (LA153_0==RULE_ID||LA153_0==65||LA153_0==90) ) {
             alt153=1;
         }
         switch (alt153) {
             case 1 :
-                // InternalPerspectiveDsl.g:7139:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:7167:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalPerspectiveDsl.g:7139:8: ( ( ruleJvmFormalParameter ) )
-                // InternalPerspectiveDsl.g:7140:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:7167:8: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:7168:9: ( ruleJvmFormalParameter )
                 {
-                // InternalPerspectiveDsl.g:7140:9: ( ruleJvmFormalParameter )
-                // InternalPerspectiveDsl.g:7141:10: ruleJvmFormalParameter
+                // InternalPerspectiveDsl.g:7168:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:7169:10: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_73);
                 ruleJvmFormalParameter();
@@ -26801,27 +26879,27 @@
 
                 }
 
-                // InternalPerspectiveDsl.g:7144:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:7172:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop152:
                 do {
                     int alt152=2;
                     int LA152_0 = input.LA(1);
 
-                    if ( (LA152_0==64) ) {
+                    if ( (LA152_0==66) ) {
                         alt152=1;
                     }
 
 
                     switch (alt152) {
                 	case 1 :
-                	    // InternalPerspectiveDsl.g:7145:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:7173:9: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,64,FOLLOW_53); if (state.failed) return ;
-                	    // InternalPerspectiveDsl.g:7146:9: ( ( ruleJvmFormalParameter ) )
-                	    // InternalPerspectiveDsl.g:7147:10: ( ruleJvmFormalParameter )
+                	    match(input,66,FOLLOW_53); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:7174:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:7175:10: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalPerspectiveDsl.g:7147:10: ( ruleJvmFormalParameter )
-                	    // InternalPerspectiveDsl.g:7148:11: ruleJvmFormalParameter
+                	    // InternalPerspectiveDsl.g:7175:10: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:7176:11: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_73);
                 	    ruleJvmFormalParameter();
@@ -26849,13 +26927,13 @@
 
         }
 
-        // InternalPerspectiveDsl.g:7153:7: ( ( '|' ) )
-        // InternalPerspectiveDsl.g:7154:8: ( '|' )
+        // InternalPerspectiveDsl.g:7181:7: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:7182:8: ( '|' )
         {
-        // InternalPerspectiveDsl.g:7154:8: ( '|' )
-        // InternalPerspectiveDsl.g:7155:9: '|'
+        // InternalPerspectiveDsl.g:7182:8: ( '|' )
+        // InternalPerspectiveDsl.g:7183:9: '|'
         {
-        match(input,103,FOLLOW_2); if (state.failed) return ;
+        match(input,105,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26872,18 +26950,18 @@
 
     // $ANTLR start synpred38_InternalPerspectiveDsl
     public final void synpred38_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7232:4: ( ( () '[' ) )
-        // InternalPerspectiveDsl.g:7232:5: ( () '[' )
+        // InternalPerspectiveDsl.g:7260:4: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:7260:5: ( () '[' )
         {
-        // InternalPerspectiveDsl.g:7232:5: ( () '[' )
-        // InternalPerspectiveDsl.g:7233:5: () '['
+        // InternalPerspectiveDsl.g:7260:5: ( () '[' )
+        // InternalPerspectiveDsl.g:7261:5: () '['
         {
-        // InternalPerspectiveDsl.g:7233:5: ()
-        // InternalPerspectiveDsl.g:7234:5: 
+        // InternalPerspectiveDsl.g:7261:5: ()
+        // InternalPerspectiveDsl.g:7262:5: 
         {
         }
 
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26894,10 +26972,10 @@
 
     // $ANTLR start synpred39_InternalPerspectiveDsl
     public final void synpred39_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7392:5: ( '<' )
-        // InternalPerspectiveDsl.g:7392:6: '<'
+        // InternalPerspectiveDsl.g:7420:5: ( '<' )
+        // InternalPerspectiveDsl.g:7420:6: '<'
         {
-        match(input,75,FOLLOW_2); if (state.failed) return ;
+        match(input,77,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -26905,13 +26983,13 @@
 
     // $ANTLR start synpred40_InternalPerspectiveDsl
     public final void synpred40_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7449:5: ( ( '(' ) )
-        // InternalPerspectiveDsl.g:7449:6: ( '(' )
+        // InternalPerspectiveDsl.g:7477:5: ( ( '(' ) )
+        // InternalPerspectiveDsl.g:7477:6: ( '(' )
         {
-        // InternalPerspectiveDsl.g:7449:6: ( '(' )
-        // InternalPerspectiveDsl.g:7450:6: '('
+        // InternalPerspectiveDsl.g:7477:6: ( '(' )
+        // InternalPerspectiveDsl.g:7478:6: '('
         {
-        match(input,63,FOLLOW_2); if (state.failed) return ;
+        match(input,65,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -26922,33 +27000,33 @@
 
     // $ANTLR start synpred41_InternalPerspectiveDsl
     public final void synpred41_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7468:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalPerspectiveDsl.g:7468:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:7496:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalPerspectiveDsl.g:7496:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalPerspectiveDsl.g:7468:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalPerspectiveDsl.g:7469:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalPerspectiveDsl.g:7496:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalPerspectiveDsl.g:7497:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalPerspectiveDsl.g:7469:7: ()
-        // InternalPerspectiveDsl.g:7470:7: 
+        // InternalPerspectiveDsl.g:7497:7: ()
+        // InternalPerspectiveDsl.g:7498:7: 
         {
         }
 
-        // InternalPerspectiveDsl.g:7471:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        // InternalPerspectiveDsl.g:7499:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
         int alt155=2;
         int LA155_0 = input.LA(1);
 
-        if ( (LA155_0==RULE_ID||LA155_0==63||LA155_0==88) ) {
+        if ( (LA155_0==RULE_ID||LA155_0==65||LA155_0==90) ) {
             alt155=1;
         }
         switch (alt155) {
             case 1 :
-                // InternalPerspectiveDsl.g:7472:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:7500:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalPerspectiveDsl.g:7472:8: ( ( ruleJvmFormalParameter ) )
-                // InternalPerspectiveDsl.g:7473:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:7500:8: ( ( ruleJvmFormalParameter ) )
+                // InternalPerspectiveDsl.g:7501:9: ( ruleJvmFormalParameter )
                 {
-                // InternalPerspectiveDsl.g:7473:9: ( ruleJvmFormalParameter )
-                // InternalPerspectiveDsl.g:7474:10: ruleJvmFormalParameter
+                // InternalPerspectiveDsl.g:7501:9: ( ruleJvmFormalParameter )
+                // InternalPerspectiveDsl.g:7502:10: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_73);
                 ruleJvmFormalParameter();
@@ -26961,27 +27039,27 @@
 
                 }
 
-                // InternalPerspectiveDsl.g:7477:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalPerspectiveDsl.g:7505:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop154:
                 do {
                     int alt154=2;
                     int LA154_0 = input.LA(1);
 
-                    if ( (LA154_0==64) ) {
+                    if ( (LA154_0==66) ) {
                         alt154=1;
                     }
 
 
                     switch (alt154) {
                 	case 1 :
-                	    // InternalPerspectiveDsl.g:7478:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:7506:9: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,64,FOLLOW_53); if (state.failed) return ;
-                	    // InternalPerspectiveDsl.g:7479:9: ( ( ruleJvmFormalParameter ) )
-                	    // InternalPerspectiveDsl.g:7480:10: ( ruleJvmFormalParameter )
+                	    match(input,66,FOLLOW_53); if (state.failed) return ;
+                	    // InternalPerspectiveDsl.g:7507:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalPerspectiveDsl.g:7508:10: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalPerspectiveDsl.g:7480:10: ( ruleJvmFormalParameter )
-                	    // InternalPerspectiveDsl.g:7481:11: ruleJvmFormalParameter
+                	    // InternalPerspectiveDsl.g:7508:10: ( ruleJvmFormalParameter )
+                	    // InternalPerspectiveDsl.g:7509:11: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_73);
                 	    ruleJvmFormalParameter();
@@ -27009,13 +27087,13 @@
 
         }
 
-        // InternalPerspectiveDsl.g:7486:7: ( ( '|' ) )
-        // InternalPerspectiveDsl.g:7487:8: ( '|' )
+        // InternalPerspectiveDsl.g:7514:7: ( ( '|' ) )
+        // InternalPerspectiveDsl.g:7515:8: ( '|' )
         {
-        // InternalPerspectiveDsl.g:7487:8: ( '|' )
-        // InternalPerspectiveDsl.g:7488:9: '|'
+        // InternalPerspectiveDsl.g:7515:8: ( '|' )
+        // InternalPerspectiveDsl.g:7516:9: '|'
         {
-        match(input,103,FOLLOW_2); if (state.failed) return ;
+        match(input,105,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -27032,18 +27110,18 @@
 
     // $ANTLR start synpred42_InternalPerspectiveDsl
     public final void synpred42_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7565:4: ( ( () '[' ) )
-        // InternalPerspectiveDsl.g:7565:5: ( () '[' )
+        // InternalPerspectiveDsl.g:7593:4: ( ( () '[' ) )
+        // InternalPerspectiveDsl.g:7593:5: ( () '[' )
         {
-        // InternalPerspectiveDsl.g:7565:5: ( () '[' )
-        // InternalPerspectiveDsl.g:7566:5: () '['
+        // InternalPerspectiveDsl.g:7593:5: ( () '[' )
+        // InternalPerspectiveDsl.g:7594:5: () '['
         {
-        // InternalPerspectiveDsl.g:7566:5: ()
-        // InternalPerspectiveDsl.g:7567:5: 
+        // InternalPerspectiveDsl.g:7594:5: ()
+        // InternalPerspectiveDsl.g:7595:5: 
         {
         }
 
-        match(input,68,FOLLOW_2); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -27054,10 +27132,10 @@
 
     // $ANTLR start synpred43_InternalPerspectiveDsl
     public final void synpred43_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7908:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )
+        // InternalPerspectiveDsl.g:7936:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )
         // InternalPerspectiveDsl.g:
         {
-        if ( (input.LA(1)>=RULE_ID && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||(input.LA(1)>=56 && input.LA(1)<=58)||input.LA(1)==63||(input.LA(1)>=67 && input.LA(1)<=68)||input.LA(1)==75||(input.LA(1)>=91 && input.LA(1)<=92)||input.LA(1)==96||input.LA(1)==104||input.LA(1)==106||(input.LA(1)>=110 && input.LA(1)<=112)||(input.LA(1)>=115 && input.LA(1)<=124)||input.LA(1)==126 ) {
+        if ( (input.LA(1)>=RULE_ID && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||(input.LA(1)>=58 && input.LA(1)<=60)||input.LA(1)==65||(input.LA(1)>=69 && input.LA(1)<=70)||input.LA(1)==77||(input.LA(1)>=93 && input.LA(1)<=94)||input.LA(1)==98||input.LA(1)==106||input.LA(1)==108||(input.LA(1)>=112 && input.LA(1)<=114)||(input.LA(1)>=117 && input.LA(1)<=126)||input.LA(1)==128 ) {
             input.consume();
             state.errorRecovery=false;state.failed=false;
         }
@@ -27074,10 +27152,10 @@
 
     // $ANTLR start synpred44_InternalPerspectiveDsl
     public final void synpred44_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:7979:6: ( 'catch' )
-        // InternalPerspectiveDsl.g:7979:7: 'catch'
+        // InternalPerspectiveDsl.g:8007:6: ( 'catch' )
+        // InternalPerspectiveDsl.g:8007:7: 'catch'
         {
-        match(input,127,FOLLOW_2); if (state.failed) return ;
+        match(input,129,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -27085,10 +27163,10 @@
 
     // $ANTLR start synpred45_InternalPerspectiveDsl
     public final void synpred45_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8000:7: ( 'finally' )
-        // InternalPerspectiveDsl.g:8000:8: 'finally'
+        // InternalPerspectiveDsl.g:8028:7: ( 'finally' )
+        // InternalPerspectiveDsl.g:8028:8: 'finally'
         {
-        match(input,125,FOLLOW_2); if (state.failed) return ;
+        match(input,127,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -27096,10 +27174,10 @@
 
     // $ANTLR start synpred48_InternalPerspectiveDsl
     public final void synpred48_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8244:5: ( '.' )
-        // InternalPerspectiveDsl.g:8244:6: '.'
+        // InternalPerspectiveDsl.g:8272:5: ( '.' )
+        // InternalPerspectiveDsl.g:8272:6: '.'
         {
-        match(input,100,FOLLOW_2); if (state.failed) return ;
+        match(input,102,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -27107,14 +27185,14 @@
 
     // $ANTLR start synpred49_InternalPerspectiveDsl
     public final void synpred49_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8370:5: ( ( () ruleArrayBrackets ) )
-        // InternalPerspectiveDsl.g:8370:6: ( () ruleArrayBrackets )
+        // InternalPerspectiveDsl.g:8398:5: ( ( () ruleArrayBrackets ) )
+        // InternalPerspectiveDsl.g:8398:6: ( () ruleArrayBrackets )
         {
-        // InternalPerspectiveDsl.g:8370:6: ( () ruleArrayBrackets )
-        // InternalPerspectiveDsl.g:8371:6: () ruleArrayBrackets
+        // InternalPerspectiveDsl.g:8398:6: ( () ruleArrayBrackets )
+        // InternalPerspectiveDsl.g:8399:6: () ruleArrayBrackets
         {
-        // InternalPerspectiveDsl.g:8371:6: ()
-        // InternalPerspectiveDsl.g:8372:6: 
+        // InternalPerspectiveDsl.g:8399:6: ()
+        // InternalPerspectiveDsl.g:8400:6: 
         {
         }
 
@@ -27133,10 +27211,10 @@
 
     // $ANTLR start synpred50_InternalPerspectiveDsl
     public final void synpred50_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8567:5: ( '<' )
-        // InternalPerspectiveDsl.g:8567:6: '<'
+        // InternalPerspectiveDsl.g:8595:5: ( '<' )
+        // InternalPerspectiveDsl.g:8595:6: '<'
         {
-        match(input,75,FOLLOW_2); if (state.failed) return ;
+        match(input,77,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -27144,18 +27222,18 @@
 
     // $ANTLR start synpred51_InternalPerspectiveDsl
     public final void synpred51_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8623:6: ( ( () '.' ) )
-        // InternalPerspectiveDsl.g:8623:7: ( () '.' )
+        // InternalPerspectiveDsl.g:8651:6: ( ( () '.' ) )
+        // InternalPerspectiveDsl.g:8651:7: ( () '.' )
         {
-        // InternalPerspectiveDsl.g:8623:7: ( () '.' )
-        // InternalPerspectiveDsl.g:8624:7: () '.'
+        // InternalPerspectiveDsl.g:8651:7: ( () '.' )
+        // InternalPerspectiveDsl.g:8652:7: () '.'
         {
-        // InternalPerspectiveDsl.g:8624:7: ()
-        // InternalPerspectiveDsl.g:8625:7: 
+        // InternalPerspectiveDsl.g:8652:7: ()
+        // InternalPerspectiveDsl.g:8653:7: 
         {
         }
 
-        match(input,100,FOLLOW_2); if (state.failed) return ;
+        match(input,102,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -27166,10 +27244,10 @@
 
     // $ANTLR start synpred52_InternalPerspectiveDsl
     public final void synpred52_InternalPerspectiveDsl_fragment() throws RecognitionException {   
-        // InternalPerspectiveDsl.g:8661:7: ( '<' )
-        // InternalPerspectiveDsl.g:8661:8: '<'
+        // InternalPerspectiveDsl.g:8689:7: ( '<' )
+        // InternalPerspectiveDsl.g:8689:8: '<'
         {
-        match(input,75,FOLLOW_2); if (state.failed) return ;
+        match(input,77,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -27834,20 +27912,20 @@
     protected DFA136 dfa136 = new DFA136(this);
     protected DFA134 dfa134 = new DFA134(this);
     static final String dfa_1s = "\10\uffff";
-    static final String dfa_2s = "\2\uffff\1\5\4\uffff\1\5";
-    static final String dfa_3s = "\1\4\1\uffff\1\15\1\uffff\1\4\2\uffff\1\15";
-    static final String dfa_4s = "\1\74\1\uffff\1\144\1\uffff\1\73\2\uffff\1\144";
-    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\3\1\uffff";
+    static final String dfa_2s = "\2\uffff\1\5\3\uffff\1\5\1\uffff";
+    static final String dfa_3s = "\1\4\1\uffff\1\15\1\uffff\1\4\1\uffff\1\15\1\uffff";
+    static final String dfa_4s = "\1\76\1\uffff\1\146\1\uffff\1\75\1\uffff\1\146\1\uffff";
+    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\uffff\1\3";
     static final String dfa_6s = "\10\uffff}>";
     static final String[] dfa_7s = {
-            "\1\2\64\uffff\1\1\2\uffff\1\3",
+            "\1\2\66\uffff\1\1\2\uffff\1\3",
             "",
-            "\1\5\52\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
+            "\1\5\54\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
             "",
-            "\1\7\66\uffff\1\6",
+            "\1\6\70\uffff\1\7",
             "",
-            "",
-            "\1\5\52\uffff\1\5\4\uffff\1\5\46\uffff\1\4"
+            "\1\5\54\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
+            ""
     };
 
     static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
@@ -27872,16 +27950,16 @@
             this.transition = dfa_7;
         }
         public String getDescription() {
-            return "2337:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )";
+            return "2365:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )";
         }
     }
     static final String dfa_8s = "\44\uffff";
     static final String dfa_9s = "\1\4\1\0\42\uffff";
-    static final String dfa_10s = "\1\176\1\0\42\uffff";
+    static final String dfa_10s = "\1\u0080\1\0\42\uffff";
     static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\3\1\1";
     static final String dfa_12s = "\1\uffff\1\0\42\uffff}>";
     static final String[] dfa_13s = {
-            "\1\1\4\2\5\uffff\1\2\51\uffff\3\2\3\uffff\2\2\1\uffff\1\42\1\uffff\2\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\1\1\4\2\5\uffff\1\2\53\uffff\3\2\3\uffff\2\2\1\uffff\1\42\1\uffff\2\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -27940,7 +28018,7 @@
             this.transition = dfa_13;
         }
         public String getDescription() {
-            return "2554:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?";
+            return "2582:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -27971,11 +28049,11 @@
     }
     static final String dfa_14s = "\43\uffff";
     static final String dfa_15s = "\1\4\1\0\41\uffff";
-    static final String dfa_16s = "\1\176\1\0\41\uffff";
+    static final String dfa_16s = "\1\u0080\1\0\41\uffff";
     static final String dfa_17s = "\2\uffff\1\2\37\uffff\1\1";
     static final String dfa_18s = "\1\uffff\1\0\41\uffff}>";
     static final String[] dfa_19s = {
-            "\5\2\5\uffff\1\2\51\uffff\3\2\3\uffff\2\2\3\uffff\1\1\1\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\5\2\5\uffff\1\2\53\uffff\3\2\3\uffff\2\2\3\uffff\1\1\1\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -28033,7 +28111,7 @@
             this.transition = dfa_19;
         }
         public String getDescription() {
-            return "2734:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )";
+            return "2762:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28077,7 +28155,7 @@
             this.transition = dfa_19;
         }
         public String getDescription() {
-            return "2876:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )";
+            return "2904:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28109,11 +28187,11 @@
     static final String dfa_20s = "\12\uffff";
     static final String dfa_21s = "\1\10\11\uffff";
     static final String dfa_22s = "\1\4\7\0\2\uffff";
-    static final String dfa_23s = "\1\177\7\0\2\uffff";
+    static final String dfa_23s = "\1\u0081\7\0\2\uffff";
     static final String dfa_24s = "\10\uffff\1\2\1\1";
-    static final String dfa_25s = "\1\uffff\1\2\1\3\1\4\1\5\1\6\1\1\1\0\2\uffff}>";
+    static final String dfa_25s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\0\2\uffff}>";
     static final String[] dfa_26s = {
-            "\5\10\5\uffff\2\10\50\uffff\4\10\1\uffff\1\10\1\uffff\3\10\1\uffff\3\10\1\1\1\2\1\3\1\4\1\5\1\6\1\7\32\10\1\uffff\30\10",
+            "\5\10\5\uffff\2\10\52\uffff\4\10\1\uffff\1\10\1\uffff\3\10\1\uffff\3\10\1\1\1\2\1\3\1\4\1\5\1\6\1\7\32\10\1\uffff\30\10",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -28147,7 +28225,7 @@
             this.transition = dfa_26;
         }
         public String getDescription() {
-            return "3105:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
+            return "3133:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28169,21 +28247,6 @@
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA36_6 = input.LA(1);
-
-                         
-                        int index36_6 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index36_6);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
                         int LA36_1 = input.LA(1);
 
                          
@@ -28198,7 +28261,7 @@
                         input.seek(index36_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 3 : 
+                    case 2 : 
                         int LA36_2 = input.LA(1);
 
                          
@@ -28213,7 +28276,7 @@
                         input.seek(index36_2);
                         if ( s>=0 ) return s;
                         break;
-                    case 4 : 
+                    case 3 : 
                         int LA36_3 = input.LA(1);
 
                          
@@ -28228,7 +28291,7 @@
                         input.seek(index36_3);
                         if ( s>=0 ) return s;
                         break;
-                    case 5 : 
+                    case 4 : 
                         int LA36_4 = input.LA(1);
 
                          
@@ -28243,7 +28306,7 @@
                         input.seek(index36_4);
                         if ( s>=0 ) return s;
                         break;
-                    case 6 : 
+                    case 5 : 
                         int LA36_5 = input.LA(1);
 
                          
@@ -28258,6 +28321,21 @@
                         input.seek(index36_5);
                         if ( s>=0 ) return s;
                         break;
+                    case 6 : 
+                        int LA36_6 = input.LA(1);
+
+                         
+                        int index36_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalPerspectiveDsl()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index36_6);
+                        if ( s>=0 ) return s;
+                        break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
@@ -28269,11 +28347,11 @@
     static final String dfa_27s = "\13\uffff";
     static final String dfa_28s = "\1\1\12\uffff";
     static final String dfa_29s = "\1\4\1\uffff\10\0\1\uffff";
-    static final String dfa_30s = "\1\177\1\uffff\10\0\1\uffff";
+    static final String dfa_30s = "\1\u0081\1\uffff\10\0\1\uffff";
     static final String dfa_31s = "\1\uffff\1\2\10\uffff\1\1";
-    static final String dfa_32s = "\2\uffff\1\5\1\0\1\6\1\7\1\4\1\1\1\2\1\3\1\uffff}>";
+    static final String dfa_32s = "\2\uffff\1\4\1\5\1\6\1\7\1\3\1\0\1\1\1\2\1\uffff}>";
     static final String[] dfa_33s = {
-            "\5\1\5\uffff\2\1\50\uffff\4\1\1\uffff\1\1\1\uffff\3\1\1\uffff\10\1\1\2\1\3\10\1\1\4\1\5\1\6\1\7\1\10\1\11\14\1\1\uffff\30\1",
+            "\5\1\5\uffff\2\1\52\uffff\4\1\1\uffff\1\1\1\uffff\3\1\1\uffff\10\1\1\2\1\3\10\1\1\4\1\5\1\6\1\7\1\10\1\11\14\1\1\uffff\30\1",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -28308,28 +28386,13 @@
             this.transition = dfa_33;
         }
         public String getDescription() {
-            return "()* loopback of 3819:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
+            return "()* loopback of 3847:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA46_3 = input.LA(1);
-
-                         
-                        int index46_3 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
-
-                        else if ( (true) ) {s = 1;}
-
-                         
-                        input.seek(index46_3);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
                         int LA46_7 = input.LA(1);
 
                          
@@ -28344,7 +28407,7 @@
                         input.seek(index46_7);
                         if ( s>=0 ) return s;
                         break;
-                    case 2 : 
+                    case 1 : 
                         int LA46_8 = input.LA(1);
 
                          
@@ -28359,7 +28422,7 @@
                         input.seek(index46_8);
                         if ( s>=0 ) return s;
                         break;
-                    case 3 : 
+                    case 2 : 
                         int LA46_9 = input.LA(1);
 
                          
@@ -28374,7 +28437,7 @@
                         input.seek(index46_9);
                         if ( s>=0 ) return s;
                         break;
-                    case 4 : 
+                    case 3 : 
                         int LA46_6 = input.LA(1);
 
                          
@@ -28389,7 +28452,7 @@
                         input.seek(index46_6);
                         if ( s>=0 ) return s;
                         break;
-                    case 5 : 
+                    case 4 : 
                         int LA46_2 = input.LA(1);
 
                          
@@ -28404,6 +28467,21 @@
                         input.seek(index46_2);
                         if ( s>=0 ) return s;
                         break;
+                    case 5 : 
+                        int LA46_3 = input.LA(1);
+
+                         
+                        int index46_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalPerspectiveDsl()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index46_3);
+                        if ( s>=0 ) return s;
+                        break;
                     case 6 : 
                         int LA46_4 = input.LA(1);
 
@@ -28442,15 +28520,15 @@
             throw nvae;
         }
     }
-    static final String dfa_34s = "\1\113\2\uffff\1\114\7\uffff";
-    static final String dfa_35s = "\1\132\2\uffff\1\127\7\uffff";
-    static final String dfa_36s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\6\1\3";
+    static final String dfa_34s = "\1\115\2\uffff\1\116\7\uffff";
+    static final String dfa_35s = "\1\134\2\uffff\1\131\7\uffff";
+    static final String dfa_36s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\3\1\6";
     static final String dfa_37s = "\13\uffff}>";
     static final String[] dfa_38s = {
             "\1\6\1\3\10\uffff\1\1\1\2\1\4\1\5\1\7\1\10",
             "",
             "",
-            "\1\11\12\uffff\1\12",
+            "\1\12\12\uffff\1\11",
             "",
             "",
             "",
@@ -28479,17 +28557,17 @@
             this.transition = dfa_38;
         }
         public String getDescription() {
-            return "3895:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )";
+            return "3923:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )";
         }
     }
     static final String dfa_39s = "\116\uffff";
     static final String dfa_40s = "\1\2\115\uffff";
     static final String dfa_41s = "\1\4\1\0\114\uffff";
-    static final String dfa_42s = "\1\177\1\0\114\uffff";
+    static final String dfa_42s = "\1\u0081\1\0\114\uffff";
     static final String dfa_43s = "\2\uffff\1\2\112\uffff\1\1";
     static final String dfa_44s = "\1\uffff\1\0\114\uffff}>";
     static final String[] dfa_45s = {
-            "\5\2\5\uffff\2\2\50\uffff\4\2\1\uffff\1\2\1\uffff\1\1\2\2\1\uffff\44\2\1\uffff\30\2",
+            "\5\2\5\uffff\2\2\52\uffff\4\2\1\uffff\1\2\1\uffff\1\1\2\2\1\uffff\44\2\1\uffff\30\2",
             "\1\uffff",
             "",
             "",
@@ -28591,7 +28669,7 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "4796:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?";
+            return "4824:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28621,11 +28699,11 @@
         }
     }
     static final String dfa_46s = "\1\4\2\0\41\uffff";
-    static final String dfa_47s = "\1\176\2\0\41\uffff";
+    static final String dfa_47s = "\1\u0080\2\0\41\uffff";
     static final String dfa_48s = "\3\uffff\2\1\1\2\35\uffff\1\3";
     static final String dfa_49s = "\1\0\1\1\1\2\41\uffff}>";
     static final String[] dfa_50s = {
-            "\1\1\4\5\5\uffff\1\5\51\uffff\3\5\4\uffff\1\2\1\uffff\1\43\1\uffff\2\5\6\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\3\5\2\uffff\12\5\1\uffff\1\5",
+            "\1\1\4\5\5\uffff\1\5\53\uffff\3\5\4\uffff\1\2\1\uffff\1\43\1\uffff\2\5\6\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\3\5\2\uffff\12\5\1\uffff\1\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -28682,7 +28760,7 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "4815:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?";
+            return "4843:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28697,15 +28775,15 @@
                         s = -1;
                         if ( (LA64_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA64_0==63) ) {s = 2;}
+                        else if ( (LA64_0==65) ) {s = 2;}
 
-                        else if ( (LA64_0==88) && (synpred23_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA64_0==90) && (synpred23_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( (LA64_0==103) && (synpred23_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA64_0==105) && (synpred23_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( ((LA64_0>=RULE_STRING && LA64_0<=RULE_DECIMAL)||LA64_0==14||(LA64_0>=56 && LA64_0<=58)||(LA64_0>=67 && LA64_0<=68)||LA64_0==75||(LA64_0>=91 && LA64_0<=92)||LA64_0==96||LA64_0==104||LA64_0==106||(LA64_0>=110 && LA64_0<=112)||(LA64_0>=115 && LA64_0<=124)||LA64_0==126) ) {s = 5;}
+                        else if ( ((LA64_0>=RULE_STRING && LA64_0<=RULE_DECIMAL)||LA64_0==14||(LA64_0>=58 && LA64_0<=60)||(LA64_0>=69 && LA64_0<=70)||LA64_0==77||(LA64_0>=93 && LA64_0<=94)||LA64_0==98||LA64_0==106||LA64_0==108||(LA64_0>=112 && LA64_0<=114)||(LA64_0>=117 && LA64_0<=126)||LA64_0==128) ) {s = 5;}
 
-                        else if ( (LA64_0==65) ) {s = 35;}
+                        else if ( (LA64_0==67) ) {s = 35;}
 
                          
                         input.seek(index64_0);
@@ -28750,7 +28828,7 @@
         }
     }
     static final String[] dfa_51s = {
-            "\5\2\5\uffff\2\2\50\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\1\2\1\1\42\2\1\uffff\30\2",
+            "\5\2\5\uffff\2\2\52\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\1\2\1\1\42\2\1\uffff\30\2",
             "\1\uffff",
             "",
             "",
@@ -28845,7 +28923,7 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "4913:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
+            return "4941:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28876,11 +28954,11 @@
     }
     static final String dfa_52s = "\40\uffff";
     static final String dfa_53s = "\1\4\26\uffff\1\0\10\uffff";
-    static final String dfa_54s = "\1\176\26\uffff\1\0\10\uffff";
+    static final String dfa_54s = "\1\u0080\26\uffff\1\0\10\uffff";
     static final String dfa_55s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
     static final String dfa_56s = "\1\0\26\uffff\1\1\10\uffff}>";
     static final String[] dfa_57s = {
-            "\1\5\4\14\5\uffff\1\2\51\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\34\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\2\uffff\2\5\1\1\4\14\1\32\1\33\1\34\1\uffff\1\4",
+            "\1\5\4\14\5\uffff\1\2\53\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\34\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\2\uffff\2\5\1\1\4\14\1\32\1\33\1\34\1\uffff\1\4",
             "",
             "",
             "",
@@ -28935,7 +29013,7 @@
             this.transition = dfa_57;
         }
         public String getDescription() {
-            return "4958:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )";
+            return "4986:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -28948,33 +29026,33 @@
                         int index68_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA68_0==117) ) {s = 1;}
+                        if ( (LA68_0==119) ) {s = 1;}
 
                         else if ( (LA68_0==14) ) {s = 2;}
 
-                        else if ( (LA68_0==106) ) {s = 3;}
+                        else if ( (LA68_0==108) ) {s = 3;}
 
-                        else if ( (LA68_0==126) && (synpred25_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA68_0==128) && (synpred25_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( (LA68_0==RULE_ID||(LA68_0>=56 && LA68_0<=58)||LA68_0==75||(LA68_0>=115 && LA68_0<=116)) ) {s = 5;}
+                        else if ( (LA68_0==RULE_ID||(LA68_0>=58 && LA68_0<=60)||LA68_0==77||(LA68_0>=117 && LA68_0<=118)) ) {s = 5;}
 
-                        else if ( ((LA68_0>=RULE_STRING && LA68_0<=RULE_DECIMAL)||(LA68_0>=67 && LA68_0<=68)||(LA68_0>=118 && LA68_0<=121)) ) {s = 12;}
+                        else if ( ((LA68_0>=RULE_STRING && LA68_0<=RULE_DECIMAL)||(LA68_0>=69 && LA68_0<=70)||(LA68_0>=120 && LA68_0<=123)) ) {s = 12;}
 
-                        else if ( (LA68_0==104) ) {s = 22;}
+                        else if ( (LA68_0==106) ) {s = 22;}
 
-                        else if ( (LA68_0==110) ) {s = 23;}
+                        else if ( (LA68_0==112) ) {s = 23;}
 
-                        else if ( (LA68_0==111) ) {s = 24;}
+                        else if ( (LA68_0==113) ) {s = 24;}
 
-                        else if ( (LA68_0==112) ) {s = 25;}
+                        else if ( (LA68_0==114) ) {s = 25;}
 
-                        else if ( (LA68_0==122) ) {s = 26;}
+                        else if ( (LA68_0==124) ) {s = 26;}
 
-                        else if ( (LA68_0==123) ) {s = 27;}
+                        else if ( (LA68_0==125) ) {s = 27;}
 
-                        else if ( (LA68_0==124) ) {s = 28;}
+                        else if ( (LA68_0==126) ) {s = 28;}
 
-                        else if ( (LA68_0==63) ) {s = 29;}
+                        else if ( (LA68_0==65) ) {s = 29;}
 
                          
                         input.seek(index68_0);
@@ -29005,11 +29083,11 @@
     }
     static final String dfa_58s = "\46\uffff";
     static final String dfa_59s = "\1\4\2\0\43\uffff";
-    static final String dfa_60s = "\1\176\2\0\43\uffff";
+    static final String dfa_60s = "\1\u0080\2\0\43\uffff";
     static final String dfa_61s = "\3\uffff\2\1\1\2\40\uffff";
     static final String dfa_62s = "\1\0\1\1\1\2\43\uffff}>";
     static final String[] dfa_63s = {
-            "\1\1\4\5\5\uffff\1\5\51\uffff\3\5\4\uffff\1\2\3\uffff\3\5\5\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\17\5\1\uffff\1\5",
+            "\1\1\4\5\5\uffff\1\5\53\uffff\3\5\4\uffff\1\2\3\uffff\3\5\5\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\17\5\1\uffff\1\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -29070,7 +29148,7 @@
             this.transition = dfa_63;
         }
         public String getDescription() {
-            return "5450:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
+            return "5478:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29085,13 +29163,13 @@
                         s = -1;
                         if ( (LA77_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA77_0==63) ) {s = 2;}
+                        else if ( (LA77_0==65) ) {s = 2;}
 
-                        else if ( (LA77_0==88) && (synpred29_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA77_0==90) && (synpred29_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( (LA77_0==103) && (synpred29_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA77_0==105) && (synpred29_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( ((LA77_0>=RULE_STRING && LA77_0<=RULE_DECIMAL)||LA77_0==14||(LA77_0>=56 && LA77_0<=58)||(LA77_0>=67 && LA77_0<=69)||LA77_0==75||(LA77_0>=91 && LA77_0<=92)||LA77_0==96||LA77_0==104||LA77_0==106||(LA77_0>=110 && LA77_0<=124)||LA77_0==126) ) {s = 5;}
+                        else if ( ((LA77_0>=RULE_STRING && LA77_0<=RULE_DECIMAL)||LA77_0==14||(LA77_0>=58 && LA77_0<=60)||(LA77_0>=69 && LA77_0<=71)||LA77_0==77||(LA77_0>=93 && LA77_0<=94)||LA77_0==98||LA77_0==106||LA77_0==108||(LA77_0>=112 && LA77_0<=126)||LA77_0==128) ) {s = 5;}
 
                          
                         input.seek(index77_0);
@@ -29136,7 +29214,7 @@
         }
     }
     static final String[] dfa_64s = {
-            "\5\2\5\uffff\1\2\51\uffff\3\2\4\uffff\1\1\3\uffff\2\2\6\uffff\1\2\14\uffff\1\2\2\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\5\2\5\uffff\1\2\53\uffff\3\2\4\uffff\1\1\3\uffff\2\2\6\uffff\1\2\14\uffff\1\2\2\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -29188,7 +29266,7 @@
             this.transition = dfa_64;
         }
         public String getDescription() {
-            return "5916:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )";
+            return "5944:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29219,11 +29297,11 @@
     }
     static final String dfa_65s = "\42\uffff";
     static final String dfa_66s = "\1\4\2\0\37\uffff";
-    static final String dfa_67s = "\1\176\2\0\37\uffff";
+    static final String dfa_67s = "\1\u0080\2\0\37\uffff";
     static final String dfa_68s = "\3\uffff\1\1\1\2\35\uffff";
     static final String dfa_69s = "\1\0\1\1\1\2\37\uffff}>";
     static final String[] dfa_70s = {
-            "\1\1\4\4\5\uffff\1\4\51\uffff\3\4\4\uffff\1\2\3\uffff\2\4\6\uffff\1\4\14\uffff\1\3\2\uffff\2\4\3\uffff\1\4\7\uffff\1\4\1\uffff\1\4\3\uffff\3\4\2\uffff\12\4\1\uffff\1\4",
+            "\1\1\4\4\5\uffff\1\4\53\uffff\3\4\4\uffff\1\2\3\uffff\2\4\6\uffff\1\4\14\uffff\1\3\2\uffff\2\4\3\uffff\1\4\7\uffff\1\4\1\uffff\1\4\3\uffff\3\4\2\uffff\12\4\1\uffff\1\4",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -29280,7 +29358,7 @@
             this.transition = dfa_70;
         }
         public String getDescription() {
-            return "5985:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
+            return "6013:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29295,11 +29373,11 @@
                         s = -1;
                         if ( (LA83_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA83_0==63) ) {s = 2;}
+                        else if ( (LA83_0==65) ) {s = 2;}
 
-                        else if ( (LA83_0==88) && (synpred33_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA83_0==90) && (synpred33_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( ((LA83_0>=RULE_STRING && LA83_0<=RULE_DECIMAL)||LA83_0==14||(LA83_0>=56 && LA83_0<=58)||(LA83_0>=67 && LA83_0<=68)||LA83_0==75||(LA83_0>=91 && LA83_0<=92)||LA83_0==96||LA83_0==104||LA83_0==106||(LA83_0>=110 && LA83_0<=112)||(LA83_0>=115 && LA83_0<=124)||LA83_0==126) ) {s = 4;}
+                        else if ( ((LA83_0>=RULE_STRING && LA83_0<=RULE_DECIMAL)||LA83_0==14||(LA83_0>=58 && LA83_0<=60)||(LA83_0>=69 && LA83_0<=70)||LA83_0==77||(LA83_0>=93 && LA83_0<=94)||LA83_0==98||LA83_0==106||LA83_0==108||(LA83_0>=112 && LA83_0<=114)||(LA83_0>=117 && LA83_0<=126)||LA83_0==128) ) {s = 4;}
 
                          
                         input.seek(index83_0);
@@ -29358,7 +29436,7 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "7114:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?";
+            return "7142:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29402,7 +29480,7 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "7133:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?";
+            return "7161:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29417,15 +29495,15 @@
                         s = -1;
                         if ( (LA105_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA105_0==63) ) {s = 2;}
+                        else if ( (LA105_0==65) ) {s = 2;}
 
-                        else if ( (LA105_0==88) && (synpred37_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA105_0==90) && (synpred37_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( (LA105_0==103) && (synpred37_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA105_0==105) && (synpred37_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( ((LA105_0>=RULE_STRING && LA105_0<=RULE_DECIMAL)||LA105_0==14||(LA105_0>=56 && LA105_0<=58)||(LA105_0>=67 && LA105_0<=68)||LA105_0==75||(LA105_0>=91 && LA105_0<=92)||LA105_0==96||LA105_0==104||LA105_0==106||(LA105_0>=110 && LA105_0<=112)||(LA105_0>=115 && LA105_0<=124)||LA105_0==126) ) {s = 5;}
+                        else if ( ((LA105_0>=RULE_STRING && LA105_0<=RULE_DECIMAL)||LA105_0==14||(LA105_0>=58 && LA105_0<=60)||(LA105_0>=69 && LA105_0<=70)||LA105_0==77||(LA105_0>=93 && LA105_0<=94)||LA105_0==98||LA105_0==106||LA105_0==108||(LA105_0>=112 && LA105_0<=114)||(LA105_0>=117 && LA105_0<=126)||LA105_0==128) ) {s = 5;}
 
-                        else if ( (LA105_0==65) ) {s = 35;}
+                        else if ( (LA105_0==67) ) {s = 35;}
 
                          
                         input.seek(index105_0);
@@ -29484,7 +29562,7 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "7231:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
+            return "7259:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29514,7 +29592,7 @@
         }
     }
     static final String[] dfa_71s = {
-            "\5\2\5\uffff\2\2\50\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\30\2",
+            "\5\2\5\uffff\2\2\52\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\30\2",
             "\1\uffff",
             "",
             "",
@@ -29609,7 +29687,7 @@
             this.transition = dfa_71;
         }
         public String getDescription() {
-            return "7390:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
+            return "7418:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29653,7 +29731,7 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "7447:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
+            return "7475:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29697,7 +29775,7 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "7466:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
+            return "7494:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29712,15 +29790,15 @@
                         s = -1;
                         if ( (LA113_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA113_0==63) ) {s = 2;}
+                        else if ( (LA113_0==65) ) {s = 2;}
 
-                        else if ( (LA113_0==88) && (synpred41_InternalPerspectiveDsl())) {s = 3;}
+                        else if ( (LA113_0==90) && (synpred41_InternalPerspectiveDsl())) {s = 3;}
 
-                        else if ( (LA113_0==103) && (synpred41_InternalPerspectiveDsl())) {s = 4;}
+                        else if ( (LA113_0==105) && (synpred41_InternalPerspectiveDsl())) {s = 4;}
 
-                        else if ( ((LA113_0>=RULE_STRING && LA113_0<=RULE_DECIMAL)||LA113_0==14||(LA113_0>=56 && LA113_0<=58)||(LA113_0>=67 && LA113_0<=68)||LA113_0==75||(LA113_0>=91 && LA113_0<=92)||LA113_0==96||LA113_0==104||LA113_0==106||(LA113_0>=110 && LA113_0<=112)||(LA113_0>=115 && LA113_0<=124)||LA113_0==126) ) {s = 5;}
+                        else if ( ((LA113_0>=RULE_STRING && LA113_0<=RULE_DECIMAL)||LA113_0==14||(LA113_0>=58 && LA113_0<=60)||(LA113_0>=69 && LA113_0<=70)||LA113_0==77||(LA113_0>=93 && LA113_0<=94)||LA113_0==98||LA113_0==106||LA113_0==108||(LA113_0>=112 && LA113_0<=114)||(LA113_0>=117 && LA113_0<=126)||LA113_0==128) ) {s = 5;}
 
-                        else if ( (LA113_0==65) ) {s = 35;}
+                        else if ( (LA113_0==67) ) {s = 35;}
 
                          
                         input.seek(index113_0);
@@ -29779,7 +29857,7 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "7564:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
+            return "7592:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -29810,11 +29888,11 @@
     }
     static final String dfa_72s = "\1\41\115\uffff";
     static final String dfa_73s = "\1\4\40\0\55\uffff";
-    static final String dfa_74s = "\1\177\40\0\55\uffff";
+    static final String dfa_74s = "\1\u0081\40\0\55\uffff";
     static final String dfa_75s = "\41\uffff\1\2\53\uffff\1\1";
     static final String dfa_76s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
     static final String[] dfa_77s = {
-            "\1\1\1\27\1\24\1\23\1\25\5\uffff\1\12\1\41\50\uffff\1\4\1\3\1\5\1\41\1\uffff\1\41\1\uffff\1\40\2\41\1\uffff\1\17\1\20\6\41\1\15\17\41\1\10\1\7\3\41\1\6\6\41\1\uffff\1\31\1\41\1\13\3\41\1\32\1\33\1\34\2\41\1\2\1\16\1\11\1\21\1\22\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41",
+            "\1\1\1\27\1\24\1\23\1\25\5\uffff\1\12\1\41\52\uffff\1\4\1\3\1\5\1\41\1\uffff\1\41\1\uffff\1\40\2\41\1\uffff\1\17\1\20\6\41\1\15\17\41\1\10\1\7\3\41\1\6\6\41\1\uffff\1\31\1\41\1\13\3\41\1\32\1\33\1\34\2\41\1\2\1\16\1\11\1\21\1\22\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -29914,7 +29992,7 @@
             this.transition = dfa_77;
         }
         public String getDescription() {
-            return "7907:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?";
+            return "7935:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -30411,11 +30489,11 @@
     static final String dfa_78s = "\117\uffff";
     static final String dfa_79s = "\1\2\116\uffff";
     static final String dfa_80s = "\1\4\1\0\115\uffff";
-    static final String dfa_81s = "\1\u0081\1\0\115\uffff";
+    static final String dfa_81s = "\1\u0083\1\0\115\uffff";
     static final String dfa_82s = "\2\uffff\1\2\113\uffff\1\1";
     static final String dfa_83s = "\1\uffff\1\0\115\uffff}>";
     static final String[] dfa_84s = {
-            "\5\2\5\uffff\2\2\50\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\30\2\1\uffff\1\2",
+            "\5\2\5\uffff\2\2\52\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\30\2\1\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -30518,7 +30596,7 @@
             this.transition = dfa_84;
         }
         public String getDescription() {
-            return "8565:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?";
+            return "8593:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -30562,7 +30640,7 @@
             this.transition = dfa_84;
         }
         public String getDescription() {
-            return "8659:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?";
+            return "8687:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -30604,106 +30682,106 @@
     public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000744000L});
     public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000080000L});
     public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000704000L});
-    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000031808000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000051808000L});
     public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000008000L});
     public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x000000000E204000L});
-    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x000000000000000CL});
-    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000031008000L});
-    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x000000000C204000L});
-    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x00000000C8300002L});
-    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0078CFFC00000000L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000030L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000051008000L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x000000002C204000L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000388200002L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x01E33FF000000000L});
     public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000100008000L});
-    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000400008000L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000800000000L});
     public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000008010L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000200000000000L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000020000000000L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0001000000000000L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0006000000000002L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000800000000000L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0004000000000000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0018000000000002L});
     public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0080000000000000L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x1200000000000010L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0400000000000010L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0800000000000010L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x2000000000000002L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0xC7000000000041F0L,0x5FF9C5011800081AL});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000003L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0xC7000000000041F0L,0x5FF9C50118000818L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0xC7000000000041F0L,0x5FF9C50118000838L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000021L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001FC0L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000000L,0x0000000000003000L});
-    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000002L,0x00000000000F0000L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000000002L,0x0000000000103800L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x8000000000000010L,0x0000000001000000L});
-    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000002L,0x0000000007E01800L});
-    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000800L});
-    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000000002L,0x0000000018000000L});
-    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0800000000000002L,0x00000000E0000000L});
-    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000002L,0x0000000C00000000L});
-    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000000002L,0x0000007000000000L});
-    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0700000000000010L,0x0008000000000000L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0700000000000010L,0x0018000000000800L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x8000000000000010L,0x0000000001000000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001001L});
-    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x8000000000000002L,0x0000007000000010L});
-    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0xC7000000000041F0L,0x5FF9C5811900081AL});
-    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000000000002L,0x0000007000000010L});
-    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0xC70000000000C1F0L,0x5FF9C50118000818L});
-    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000008000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0xC7000000000041F0L,0x5FFFC58119000838L});
-    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000001L});
-    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0xC7000000000041F0L,0x5FFFC50118000838L});
-    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0xE7000000000041F2L,0x5FFFC50118000818L});
-    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0xC7000000000041F2L,0x5FFFC50118000818L});
-    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x8000000000000000L});
-    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
-    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0xC7000000000041F0L,0x5FF9C50119000818L});
-    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x8000000000008010L,0x0000380001000001L});
-    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000280000000001L});
-    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000001L});
-    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0xE7000000000041F0L,0x5FFFC50118000818L});
-    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x2000000000000000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0xC7000000000041F0L,0x5FFFC50118000818L});
-    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0xE7000000000041F0L,0x5FF9C50118000818L});
-    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x2000000000000000L});
-    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0xC70000000000C1F0L,0x5FFFC50118000818L});
-    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0xE70000000000C1F0L,0x5FFFC50118000818L});
-    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
-    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x8000000000000002L,0x0000000000000010L});
-    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
-    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x8000000000000002L,0x0000000000000810L});
-    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000012L});
-    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0xC7000000000041F2L,0x5FF9C50118000818L});
-    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0xA000000000000000L});
-    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000002L,0xA000000000000000L});
-    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000000L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0200000000000000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x4800000000000010L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x1000000000000010L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x2000000000000010L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x8000000000000002L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x1C000000000041F0L,0x7FE714046000206BL,0x0000000000000001L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x000000000000000CL});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x1C000000000041F0L,0x7FE7140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x1C000000000041F0L,0x7FE71404600020E3L,0x0000000000000001L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000084L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000002L,0x0000000000007F00L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000000L,0x000000000000C000L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000002L,0x0000000000010000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000002L,0x00000000003C0000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000000002L,0x000000000040E000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000010L,0x0000000004000002L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000002L,0x000000001F806000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000000L,0x0000000004002000L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000000002L,0x0000000060000000L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x2000000000000002L,0x0000000380000000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000002L,0x0000003000000000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000000002L,0x000001C000000000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x1C00000000000010L,0x0020000000000000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x1C00000000000010L,0x0060000000002000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000010L,0x0000000004000002L,0x0000000000000004L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004004L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000000000002L,0x000001C000000042L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x1C000000000041F0L,0x7FE716046400206BL,0x0000000000000001L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000000000002L,0x000001C000000040L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x1C0000000000C1F0L,0x7FE7140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000008000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x1C000000000041F0L,0x7FFF1604640020E3L,0x0000000000000001L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000004L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x1C000000000041F0L,0x7FFF1404600020E3L,0x0000000000000001L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x9C000000000041F2L,0x7FFF140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x1C000000000041F2L,0x7FFF140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x1C000000000041F0L,0x7FE7140464002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000008010L,0x0000E00004000006L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000A00000000004L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000004L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x9C000000000041F0L,0x7FFF140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x1C000000000041F0L,0x7FFF140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x9C000000000041F0L,0x7FE7140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x8000000000000000L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x1C0000000000C1F0L,0x7FFF140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x9C0000000000C1F0L,0x7FFF140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000042L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002042L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000048L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x1C000000000041F2L,0x7FE7140460002063L,0x0000000000000001L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000002L,0x8000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
     public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000140L});
-    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x8000000000000010L,0x0000000001000002L});
-    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
-    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000002L,0x0000001000000800L});
-    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000002L,0x0018000000000000L});
-    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
-    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0800000000000000L});
-    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0100000000000002L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000010L,0x000000000400000AL});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000002L,0x0000004000002000L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000002L,0x0060000000000000L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x2000000000000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0400000000000002L});
     public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000000000000012L});
 
 }
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSemanticSequencer.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSemanticSequencer.java
index fb6646c..a6b9298 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSemanticSequencer.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/serializer/PerspectiveDslSemanticSequencer.java
@@ -724,7 +724,11 @@
 	 *     PerspectivePartStack returns PerspectivePartStack
 	 *
 	 * Constraint:
-	 *     (elementId=ID (selectedElement=[PerspectivePart|ID] | containerData=STRING | accessibilityPhrase=STRING)* elements+=PerspectiveElement*)
+	 *     (
+	 *         elementId=ID 
+	 *         (selectedElement=[PerspectivePart|ID] | synchronize=[PerspectivePartStack|ID] | containerData=STRING | accessibilityPhrase=STRING)* 
+	 *         elements+=PerspectiveElement*
+	 *     )
 	 */
 	protected void sequence_PerspectivePartStack(ISerializationContext context, PerspectivePartStack semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
diff --git a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/services/PerspectiveDslGrammarAccess.java b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/services/PerspectiveDslGrammarAccess.java
index d69a08a..d35f836 100644
--- a/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/services/PerspectiveDslGrammarAccess.java
+++ b/org.eclipse.osbp.xtext.perspective/src-gen/org/eclipse/osbp/xtext/perspective/services/PerspectiveDslGrammarAccess.java
@@ -144,7 +144,7 @@
 		private final RuleCall cUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1 = (RuleCall)cUserTaskBlipUserTaskCrossReference_4_3_0.eContents().get(1);
 		private final UnorderedGroup cUnorderedGroup_5 = (UnorderedGroup)cGroup.eContents().get(5);
 		private final Group cGroup_5_0 = (Group)cUnorderedGroup_5.eContents().get(0);
-		private final Keyword cIconURIKeyword_5_0_0 = (Keyword)cGroup_5_0.eContents().get(0);
+		private final Keyword cIconKeyword_5_0_0 = (Keyword)cGroup_5_0.eContents().get(0);
 		private final Assignment cIconURIAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
 		private final RuleCall cIconURISTRINGTerminalRuleCall_5_0_1_0 = (RuleCall)cIconURIAssignment_5_0_1.eContents().get(0);
 		private final Group cGroup_5_1 = (Group)cUnorderedGroup_5.eContents().get(1);
@@ -167,16 +167,16 @@
 		
 		//Perspective:
 		//	{Perspective} 'perspective' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
-		//	('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])? (('iconURI' iconURI=STRING)? &
+		//	('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])? (('icon' iconURI=STRING)? &
 		//	('accessibility' accessibilityPhrase=STRING)? & ('toolbar' toolbar=[action::ActionToolbar])?)
 		//	'{' elements+=PerspectiveElement* ('eventManager' eventmanager=PerspectiveEventManager)?
 		//	'}';
 		@Override public ParserRule getRule() { return rule; }
 		
 		//{Perspective} 'perspective' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
-		//('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])? (('iconURI' iconURI=STRING)? &
-		//('accessibility' accessibilityPhrase=STRING)? & ('toolbar' toolbar=[action::ActionToolbar])?) '{'
-		//elements+=PerspectiveElement* ('eventManager' eventmanager=PerspectiveEventManager)? '}'
+		//('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])? (('icon' iconURI=STRING)? & ('accessibility'
+		//accessibilityPhrase=STRING)? & ('toolbar' toolbar=[action::ActionToolbar])?) '{' elements+=PerspectiveElement*
+		//('eventManager' eventmanager=PerspectiveEventManager)? '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{Perspective}
@@ -233,15 +233,14 @@
 		//ID
 		public RuleCall getUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1() { return cUserTaskBlipUserTaskIDTerminalRuleCall_4_3_0_1; }
 		
-		//('iconURI' iconURI=STRING)? & ('accessibility' accessibilityPhrase=STRING)? & ('toolbar'
-		//toolbar=[action::ActionToolbar])?
+		//('icon' iconURI=STRING)? & ('accessibility' accessibilityPhrase=STRING)? & ('toolbar' toolbar=[action::ActionToolbar])?
 		public UnorderedGroup getUnorderedGroup_5() { return cUnorderedGroup_5; }
 		
-		//('iconURI' iconURI=STRING)?
+		//('icon' iconURI=STRING)?
 		public Group getGroup_5_0() { return cGroup_5_0; }
 		
-		//'iconURI'
-		public Keyword getIconURIKeyword_5_0_0() { return cIconURIKeyword_5_0_0; }
+		//'icon'
+		public Keyword getIconKeyword_5_0_0() { return cIconKeyword_5_0_0; }
 		
 		//iconURI=STRING
 		public Assignment getIconURIAssignment_5_0_1() { return cIconURIAssignment_5_0_1; }
@@ -458,13 +457,18 @@
 		private final CrossReference cSelectedElementPerspectivePartCrossReference_3_0_1_0 = (CrossReference)cSelectedElementAssignment_3_0_1.eContents().get(0);
 		private final RuleCall cSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1 = (RuleCall)cSelectedElementPerspectivePartCrossReference_3_0_1_0.eContents().get(1);
 		private final Group cGroup_3_1 = (Group)cUnorderedGroup_3.eContents().get(1);
-		private final Keyword cSpaceVolumeKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
-		private final Assignment cContainerDataAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
-		private final RuleCall cContainerDataSTRINGTerminalRuleCall_3_1_1_0 = (RuleCall)cContainerDataAssignment_3_1_1.eContents().get(0);
+		private final Keyword cSynchronizeKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cSynchronizeAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final CrossReference cSynchronizePerspectivePartStackCrossReference_3_1_1_0 = (CrossReference)cSynchronizeAssignment_3_1_1.eContents().get(0);
+		private final RuleCall cSynchronizePerspectivePartStackIDTerminalRuleCall_3_1_1_0_1 = (RuleCall)cSynchronizePerspectivePartStackCrossReference_3_1_1_0.eContents().get(1);
 		private final Group cGroup_3_2 = (Group)cUnorderedGroup_3.eContents().get(2);
-		private final Keyword cAccessibilityKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
-		private final Assignment cAccessibilityPhraseAssignment_3_2_1 = (Assignment)cGroup_3_2.eContents().get(1);
-		private final RuleCall cAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0 = (RuleCall)cAccessibilityPhraseAssignment_3_2_1.eContents().get(0);
+		private final Keyword cSpaceVolumeKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
+		private final Assignment cContainerDataAssignment_3_2_1 = (Assignment)cGroup_3_2.eContents().get(1);
+		private final RuleCall cContainerDataSTRINGTerminalRuleCall_3_2_1_0 = (RuleCall)cContainerDataAssignment_3_2_1.eContents().get(0);
+		private final Group cGroup_3_3 = (Group)cUnorderedGroup_3.eContents().get(3);
+		private final Keyword cAccessibilityKeyword_3_3_0 = (Keyword)cGroup_3_3.eContents().get(0);
+		private final Assignment cAccessibilityPhraseAssignment_3_3_1 = (Assignment)cGroup_3_3.eContents().get(1);
+		private final RuleCall cAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0 = (RuleCall)cAccessibilityPhraseAssignment_3_3_1.eContents().get(0);
 		private final Keyword cLeftCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		private final Assignment cElementsAssignment_5 = (Assignment)cGroup.eContents().get(5);
 		private final RuleCall cElementsPerspectiveElementParserRuleCall_5_0 = (RuleCall)cElementsAssignment_5.eContents().get(0);
@@ -472,12 +476,14 @@
 		
 		//PerspectivePartStack:
 		//	{PerspectivePartStack} 'partStack' elementId=ID (('selectedElement' selectedElement=[PerspectivePart])? &
-		//	('spaceVolume' containerData=STRING)? & ('accessibility' accessibilityPhrase=STRING)?)
+		//	('synchronize' synchronize=[PerspectivePartStack])? & ('spaceVolume' containerData=STRING)? & ('accessibility'
+		//	accessibilityPhrase=STRING)?)
 		//	'{' elements+=PerspectiveElement* '}';
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{PerspectivePartStack} 'partStack' elementId=ID (('selectedElement' selectedElement=[PerspectivePart])? & ('spaceVolume'
-		//containerData=STRING)? & ('accessibility' accessibilityPhrase=STRING)?) '{' elements+=PerspectiveElement* '}'
+		//{PerspectivePartStack} 'partStack' elementId=ID (('selectedElement' selectedElement=[PerspectivePart])? & ('synchronize'
+		//synchronize=[PerspectivePartStack])? & ('spaceVolume' containerData=STRING)? & ('accessibility'
+		//accessibilityPhrase=STRING)?) '{' elements+=PerspectiveElement* '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{PerspectivePartStack}
@@ -492,8 +498,8 @@
 		//ID
 		public RuleCall getElementIdIDTerminalRuleCall_2_0() { return cElementIdIDTerminalRuleCall_2_0; }
 		
-		//('selectedElement' selectedElement=[PerspectivePart])? & ('spaceVolume' containerData=STRING)? & ('accessibility'
-		//accessibilityPhrase=STRING)?
+		//('selectedElement' selectedElement=[PerspectivePart])? & ('synchronize' synchronize=[PerspectivePartStack])? &
+		//('spaceVolume' containerData=STRING)? & ('accessibility' accessibilityPhrase=STRING)?
 		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
 		
 		//('selectedElement' selectedElement=[PerspectivePart])?
@@ -511,29 +517,44 @@
 		//ID
 		public RuleCall getSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1() { return cSelectedElementPerspectivePartIDTerminalRuleCall_3_0_1_0_1; }
 		
-		//('spaceVolume' containerData=STRING)?
+		//('synchronize' synchronize=[PerspectivePartStack])?
 		public Group getGroup_3_1() { return cGroup_3_1; }
 		
-		//'spaceVolume'
-		public Keyword getSpaceVolumeKeyword_3_1_0() { return cSpaceVolumeKeyword_3_1_0; }
+		//'synchronize'
+		public Keyword getSynchronizeKeyword_3_1_0() { return cSynchronizeKeyword_3_1_0; }
 		
-		//containerData=STRING
-		public Assignment getContainerDataAssignment_3_1_1() { return cContainerDataAssignment_3_1_1; }
+		//synchronize=[PerspectivePartStack]
+		public Assignment getSynchronizeAssignment_3_1_1() { return cSynchronizeAssignment_3_1_1; }
 		
-		//STRING
-		public RuleCall getContainerDataSTRINGTerminalRuleCall_3_1_1_0() { return cContainerDataSTRINGTerminalRuleCall_3_1_1_0; }
+		//[PerspectivePartStack]
+		public CrossReference getSynchronizePerspectivePartStackCrossReference_3_1_1_0() { return cSynchronizePerspectivePartStackCrossReference_3_1_1_0; }
 		
-		//('accessibility' accessibilityPhrase=STRING)?
+		//ID
+		public RuleCall getSynchronizePerspectivePartStackIDTerminalRuleCall_3_1_1_0_1() { return cSynchronizePerspectivePartStackIDTerminalRuleCall_3_1_1_0_1; }
+		
+		//('spaceVolume' containerData=STRING)?
 		public Group getGroup_3_2() { return cGroup_3_2; }
 		
-		//'accessibility'
-		public Keyword getAccessibilityKeyword_3_2_0() { return cAccessibilityKeyword_3_2_0; }
+		//'spaceVolume'
+		public Keyword getSpaceVolumeKeyword_3_2_0() { return cSpaceVolumeKeyword_3_2_0; }
 		
-		//accessibilityPhrase=STRING
-		public Assignment getAccessibilityPhraseAssignment_3_2_1() { return cAccessibilityPhraseAssignment_3_2_1; }
+		//containerData=STRING
+		public Assignment getContainerDataAssignment_3_2_1() { return cContainerDataAssignment_3_2_1; }
 		
 		//STRING
-		public RuleCall getAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0() { return cAccessibilityPhraseSTRINGTerminalRuleCall_3_2_1_0; }
+		public RuleCall getContainerDataSTRINGTerminalRuleCall_3_2_1_0() { return cContainerDataSTRINGTerminalRuleCall_3_2_1_0; }
+		
+		//('accessibility' accessibilityPhrase=STRING)?
+		public Group getGroup_3_3() { return cGroup_3_3; }
+		
+		//'accessibility'
+		public Keyword getAccessibilityKeyword_3_3_0() { return cAccessibilityKeyword_3_3_0; }
+		
+		//accessibilityPhrase=STRING
+		public Assignment getAccessibilityPhraseAssignment_3_3_1() { return cAccessibilityPhraseAssignment_3_3_1; }
+		
+		//STRING
+		public RuleCall getAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0() { return cAccessibilityPhraseSTRINGTerminalRuleCall_3_3_1_0; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_4() { return cLeftCurlyBracketKeyword_4; }
@@ -1569,7 +1590,7 @@
 	
 	//Perspective:
 	//	{Perspective} 'perspective' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
-	//	('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])? (('iconURI' iconURI=STRING)? &
+	//	('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])? (('icon' iconURI=STRING)? &
 	//	('accessibility' accessibilityPhrase=STRING)? & ('toolbar' toolbar=[action::ActionToolbar])?)
 	//	'{' elements+=PerspectiveElement* ('eventManager' eventmanager=PerspectiveEventManager)?
 	//	'}';
@@ -1606,7 +1627,8 @@
 	
 	//PerspectivePartStack:
 	//	{PerspectivePartStack} 'partStack' elementId=ID (('selectedElement' selectedElement=[PerspectivePart])? &
-	//	('spaceVolume' containerData=STRING)? & ('accessibility' accessibilityPhrase=STRING)?)
+	//	('synchronize' synchronize=[PerspectivePartStack])? & ('spaceVolume' containerData=STRING)? & ('accessibility'
+	//	accessibilityPhrase=STRING)?)
 	//	'{' elements+=PerspectiveElement* '}';
 	public PerspectivePartStackElements getPerspectivePartStackAccess() {
 		return pPerspectivePartStack;
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtext b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtext
index 2d6bef4..7def1ea 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtext
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/PerspectiveDsl.xtext
@@ -42,7 +42,7 @@
 	{Perspective} 'perspective' name=TRANSLATABLEID
 	(description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
 	('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])?
-	(('iconURI' iconURI=STRING)? &
+	(('icon' iconURI=STRING)? &
 	('accessibility' accessibilityPhrase=STRING)? &
 	('toolbar' toolbar=[action::ActionToolbar])?)
 	'{' (elements+=PerspectiveElement)*
@@ -64,6 +64,7 @@
 PerspectivePartStack:
 	{PerspectivePartStack} 'partStack' elementId=ID
 	(('selectedElement' selectedElement=[PerspectivePart])? &
+	('synchronize' synchronize=[PerspectivePartStack])? &
 	('spaceVolume' containerData=STRING)? &
 	('accessibility' accessibilityPhrase=STRING)?)
 	'{' (elements+=PerspectiveElement)* '}';
diff --git a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/scoping/PerspectiveDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/scoping/PerspectiveDSLScopeProvider.xtend
index 77c213c..786d2c3 100644
--- a/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/scoping/PerspectiveDSLScopeProvider.xtend
+++ b/org.eclipse.osbp.xtext.perspective/src/org/eclipse/osbp/xtext/perspective/scoping/PerspectiveDSLScopeProvider.xtend
@@ -29,6 +29,7 @@
 import org.eclipse.xtext.scoping.IScope
 import org.eclipse.xtext.scoping.impl.FilteringScope
 import org.eclipse.xtext.scoping.impl.MapBasedScope
+import org.eclipse.osbp.xtext.perspective.PerspectiveElement
 
 /**
  * This class contains custom scoping description.
@@ -51,6 +52,8 @@
 		} 
 		else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_PART_STACK__SELECTED_ELEMENT) {
 			return getPartStackSelectedElement(context)
+		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_PART_STACK__SYNCHRONIZE) {
+			return getAllPartStacks(context)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE__USER_TASK) {
 			return getUserTask(context as Perspective)
 		} else if (reference == PerspectiveDslPackage.Literals.PERSPECTIVE_DIALOG__REF) {
@@ -226,6 +229,19 @@
 		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
 	}
 	
+	def getAllPartStacks(EObject object) {
+		var result = <IEObjectDescription>newArrayList
+		if (object.eContainer instanceof PerspectiveElement) {
+			var pers = object.eContainer as PerspectiveElement
+			for (element : pers.elements) {
+				if(element instanceof PerspectivePartStack && !element.equals(object)) {
+					result.add(EObjectDescription.create(element.elementId, element))
+				} 
+			}
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+	}
+	
 	def getAcceptedSenders(EObject object) {
 		var result = <IEObjectDescription>newArrayList
 		if (object instanceof PerspectiveEvent) {